在Linux命令行中,是否有可能每n秒重复一次命令?

假设,我有一个导入正在运行,我正在做

ls -l

检查文件大小是否在增加。我想有一个命令,有这个自动重复。


当前回答

如果你想把某件事重复几次,你可以这样做:

repeat 300 do my first command here && sleep 1.5

其他回答

一个简洁的解决方案,如果您想重复运行命令直到失败,这个解决方案特别有用,并且可以让您看到所有输出。

while ls -l; do
    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

每5秒看一次……

看-n 5 ls -l

如果您希望可视化地确认更改,可以在ls命令之前添加——differences。

根据OSX手册页,还有

-cumulative选项使高亮显示“粘性”,显示一个 运行显示所有曾经改变的位置。- t 或者——no-title选项关闭显示间隔的标题, 命令,并在顶部显示当前时间,以及 下面是空行。

Linux/Unix手册页可以在这里找到

手表是好的,但会清洁屏幕。

watch -n 1 'ps aux | grep php'

当我们使用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 &来运行它