命令输出,管道,脚本合作

时间:2013-12-31 18:00:08

标签: linux bash ubuntu

我正在编写一个小脚本来重启我的lighttpd服务器: 杀死已经运行的进程 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输出是 root 11685 0.0 0.0 11096 1960? S 16:40 0:00 lighttpd -f /etc/lighttpd/lighttpd.conf

1 个答案:

答案 0 :(得分:1)

为什么你在Linux / unix中浪费时间来贪图PID并在你有killall命令时杀死它

/usr/bin/killall

你可以直接

killall lighttpd/usr/bin/killall lighttpd

如果不是超级用户则使用sudo

sudo killall lighttpdsudo /usr/bin/killall lighttpd

可以优先使用-9killall一样sudo killall lighttpd

然后通过

重新启动它

sudo lighttpd -f /etc/lighttpd/lighttpd.conf

如果您正在寻找完全自动化的脚本,请使用except命令 Click here