Ser*_* B. 54 linux centos daemons centos6
我有一个脚本,每次运行我的PHP脚本X次:
#!/bin/bash
while true; do
/usr/bin/php -f ./my-script.php
echo "Waiting..."
sleep 3
done
Run Code Online (Sandbox Code Playgroud)
如何将其作为守护进程启动?
mic*_*ses 124
要从shell运行它作为完整守护程序,您需要使用setsid并重定向其输出.您可以将输出重定向到日志文件,或者/dev/null丢弃它.假设您的脚本名为myscript.sh,请使用以下命令:
setsid myscript.sh >/dev/null 2>&1 < /dev/null &
Run Code Online (Sandbox Code Playgroud)
这将完全分离当前shell(stdin,stdout和stderr)的进程.如果要将输出保留在日志文件中,请将第一个替换为/dev/null/ path/to/logfile.
您必须重定向输出,否则它将不会作为真正的守护程序运行(它将取决于您的shell来读写输出).
CMP*_*CMP 35
守护进程只是作为后台进程运行的程序,而不是由交互式用户直接控制...
[以下bash代码适用于Debian系统 - Ubuntu,Linux Mint发行版等等]
简单的方法:
简单的方法是编辑/etc/rc.local文件,然后从那里运行脚本(即每次启动系统时):
sudo nano /etc/rc.local
Run Code Online (Sandbox Code Playgroud)
添加以下内容并保存:
#For a BASH script
/bin/sh TheNameOfYourScript.sh > /dev/null &
Run Code Online (Sandbox Code Playgroud)
更好的方法是通过Upstart创建一个守护进程:
sudo nano /etc/init/TheNameOfYourDaemon.conf
Run Code Online (Sandbox Code Playgroud)
添加以下内容:
description "My Daemon Job"
author "Your Name"
start on runlevel [2345]
pre-start script
echo "[`date`] My Daemon Starting" >> /var/log/TheNameOfYourDaemonJobLog.log
end script
exec /bin/sh TheNameOfYourScript.sh > /dev/null &
Run Code Online (Sandbox Code Playgroud)
保存这个.
确认它看起来没问题:
init-checkconf /etc/init/TheNameOfYourDaemon.conf
Run Code Online (Sandbox Code Playgroud)
现在重启机器:
sudo reboot
Run Code Online (Sandbox Code Playgroud)
现在,当您启动系统时,您可以看到日志文件指出您的守护程序正在运行:
cat /var/log/TheNameOfYourDaemonJobLog.log
Run Code Online (Sandbox Code Playgroud)
•现在您可以通过以下方式启动/停止/重新启动/获取守护程序的状态:
重启:这将停止,然后启动服务
sudo service TheNameOfYourDaemonrestart restart
Run Code Online (Sandbox Code Playgroud)
start:这将启动一个服务,如果它没有运行
sudo service TheNameOfYourDaemonstart start
Run Code Online (Sandbox Code Playgroud)
停止:如果服务正在运行,这将停止服务
sudo service TheNameOfYourDaemonstop stop
Run Code Online (Sandbox Code Playgroud)
status:这将显示服务的状态
sudo service TheNameOfYourDaemonstatus status
Run Code Online (Sandbox Code Playgroud)
小智 14
你可以去/etc/init.d/ - 你会看到一个名为skeleton的守护进程模板.
您可以复制它,然后在启动功能下输入您的脚本.
| 归档时间: |
|
| 查看次数: |
123923 次 |
| 最近记录: |