在Linux命令行中,是否有可能每n秒重复一次命令?
假设,我有一个导入正在运行,我正在做
ls -l
检查文件大小是否在增加。我想有一个命令,有这个自动重复。
在Linux命令行中,是否有可能每n秒重复一次命令?
假设,我有一个导入正在运行,我正在做
ls -l
检查文件大小是否在增加。我想有一个命令,有这个自动重复。
当前回答
while true; do
sleep 5
ls -l
done
其他回答
每5秒看一次……
看-n 5 ls -l
如果您希望可视化地确认更改,可以在ls命令之前添加——differences。
根据OSX手册页,还有
-cumulative选项使高亮显示“粘性”,显示一个 运行显示所有曾经改变的位置。- t 或者——no-title选项关闭显示间隔的标题, 命令,并在顶部显示当前时间,以及 下面是空行。
Linux/Unix手册页可以在这里找到
while true; do
sleep 5
ls -l
done
Sleep已经返回0。因此,我使用:
while sleep 3 ; do ls -l ; done
这比米哈伊尔的解要短一点。一个小缺点是它在第一次运行目标命令之前处于休眠状态。
我创建了一个shell别名,它将监视每x秒传递给它的命令。命令可以是单独的参数,也可以用分号分隔。
# execute commands at a specified interval of seconds
function watch.command {
# USAGE: watch.commands [seconds] [commands...]
# EXAMPLE: watch.command 5 date
# EXAMPLE: watch.command 5 date echo 'ls -l' echo 'ps | grep "kubectl\\\|node\\\|npm\\\|puma"'
# EXAMPLE: watch.command 5 'date; echo; ls -l; echo; ps | grep "kubectl\\\|node\\\|npm\\\|puma"' echo date 'echo; ls -1'
local cmds=()
for arg in "${@:2}"; do
echo $arg | sed 's/; /;/g' | tr \; \\n | while read cmd; do
cmds+=($cmd)
done
done
while true; do
clear
for cmd in $cmds; do
eval $cmd
done
sleep $1
done
}
https://gist.github.com/Gerst20051/99c1cf570a2d0d59f09339a806732fd3
一个简洁的解决方案,如果您想重复运行命令直到失败,这个解决方案特别有用,并且可以让您看到所有输出。
while ls -l; do
sleep 5
done