即使ssh超时或终端关闭,我想让bash功能继续运行。因为我不想创建一个新的脚本文件来单独调用它,所以我使用了nohup和'&'实现目标的方法。
(
trap "" HUP
sleep 10
echo 'abc123!' | sudo -S -p '' bash -c "cat /etc/shadow"
ret=$?
if [ $ret -ne 0 ]; then
echo "failed-->$ret" >> /tmp/test.log
fi
)&
以上只是我脚本的一部分,代表那些需要在其父级死后继续运行的脚本。 该脚本由非root用户运行,因此需要使用sudo来执行某些命令。 该脚本在其父级处于活动状态时成功返回。 但是当你在终端运行时关闭终端时,你将失败 - > 1"子进程退出后,在test.log文件中。 那么,任何人都可以告诉我脚本有什么问题吗?
答案 0 :(得分:0)
回答我自己的问题。我解决了这个问题,但仍然不确定根本原因。 我改变了' sudo'的代码。到:
echo 'abc123!' | sudo -S -p '' cat /etc/shadow > /tmp/test.log 2>&1
可能的原因是关闭终端时,标准输出中断,需要明确分配新的标准输出。