IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者
首页 / 笑遍世界
IT 2019-01-01 20:01:48 / 累计浏览 1,760

Python检查和同步本地时间北京时间

这篇讲的是如何用Python快速检查与同步本地服务器时间到北京时间。作者从一个实际运维痛点出发:当本地时间与标准时间偏差较大时,传统的NTP时间同步过程会非常缓慢,影响服务。 为了解决这个问题,文章提出了一种轻巧的替代方案:利用大型网站(如百度、淘宝)响应的HTTP头中包含的Date时间戳。因为这些网站的时间通常非常准确,我们可以将它们作为一个可靠的时间源。核心思路就是通过代码获取这个GMT时间戳,将其解析并转换为北京时间,然后直接设置系统时钟。 具体实现上,代码使用了Python标准库urllib2以确保兼容性,而没有依赖需要额外安装的requests库。它封装了两个主要功能:检查本地时间与互联网时间的偏差,以及直接校准本地时间(包括将系统时间同步到硬件时钟)。作者提供了完整的脚本,并在CentOS 7.4的Python 2.7环境下验证通过。 这个方案虽然简单,但对于网络受限或对NTP同步速度有要求的场景,提供了一种快速、有效的应急选择。

本机暂存
IT 2017-10-15 09:40:17 / 累计浏览 1,000

Mac上iTerm2配置sz, rz远程上传和下载文件

在 Windows 上用 SecureCRT 或 XShell 连接 Linux 服务器时,通过 sz、rz 命令传输文件已是常规操作,但在 Mac 上使用 iTerm2 默认只能依赖 scp。这篇文章提供了让 iTerm2 支持 sz/rz 协议的具体配置方法。 文章首先强调服务器端需安装 lrzsz 工具(例如 CentOS 上使用 `yum install lrzsz`)。在 Mac 端,核心步骤是通过 brew 安装 lrzsz,并下载两个用于处理 ZMODEM 协议的脚本(`iterm2-send-zmodem.sh` 和 `iterm2-recv-zmodem.sh`)。随后,需要在 iTerm2 的 Profile 设置中添加两个触发器:一个匹配 “rz waiting to receive” 时调用发送脚本,另一个匹配特定接收标志时调用接收脚本。配置完成后,iTerm2 就能像 Windows 下的终端那样,通过 sz/rz 方便地进行交互式文件传输了。 整篇文章的思路很清晰,从实际使用场景的差异入手,逐步分解服务器端与客户端的配置要点,最终实现了在 Mac 上复用这套高效的传输方式。

本机暂存
IT 2016-03-01 23:46:29 / 累计浏览 1,280

使用docopt轻松实现python命令行参数处理

这篇讲的是如何用Python库docopt优雅地处理命令行参数。作者从一个实际需求出发——需要在命令行中快速添加或删除测试套件(testsuite)和测试用例(testcase),从而发现了这个颇为巧妙的工具。 docopt的核心思想很特别:它直接将程序的使用说明(即__doc__字符串)解析为命令行参数。你只需要按照一定的格式编写文档字符串,例如用“Usage:”部分描述用法,用“Options:”部分列出参数,docopt就能自动完成参数解析。这告别了繁琐的argparse配置,让参数处理与用户文档天然同步。 文章提供了一个完整的demo代码,清晰地展示了从文档字符串定义到参数解析、再到实际逻辑(列表增删)的全过程。执行效果部分也展示了成功操作和错误处理的场景,比如尝试删除一个不存在的测试用例时的反馈。 尽管作者提到docopt已有段时间未更新,但其设计思想在特定场景下依然实用,尤其适合那些希望参数定义与使用文档保持高度一致的轻量级命令行工具。

本机暂存
IT 2015-11-02 23:39:48 / 累计浏览 4,620

校园招聘的简单总结

这篇文章是一位技术面试官首次参与校园招聘后的心得分享。作者从一线视角出发,详细描述了从线上笔试到三轮面试的完整流程,并分享了在筛选测试开发与Ruby开发工程师候选人时的观察。 作者发现,比较聪明且做了充分准备的同学更受欢迎。这些准备不仅体现在扎实的技术知识上,还包括对公司的了解、清晰的职业规划以及强烈的入职意愿。文章中特别提到一个细节:一位同学在二面时带来了针对公司产品的测试报告,这给面试官留下了深刻印象。 文中也流露出一些个人感慨。作者对比自己多年前的求职经历,感叹如今对技术能力的要求确实更高了。同时,他也认为在实力相当时,校招能否成功有时也看缘分。最后,文章附带了两道面试题(计算阶乘末尾零的个数、啤酒瓶换购问题)的Python实现代码,为文章增添了一些技术趣味。

本机暂存
IT 2015-07-23 14:03:12 / 累计浏览 1,800

fabric执行在后台运行的命令

这篇讲的是在使用Fabric执行远程命令时,后台进程可能无法正常运行的坑点及解决方案。作者在用Fabric的run()执行nohup命令启动压力测试时,发现命令并未在后台成功运行。文章分析了这背后涉及Fabric对shell交互模式的处理机制,并指出直接使用“&”符并非可靠做法。 为解决此问题,文章推荐了三种更鲁棒的替代方案:优先使用systemd等系统守护进程管理工具,或借助screen/tmux实现进程detach,最后才是尝试nohup(但成功率不稳定)。作者特别指出使用screen时需设置pty=False以避免问题。 文中还附上了一个管理JMeter压力测试的fabfile完整示例,展示了如何实际应用screen命令来部署和启动测试。对于常与自动化部署工具打交道的读者来说,这篇结合踩坑经验与具体代码演示的分享,能提供切实的参考。

