使用python自动创建基于systeamd的守护配置
手动配置systeamd配置文件始终是一件麻烦的事情
每次手动配置都要复制一份之前的配置,再手动修改,难免会改出问题。。。所以撸了个生成脚本,只需要按步骤填写对应的值就好了,减少出错的可能性。
将下面的python代码保存为 create_systeamd.py
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, 按照提示输入内容就行啦!
评论
还没有评论。
发表评论
提交后评论将经过自动审核,审核通过后公开展示。