创建系统服务


windows

### sc 系统自带(有些程序可能无法正常启动),等号后面的空格不要去掉
## 创建服务 sc create 服务名 参数
sc create nginx binpath= "D:\Serenity\dev-tools\nginx\nginx.exe -p \"D:/Serenity/dev-tools/nginx\"" type= own start= auto displayname= nginx服务
## 删除服务 sc delete 服务名
sc delete nginx

### winsw 可以通过xml配置启动时和关闭时传递的参数,一直在更新,已经支持yml配置
## 地址:https://github.com/winsw/winsw

### nssm 好久没有更新了, 最新是2017年的测试版
##地址:http://nssm.cc/

### srvany 微软提供的软件,通过注册表进行配置
##

### SrvanyUI 基于srvany的界面配置工具
## https://wangye.org/blog/archives/644/

### 服务管理
net start|stop 服务名

linux

#*.service 配置文件可以的存放位置:
#/etc/systemd/system/
#/lib/systemd/system/

#服务文件编写示例
#参考:https://blog.csdn.net/huahuajjh/article/details/55506698
[Unit]
Description=功能描述
Wants=network-online.target # 该软件包应在wants目录中的等待服务上安装一个符号链接,network-online.target以便希望等待已配置网络的服务将其引入。
After=network.target network-online.target #等待守护程序完成的服务应在特定服务之后和之前对其进行订购network-online.target。它应该Requisite在守护程序服务上使用,以便在不使用相应的网络管理服务的情况下立即失败。
[Service]
Type=forking #后台运行模式
PIDFILE=/var/run/redis_6379.pid #存放PID文件的位置
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf #这是服务运行的具体执行命令
ExecReload=/usr/local/redis/bin/redis-server -s reload  #这是服务重启的执行命令
ExecStop=/usr/local/redis/bin/redis-cli -h 192.168.56.100 -p 6379 shutdown  #这是服务停止的执行命令
Restart=always #这个选项如果被允许,服务重启的时候进程会退出,会通过 systemctl 命令执行清除并重启的操作。
#ExecStop=/bin/kill -HUP $MAINPID #这是服务停止的执行命令
PrivateTmp=true #True 表示给服务分配独立的临时空间
[Install]
WantedBy=multi-user.target

#Service的启动方式,在Service段中,启动方式使用Type指定。具体可以参考:
man systemd.service
#值得注意的是,在脚本中关于服务启动、重启、关闭的指令需要使用绝对路径,否则会出现无法识别的情况。
#当完成一个服务脚本后,
#我们就可以使用 `systemctl start|stop|restart|status xxx.service` 等指令了。
#若要开机启动这个服务我们使用如下的指令:
systemctl enable xxx.service
#若要关闭开机启动:
systemctl disable xxx.service
#当我们需要查看服务信息的使用可以使用如下指令,列出正在运行的服务:
systemctl list-units --type=service
#在service片段中有几个概念很重要,这直接影响到实践中创建自定义服务的最终结果。
#以下内容根据linux系统中 `man systemd.service` 用户手册说明经过翻译和整理而得。


文章作者: 慕书
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 慕书 !
评论
  目录