gpt4 book ai didi

bash - "detach/daemonize"Bash 脚本最简单的方法是什么?

转载 作者:行者123 更新时间:2023-11-29 08:46:25 26 4
gpt4 key购买 nike

我想做的是编写一个 Bash 脚本,在使用 mac say 命令之前休眠一段时间说一些文字。

我希望能够运行命令然后关闭终端,这样它仍会在设定的时间说话。我已经研究过 nohup、detach、launchd 和将进程置于后台,但所有这些解决方案仍然会导致进程在终端关闭后终止。我应该以某种方式制作某种僵尸子进程来做到这一点吗?什么是最好的解决方案?谢谢

# Simple Example of main code
sleep 10;
say hello;
exit;

最佳答案

Bash 手册的第 3.7.6 节说:

The shell exits by default upon receipt of a SIGHUP. Before exiting, an interactive shell resends the SIGHUP to all jobs, running or stopped. Stopped jobs are sent SIGCONT to ensure that they receive the SIGHUP. To prevent the shell from sending the SIGHUP signal to a particular job, it should be removed from the jobs table with the disown builtin (see Section 7.2 [Job Control Builtins], page 88) or marked to not receive SIGHUP using disown
-h
.

因此,使用 nohupdisown 应该可以解决问题。或者你可以这样做:

trap "" 1
sleep 10
say hello

'trap' 行忽略了信号 1,SIGHUP;你也可以写 'trap ""HUP".

关于bash - "detach/daemonize"Bash 脚本最简单的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4369866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com