为什么nohup不启动我的脚本?

时间:2014-10-30 17:37:53

标签: linux bash shell

这是我的 script.sh

for ((i=1; i<=400000; i++))
do
   echo "loop $i"
   echo 
   numberps=`ps -ef | grep php | wc -l`;
   echo $numberps
   if [ $numberps -lt 110 ]
   then
   php5 script.php &
   sleep 0.25
   else
     echo too much process
    sleep 0.5
fi
done

当我用:

启动时
./script.sh > /dev/null 2>/dev/null &

当我从SSH注销并再次登录时有效,我无法停止kill%1的脚本,jobs -l为空

当我尝试使用

启动它时
nohup ./script.sh &

它只是输出

nohup: ignoring input and appending output to `nohup.out'

但没有运行php5:nohup根本没有效果

我有2个替代品来解决我的问题:

1)./script.sh > /dev/null 2>/dev/null & 如果我从SSH注销并再次登录,我该如何删除此作业?

或 2)如何使nohup正确运行?

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

nohup不允许您在注销后再次使用jobs -lkill %1来终止作业。

相反,你可以

  • GNU Screen或tmux会话中在前台运行脚本,该会话允许您注销,登录,重新连接并继续相同的会话。
  • killall script.sh杀死服务器上运行的script.sh的所有正在运行的实例。