关于systemctl 服务命令
1、在/etc/systemd/system目录下,新建demo.service文件;
2、在demo.service文件内输入
[Unit]
Description=demo #当前配置文件的描述信息
After=network.target nginx.service #表示当前服务是在那个服务后面启动,一般定义为网络服务启动后启动
[Unit]
Description=demo #当前配置文件的描述信息
After=network.target nginx.service #表示当前服务是在那个服务后面启动,一般定义为网络服务启动后启动
[Service]
WorkingDirectory=/home/test #工作目录
Type=forking #定义启动类型
ExecStart=/home/test/demo-start.sh #定义启动进程时执行的命令。
ExecReload=/home/test/demo-restart.sh #重启服务时执行的命令
ExecStop=/home/test/demo-stop.sh #定义关闭进程时执行的命令。
PrivateTmp=true #是否分配独立空间
Restart=always
RestartSec=5
StartLimitInterval=0
StartLimitBurst=5
[Install]
WantedBy=multi-user.target #表示多用户命令行状态
Type字段:定义启动类型。它可以设置的值如下:
- simple(默认值):ExecStart字段启动的进程为主进程
- forking:后台执行,ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成 为主进程
- oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务
- dbus:类似于simple,但会等待 D-Bus 信号后启动
- notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务
- idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为 让该服务的输出,不与其他服务的输出相混
3、chmod 777 demo.service #添加可执行权限
4、systemctl enable demo.service #设置开机自启
5、systemctl start demo.service #启动服务
6、systemctl stop demo.service #停止服务
7、systemctl restart demo.service #重启服务
8、systemctl disable demo.service #取消开机自启
9、systemctl status demo.service #服务详细信息
10、systemctl is-active demo.service #仅显示是否Active
11、systemctl list-units --type=service #显示全部已经启动的服务
注意:在更新完demo.service后,要重启服务的配置文件:systemctl daemon-reload
遇到问题:
1、在配置nsq服务的时候,想要在后台运行,且设置nsq中的nsqlookupd、nsqd和nsqadmin三个服务的输出到指定位置,该怎么做?
解答:
需要把service文件中的ExecStart字段的配置项稍作修改,例如:
ExecStart=/bin/bash -c '/home/nsq/nsqlookupd > /home/log/nsqlookupd.log 2>&1 &'
评论区