Linux运行服务的几种方式

摘要

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 保存并且退出.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章