在Linux命令行中,是否有可能每n秒重复一次命令?
假设,我有一个导入正在运行,我正在做
ls -l
检查文件大小是否在增加。我想有一个命令,有这个自动重复。
在Linux命令行中,是否有可能每n秒重复一次命令?
假设,我有一个导入正在运行,我正在做
ls -l
检查文件大小是否在增加。我想有一个命令,有这个自动重复。
当前回答
为了更容易地减少漂移,使用:
while :; do sleep 1m & some-command; wait; done
由于bash运行循环结构和sleep命令实际执行的时间,仍然会有少量的漂移。
提示:':'的值为0即为真。
其他回答
在Busybox中,“watch”一秒都不允许,而“sleep”一秒允许。如果这对你来说很重要,试试这个:
while true; do ls -l; sleep .5; 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
如果你想把某件事重复几次,你可以这样做:
repeat 300 do my first command here && sleep 1.5
当我们使用while时,可以不使用cron定期运行命令。
作为命令:
while true ; do command ; sleep 100 ; done &
[ ex: # while true; do echo `date` ; sleep 2 ; done & ]
例子:
while true
do echo "Hello World"
sleep 100
done &
不要忘记最后一个&,因为它会把你的循环放在背景中。但是你需要用命令“ps -ef | grep your_script”找到进程id,然后你需要杀死它。因此,请在运行脚本时添加'&'。
# ./while_check.sh &
下面是与脚本相同的循环。创建文件"while_check.sh",并把它放在里面:
#!/bin/bash
while true; do
echo "Hello World" # Substitute this line for whatever command you want.
sleep 100
done
然后输入bash ./while_check.sh &来运行它
为了更容易地减少漂移,使用:
while :; do sleep 1m & some-command; wait; done
由于bash运行循环结构和sleep命令实际执行的时间,仍然会有少量的漂移。
提示:':'的值为0即为真。