赞
踩
编写xxx.service文件导入到/etc/systemd/system,最终通过systemctl start xxx.service启动服务,通过systemctl enable xxx.service实现开机自启动。
详细的可以参考这里
/etc/systemd/system主要有四种类型文件.mount,.service,.target,.wants
[Unit]
Description:描述,
After:在network.target,auditd.service启动后才启动
ConditionPathExists: 执行条件
[Service]
EnvironmentFile:变量所在文件
ExecStart: 执行启动脚本
Restart: fail时重启
[Install]
Alias:服务别名
WangtedBy: 多用户模式下需要的
下面是实际的例子:
[Unit] Description=V2Ray Service After=network.target Wants=network.target [Service] # This service runs as root. You may consider to run it as another user for security concerns. # By uncommenting the following two lines, this service will run as user v2ray/v2ray. # More discussion at https://github.com/v2ray/v2ray-core/issues/1011 # User=v2ray # Group=v2ray Type=simple PIDFile=/run/v2ray.pid ExecStart=/usr/bin/v2ray/v2ray -config /etc/v2ray/config.json Restart=on-failure # Don't restart in the case of configuration error RestartPreventExitStatus=23 [Install] WantedBy=multi-user.target
在service文件中添加执行命令即可
ExecStart:/usr/bin/python ./client_r.py
以下命令实现:指定python运行脚本,将本应该输出到终端的文字重定向到log.txt
sudo /usr/bin/python3 -u ./client_r.py > log.txt 2>&1
[Unit] After -表示服务需要在***服务启动之后执行,无依赖 Before -表示服务需要在***服务启动之前执行,无依赖 Wants -弱依赖关系 Requires -强依赖关系***停止之后本服务也必须停止 [Service] EnvironmentFile -环境参数文件,EnvironmentFile=/etc/sysconfig/sshd 以key=value的形式保存,以$key形式读取 ExecStart -启动进程时执行的命令 ExecReload -重启服务时执行的命令 ExecStop -停止服务时执行的命令 ExecStartPre -启动服务之前执行的命令 ExecStartPost -启动服务之后执行的命令 ExecStopPost -停止服务之后执行的命令 Type simple(默认值)-ExecStart字段启动的进程为主进程 forking -ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程 oneshot -类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务 dbus -类似于simple,但会等待 D-Bus 信号后启动 notify -类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务 idle -类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合 KillMode control-group(默认值)-当前控制组里面的所有子进程,都会被杀掉 process -只杀主进程 mixed -主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号 none -没有进程会被杀掉,只是执行服务的 stop 命令 Restart no(默认值)-退出后不会重启 on-success -只有正常退出时(退出状态码为0),才会重启 on-failure -非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启 on-abnormal -只有被信号终止和超时,才会重启 on-abort -只有在收到没有捕捉到的信号终止时,才会重启 on-watchdog -超时退出,才会重启 always -不管是什么退出原因,总是重启 [Install] Alias -别名,可使用systemctl restart Alias.service RequiredBy -被哪些units所依赖,强依赖; WantedBy -被哪些units所依赖,弱依赖;
注:
所有的启动设置之前,都可以加上一个连词号(-),表示"抑制错误",即发生错误的时候,
不影响其他命令的执行。比如,EnvironmentFile=-/etc/sysconfig/sshd(注意等号后面的那个连词号),就表示即使/etc/sysconfig/sshd文件不存在,也不会抛出错误。
https://www.cnblogs.com/shijingjing07/p/9301590.html ↩︎
http://c.biancheng.net/view/5956.html ↩︎
https://www.ibm.com/developerworks/cn/linux/1407_liuming_init3/index.html ↩︎
https://www.linuxidc.com/Linux/2019-08/159995.htm ↩︎
http://www.178linux.com/49806 ↩︎
http://www.mikewootc.com/wiki/linux/usage/ubuntu_service_usage.html ↩︎
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。