我不确定这是否真的有可能,但也许某人对如何做类似的事情提出了一些建议:
#!/bin/bash
dissed() {
for i in {1..10}
do
sleep 5
echo "$(date)"
done
}
/usr/bin/screen -S disowned -d -m dissed & disown -h;
screen -ls
echo "done."
当然这不起作用,因为我假设当脚本结束时函数被杀死。我知道当我替换一个实际的.sh
文件时会调用“dissed”函数,但这是我想要避免的。
是否有某种方法可以取消位于父级中的函数或下标?
答案 0 :(得分:0)
从bash脚本中分离进程:
nohup ./process& 例如,如果您使用SIGINT停止bash脚本,则该过程不会受到打扰并将继续正常执行。 stdout& stderr将被重定向到一个文件:nohup.out。
如果你希望在能够看到终端输出的同时执行一个分离的命令,那么使用tail:
TEMP_LOG_FILE = tmp.log
" $ TEMP_LOG_FILE" nohup ./process&> " $ TEMP_LOG_FILE" &安培; tail -f" $ TEMP_LOG_FILE" &安培;