正文
摘要
1. nohup &
2. screen
3. bg & disown
4. systemd
5. crontab @reboot
背景
最近一直在用linux
想着多总结一下.
因为服务运行的方式比较多, 想着也能够多总结一下
便于后面的问题处理
nohup 的方式
nohup 是最简单的一种启动服务的方式
nohup 的含义在于防止被终端.
& 的方式是将服务放在后台运行
所以一般的方式为:
nohup ./xxxx &
shell关了,后者是网络终端还会继续运行.
screen的方式
yum install screen -y
可以使用 screen 的命令打开服务窗口
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session
可以通过 screen -S zhaobsh 打开一个session 进行命令的输入
如果网络出问题. 这个服务还是会一直存在的. 避免网络终端导致问题.
bg & disown
有时候很多服务都是必须有交互才可以的.
此时通过nohup的方式不太合适.
如果机器又不能上网, 此时使用 screen 可能比较麻烦
所以可以使用
ctrl+z的方式暂时中断服务
然后根据反馈的任务号
通过
bg %数字
的方式进行设置服务后台运行.
然后在使用
disown -h %数字
可以讲这个服务与 当前的shell进程断掉联系.
这样服务就从一个前台服务 变成了后台服务.
systemd
可以添加一个 systemd的服务 基本上可以如图进行设置
一般位于 /etc/systemd/system/ 下面
比如可以建立一个文件为 app.service
可以使用 systemctl enable app 设置开机自动启动
然后使用systemctl start app 来启动服务
[Unit]
Description=app
[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
WorkingDirectory=/app
Restart=always
Type=forking
ExecStart=/app/startup.sh
ExecStop=/usr/bin/kill -15 $MAINPID
[Install]
WantedBy=multi-user.target
crontab
可以设置计划任务,开机自动动服务
比较简单.
第一: systemctl status crond
需要保证计划任务是开启的.
第二: 需要编写一套启动脚本比如
cat /etc/startredis <<EOF
cd /redis && ./redis-server /redis/redis.conf
EOF
chmod 700 /etc/startredis
第三设置开机启动
crontab -e
增加一行配置
@reboot /etc/startredis
注意配置方式跟vim 是一样的
insert 进入输入模式
ESC 退出到命令模式
输入 :wq 保存并且退出.