是否有一个什么都不做但从不退出的 Linux 命令?

sri*_*igi 18 command-line

我正在寻找一个 Linux 命令,它实际上什么都不做,不输出任何内容,但一直存活到^C.

while true; do; done 不是一个好的解决方案,因为它是 CPU 密集型的。

ilk*_*chu 25

如果我们看一下system calls,实际上有一个就是这样做的,pause(2)

pause() 导致调用进程(或线程)休眠,直到传递信号...

当然,那么我们只需要一个使用它的程序。除了编译下面的两行 C 程序外,最简单的方法可能是使用 Perl:

perl -MPOSIX -e pause
Run Code Online (Sandbox Code Playgroud)

在 C 中:

perl -MPOSIX -e pause
Run Code Online (Sandbox Code Playgroud)


dr_*_*dr_ 18

只需添加一个sleep命令。

while true; do sleep 600; done
Run Code Online (Sandbox Code Playgroud)

将在循环之间休眠 10 分钟。

  • 你想得太小了,就用`sleep 999999999`。它节省了 shell 脚本和每十分钟分叉另一个进程的麻烦。:) (4认同)
  • GNU sleep 也会将“无穷大”作为参数 (4认同)

rud*_*ier 16

由于您提到了 ctrl-C,我假设您想在交互式终端中使用它。所以你可能只是等待输入。

$ read
Run Code Online (Sandbox Code Playgroud)

或者只是使用从标准输入读取的任意其他命令,例如cat. 只要没有输入,他们就“什么都不做”。

$ cat >/dev/null
Run Code Online (Sandbox Code Playgroud)

甚至不使用标准输入甚至更好:

$ tail -f <<EOF
EOF
Run Code Online (Sandbox Code Playgroud)


del*_*tab 16

GNUsleep和(但不是)的sleep内置接受任何浮点数,而不仅仅是整数,所以你可以这样做:ksh93mksh

sleep infinity
Run Code Online (Sandbox Code Playgroud)


Oli*_*lac 6

你可以:

tail -f /an/existing/regular/file >/dev/null
Run Code Online (Sandbox Code Playgroud)

这将不会使用 stdin(就像read那样)并且将等待新添加到 /an/existing/regular/file (不适用于某些文件:tail -f /dev/null将立即退出。但适用于所有常规文件。如果该文件是不增长,命令会吃很少的cpu)


iva*_*van 5

不是永远,但有sleep。您可以将您的while循环与睡眠结合起来- 甚至似乎都不会让我gkrellm显示器中的 CPU 发痒。
dr01 打字速度比我快 :) ... 所以更多信息 - 您的 CPU 峰值是因为它必须不断处理逻辑检查,之间没有停顿....

while true
do
  sleep 100
done
Run Code Online (Sandbox Code Playgroud)

或者作为单线

while true; do sleep 100; done