我正在编写一个小脚本来重启我的 lighttpd 服务器: 1. kill已经运行的进程 2. 启动新服务器
脚本如下:
PID=$(ps aux | grep lighttpd | grep -v grep | cut -c9-15)
kill $PID
sudo lighttpd -f /etc/lighttpd/lighttpd.conf
我的问题是在终端窗口中的命令
ps aux | grep lighttpd | grep -v grep | cut -c9-15
给出结果:11685 但如果它在 shell 脚本中运行则结果为 11685 13339 13340
我在这里错过了什么?
包含 lighttpd 作业的行的 ps 输出是 <强>根 11685 0.0 0.0 11096 1960 ? S 16:40 0:00 lighttpd -f/etc/lighttpd/lighttpd.conf
最佳答案
为什么你在 Linux/unix 中浪费时间来 grepping PID 并在你有 killall 命令时杀死它
/usr/bin/killall
可以直接
killall lighttpd
或 /usr/bin/killall lighttpd
如果不是 super 用户则使用 sudo
sudo killall lighttpd
或 sudo/usr/bin/killall lighttpd
最好将 -9
与 killall
一起使用,就像在您的情况下是 sudo killall lighttpd
然后通过
重新启动它sudo lighttpd -f/etc/lighttpd/lighttpd.conf
如果您正在寻找完全自动化的脚本,请使用 except
命令
Click here
关于linux - 命令输出、管道、脚本联动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20861451/