命令行可以执行nohup后却不能执行

有一个脚本/root/kill.sh:

1
2
3
4
5
#!/bin/sh
while [ 1 ]; do
	sudo kill -9 `pidof java`
	sleep 10
done

在命令行执行很正确,能隔一段时间把所有的java进程都杀掉了。
但执行:

1
nohup /root/kill.sh &

现象就很奇怪了,有时候能杀掉所有java进程,有时候不干活,java进程依然存在,让人怀疑人生。
无意中打开nohup.out发现有输出:
sudo没有与之关联的会话。
于是,修改kill.sh,把kill之前的sudo去掉就正常了。