1.安装screen

CentOS

yum -y install epel-release
yum -y install screen

Debian

apt install screen

2.创建执行文件

我这里用彩虹聚合DNS管理系统演示,创建在默认目录

vi dns.sh

输入 i 编辑,把:

sleep 20   # 延迟20秒启动(我使用的彩虹聚合DNS管理系统,需要数据库启动了执行才有用。不需要的可以删除或者改成0)
screen_name="dns"   # 要建立的screen名字
screen -dmS $screen_name
cmd="/vhs/kangle/ext/php74/bin/php -c /vhs/kangle/ext/php74/phpdns.ini /home/ftp/d/dns/wwwroot/think dmtask";   # 要执行的命令,要指明路径,不指明时默认是在 / 目录下
screen -X -S $screen_name -p 0 -X stuff "$cmd"   # 进行执行
screen -X -S $screen_name -p 0 -X stuff '\n'
screen -X -S $screen_name -p 0 -X stuff "exit"

放进去,按 Esc 然后输入 :wq! 回车保存退出

3.开机自启动

输入命令:

vi /etc/rc.local

Debian 系统 /etc/rc.local 文件(centos 文件 /etc/rc.d/rc.local)
输入 i 编辑,把:

sh dns.sh

放进去,按 Esc 然后输入 :wq! 回车保存退出

下面是不通过screen的方法

这个是数据库启动后执行的由“村长”提供的

1.创建执行文件(名字随意)

vi czdns.sh

输入 i 编辑,把:

#!/bin/bash
clear;
echo '================================================================';
echo ' 此程序仅供学习,执行请用虚拟机,一切后果与本人无关';
echo ' 禁止使用本脚本创建违规违法网站,发现将举报';
#创建文件夹并写入文件

cat >>/lib/systemd/system/dns.service<<EOF
[Unit]
Description=dns server Service
After=syslog.target network.target mysql.service

[Service]
Type=forking
ExecStart=/bin/bash -c "/vhs/kangle/ext/php74/bin/php -c /vhs/kangle/ext/php74/phpdns.ini /home/ftp/d/dns/wwwroot/think dmtask &"
#/bin/bash -c "PHP的执行命令"   其他的可以删掉这,比如上面的dns.sh就可以   sh dns.sh   把延迟 20 秒启动删掉,这个是数据库启动后执行的

[Install]
WantedBy=multi-user.target
EOF
ln -s /lib/systemd/system/dns.service /etc/systemd/system/multi-user.target.wants/dns;
systemctl daemon-reload;
systemctl enable dns;

放进去,按 Esc 然后输入 :wq! 回车保存退出

2.赋予执行权限

chmod +x czdns.sh

3.执行文件

./czdns.sh

4.重启查看命令是否在运行

reboot