分页: 1 / 1

问一个 bash 命令的意思

发表于 : 2008-06-22 18:17
cheneymx
! ps aux | grep -q fetchmail && fetchmail &

这个代码的意思是什么? 是不是说 如果系统里面没有 fetchmail 的进程, 那么运行 fetchmail , 如果已经存在, 则忽略后面的 fetchmail & ??

我不明白最前面的 ! 是什么意思

发表于 : 2008-06-22 18:44
xiooli
把&&前面的看成一体,!当然就是取反咯。
其实应该可以去掉前面的!把&&换成||

发表于 : 2008-06-22 19:25
cheneymx
我觉得这个代码有个问题, 因为执行 grep 命令的时候, 这个grep命令也会产生一个进程, 这个进程也带有关键字 fetchmail, 所以我觉得
! ps aux | grep -q fetchmail
执行的结果永远是 false.

所以我觉得这个代码应该是:
! ps aux | grep -q fetchmail | grep -v grep && fetchmail &

哪位学过 bash 的 看是不是这样?

发表于 : 2008-06-22 19:27
BigSnake.NET
用这个 ps -e

发表于 : 2008-06-22 19:31
cheneymx
BigSnake.NET 写了:用这个 ps -e
收到! 这个解决办法简洁,有效.

发表于 : 2008-06-22 19:33
BigSnake.NET
cheneymx 写了:
BigSnake.NET 写了:用这个 ps -e
收到! 这个解决办法简洁,有效.
其实最好用 pgrep