手动配置systeamd配置文件始终是一件麻烦的事情
每次手动配置都要复制一份之前的配置,再手动修改,难免会改出问题。。。所以撸了个生成脚本,只需要按步骤填写对应的值就好了,减少出错的可能性。
将下面的python代码保存为create_systeamd.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
import os import time service_text = """ [Unit] Description={desc} After=network.target [Service] Type={type} ExecStart={exec_start} WorkingDirectory={working_dir} Restart={restart} User={user} Group={group} {other_data} [Install] WantedBy=multi-user.target """ def is_non_root_user(): return os.getuid() != 0 if __name__ == '__main__': if is_non_root_user(): print('请使用ROOT账号运行!') exit(0) print('') name = input('*请输入名称:') file_path = '/etc/systemd/system/%s.service' % name print('将会保存到%s' % file_path) desc = input('请输入描述(默认名称):') or name type = input('服务类型(默认simple):') or 'simple' while True: exec_start = input('输入需要执行的指令(绝对路径):') if not exec_start: print("此为必填项") else: break working_dir = input('输入执行目录(默认为执行指令的目录):') or os.path.dirname(exec_start.split()[0]) restart = input('请输入启动类型(默认always):') or 'always' user = input('请输入启动用户(默认1000):') or '1000' group = input('请输入启动用户组(默认100):') or '100' if (input('是否输出日志:(Y/n)') or 'n').lower() != 'y': other_data += 'StandardOutput=append:/dev/null\n' file_text = service_text.format(desc=desc, type=type, exec_start=exec_start, restart=restart, user=user, group=group, working_dir=working_dir, other_data=other_data) with open(file_path, 'w') as w: w.write(file_text) print(file_text) print('重新加载服务') os.popen('systemctl daemon-reload').read() print('启用服务') os.popen('systemctl enable %s.service' % name).read() print('启动服务') os.popen('systemctl start %s.service' % name).read() time.sleep(3) print('查询服务状态') t = os.popen('systemctl status %s.service' % name).read() print(t) |
运行python3 create_systeamd.py
, 按照提示输入内容就行啦!