Linux开机自启动screen执行任务
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
评论区(暂无评论)