【Linux】孤儿进程|守护进程|Shell脚本设置守护进程开机自启
在Linux中,守护进程是一种在后台执行的特殊进程,它独立于控制终端并且周期性地执行某些任务或等待处理某些事件。守护进程通常以单独的会话开始,并且其进程ID通常记录在/var/run/daemon.pid
文件中。
要创建守护进程,可以在程序启动时调用daemon()
函数(通常在C语言中)。在Shell脚本中,我们可以使用nohup
和&
操作符来创建在后台持续运行的进程。
以下是一个简单的Shell脚本示例,用于将一个命令转换为守护进程,并使其开机自启:
#!/bin/bash
# 启动守护进程的函数
start_daemon() {
# 执行的命令,比如一个简单的while循环
while true; do
echo "守护进程正在运行..."
sleep 30
done
}
# 将脚本转为守护进程
if [[ $(ps -p $$) ]]; then
# 调用函数启动守护进程
start_daemon &
# 将进程ID写入文件
echo "$!" > /var/run/mydaemon.pid
# 退出父进程
exit 0
fi
# 以下是守护进程应该执行的任务
# ...
要使脚本开机自启,可以将其放入/etc/rc.local
文件中,或者创建一个系统服务。这里是如何创建一个系统服务的例子:
- 创建一个新的服务文件
/etc/systemd/system/mydaemon.service
:
[Unit]
Description=My Custom Daemon
After=network.target
[Service]
Type=simple
ExecStart=/path/to/your/script.sh
Restart=always
User=username
Group=usergroup
[Install]
WantedBy=multi-user.target
- 重新加载systemd管理器配置:
sudo systemctl daemon-reload
- 启动服务并设置开机自启:
sudo systemctl start mydaemon
sudo systemctl enable mydaemon
这样,你的守护进程就会在系统启动时自动运行。确保将/path/to/your/script.sh
替换为你的脚本实际路径,以及User
和Group
设置为运行守护进程的用户和组。
评论已关闭