本机暂存
IT 2015-02-06 22:13:57 / 累计浏览 4,180

Linux系统的CPU使用率和Load

这篇文章详细拆解了Linux系统中两个核心但常被混淆的性能指标——CPU使用率与系统负载(Load)。作者没有停留在概念定义,而是深入剖析了它们的统计口径与内在关联。 文章指出,CPU使用率直观反映CPU时间片的占用情况(如%user, %system, %iowait等),可通过top、sar等命令查看。而Load则是一个更综合的“压力”度量,它不仅包含正在运行和等待运行的进程(R状态),还包含了处于不可中断睡眠状态(D状态,通常因等待I/O)的任务,这是两者最关键的区别。 作者通过具体场景澄清了常见的困惑:当系统运行CPU密集型程序时,CPU使用率和Load通常会同步升高;但若是I/O密集型任务或内存不足触发Swap,你可能会看到Load值很高,而CPU使用率却并不高。对于“多少Load算高”,作者给出的经验法则是,当Load持续接近或超过CPU核心数时,就值得深入排查。 文章最后推荐了sar -u、sar -q等实用命令组合,并提供了官方手册和延伸阅读资料,帮助读者建立更完整的认知。对于想厘清性能监控基础概念的运维和开发人员,这篇内容提供了清晰、实用的梳理。

本机暂存
IT 2015-02-03 22:19:33 / 累计浏览 1,800

CentOS配置vsftpd服务器

这篇文章记录了作者在CentOS上配置vsftpd、搭建允许匿名用户上传下载的FTP服务器时,遇到并解决的三个典型故障。 首先是上传时遇到“550 Permission denied”错误,根源在于配置文件中未开启写入权限。其次,启动时出现“500 OOPS: refusing to run with writable anonymous root inside chroot”的报错,这是一个安全限制,原因是FTP根目录对匿名用户拥有写权限,将其所属权改回root后问题解决。最后,上传的文件无法下载,通过调整`anon_umask`参数从默认的077改为022,赋予文件其他用户可读的权限,才得以解决。 作者在排查过程中参考了`man vsftpd.conf`手册,这对于理解配置项的含义和默认值非常有帮助。文中提供的最终配置文件也值得作为参考。这些从实际配置中总结出的经验,对于其他需要搭建类似FTP服务的运维人员来说,能直接避开常见的权限与安全配置陷阱。

本机暂存
IT 2015-01-27 22:36:36 / 累计浏览 2,780

Linux修改用户密码-交互式与非交互式

这篇文章从实际运维需求出发,介绍了Linux系统中修改用户密码的几种实用方法。作者对比了交互式与非交互式操作的核心差异,并提供了可直接复用的代码示例。 对于交互式场景,文章以`passwd`命令为例,展示了手动输入新密码并确认的完整流程,适合单机或少量用户的操作。而针对需要脚本化、批量执行的运维任务,作者重点讲解了非交互式方案:使用`chpasswd`命令通过管道一次性传入`用户名:密码`对,或结合`passwd --stdin`重定向密码输入,这两种方法都无需人工干预,特别适合自动化部署。 文章进一步探讨了更灵活的`expect`脚本方案。该脚本能模拟交互式过程,自动响应密码提示并完成修改,解决了`passwd --stdin`在某些发行版中不可用的问题。作者还贴心地解释了脚本中TCL语法的巧妙之处,即利用反斜杠将注释延续到下一行,避免`exec`重复执行。 从简单的命令行操作到自动化的脚本实现,这篇文章覆盖了从手动到全自动的完整路径,为不同场景下的密码管理提供了清晰的选择依据。

本机暂存
IT 2015-01-27 22:35:32 / 累计浏览 1,880

awk调用shell,并将变量传递给shell

这篇讲的是在awk脚本中调用Shell并传递变量的一个具体技巧。作者从一个常见的开发场景切入:当awk处理流程需要借助外部Shell命令完成时,如何让Shell能“感知”到awk上下文中的变量。 文章聚焦于实现这一操作的核心函数`system()`,并指出了一个容易忽略但至关重要的语法细节:调用Shell脚本时,命令字符串的拼接需要特别注意空格的使用,正确的写法是`system("sh my.sh " $var)`。通过提供的简单示例,可以清晰看到变量是如何从awk环境传递到Shell脚本内部,并被正确处理的。 对于经常编写文本处理流水线或复杂运维脚本的开发者来说,掌握这种跨语言调用的变量传递方法,能极大增强脚本的灵活性和自动化能力,是提升工作效率的一个实用知识点。

本机暂存
IT 2015-01-27 22:33:37 / 累计浏览 3,900

Linux上删除空行的方法

处理文本数据时,清理空行是常见需求。这篇文章系统介绍了 Linux 下四种最常用的工具:grep、sed、awk 和 tr,它们都能轻松达成目标,但各有其巧妙的切入点。 作者没有止步于罗列命令,而是细致地指出了它们的关键差异。例如,`grep .` 和 `grep -v '^$'` 都能过滤空行;而 `sed '/^\\s*$/d'` 和 `awk NF` 则能更进一步,连只含空格、制表符等“空白内容”的行一并删去。这个细节在处理格式不规整的日志或配置文件时非常有用。 文章还特别提到了一个挺有意思的细节:在处理海量数据时,`grep .` 这种写法的执行效率通常比较高。这从侧面提醒我们,选择工具不仅要考虑功能是否满足,性能表现也是重要的考量因素。整体来看,文章通过具体的命令示例和对比,为读者提供了一个清晰实用的命令行工具选用指南。

本机暂存