小Cの已经记不起来的博客

使用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, 按照提示输入内容就行啦!

评论

还没有评论。

发表评论

提交后评论将经过自动审核,审核通过后公开展示。

未在播放