在Linux服务器中使用Watch定期运行命令?

[复制链接] |主动推送
查看29 | 回复0 | 2024-9-11 15:02:44 | 显示全部楼层 |阅读模式
在Linux服务器中定期运行一个命令或进程是很常用的操作。从清理脚本,到重复的文件删除命令,再到自动的定期升级,所有的东西都可以配置成在Linux服务器中定期运行。
通常,实现这一目标的方法是配置Cron作业,当涉及到自动化脚本和后台作业时,Cron作业非常方便。但是,如果你需要周期性地运行一个命令或程序,并交互式地查看其输出,即(几乎)实时地查看;就不能使用Cron,因为它将所有的输出保存到日志文件中。
今天我们将学习watch命令,它可以让我们周期性地运行一个命令或程序,并显示实时输出。
使用watch命令的基本语法是。
$ watch command_name
这将使命令'command_name'每2秒运行一次,这是默认的时间。
$ watch ps -ef
111036qtl0dci2x2q2tqod.png
上面的命令会每2秒调用'ps -ef'(用于显示正在运行的进程及其资源使用情况),这样我们就可以定期看到最新的资源使用情况。
每一分钟运行一条Linux命令
要指定定期运行的时间间隔,请使用-n选项。
$ watch -n time_interval_in_seconds command
例如,要每隔1分钟运行一个Linux命令或程序,使用以下命令。
$ watch -n 60 ps -ef
这显然会每隔1分钟运行一次'ps -ef'命令。
111036lysmngnwkupkgrdy.png
另一个有趣的选项是参数-d,它将在每次周期性运行命令后突出显示输出的差异。例如,让我们再次运行ps命令,这次按内存使用量的降序排列输出,这样我们就可以很容易地看到突出显示的差异。
$ watch -d -n 5 ps aux --sort -%mem
111037fkuzml02twtt5p5t.png
如上图所示,高亮显示了ps命令当前运行中改变的值。请注意,这只会突出显示两个即时运行之间的差异,而不是所有运行之间的差异。
我们看到了简单的使用watch命令是如何让我们在Linux中周期性地运行程序的。watch命令有更多的选项,可以真正帮助用户定制他或她的周期性运行。可通过$ man watch查看更多选项。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则