文章目录
1了解运行机制
参考#_4
这篇讲的很清楚了
大约意思是这样的:Systemd是系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源linux自动启动服务,服务器进程和其它进程。
所以依照它的规则编撰我们自己的service单元,就可以开机启动程序。
2编撰service
位置:/etc/systemd/system
我们在这个目录下写入我们的yourServiceName.service
[Unit]
Description=yourDescription
After=network.service
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=yourSrcPath
ExecStart=/yourInstallPath/python3 server.py
PrivateTmp=true
Restart=on-failure
[Install]
WantedBy=multi-user.target
ps:大意是
Type指定了我的类型是simple
after指定了启动network.service服务后开始启动我的服务linux自动启动服务,
ExecStart指定了执行/usr/bin/python3server.py,
WorkingDirectory指定了工作空间在
PrivateTmp指定了开启独立的进程空间,
3开启服务
systemctl start yourServiceName.service
可能会遇到一些问题,例如提示你参数错误,我的是由于文件内容格式有点问题报错,还有可能发生别的错误,这时侯它会提示你用status命令查看
systemctl status yourServiceName.service
这儿可以看见具体缘由
1)Execformaterror
2)再例如运行时程序出错退出了,哪些的。
通过这两句命令在这儿把service调试完毕。假如更改了.service,会提示使用
systemctldaemon-reload重新加载
另外,据说通过这些方法启动的,不会在命令行里给你输出,所以print这些就无效了,只能用其功能去测试
通过ps-aux|grepjava
可以查看到已启动的python程序
可能的报错:
1)code=exited,status=203/EXEC
systemctl执行.sh脚本文件时,须要在腹部指定脚本类库
#!/bin/sh
4设置开机启动服务(无界面)
systemctl enable yourServiceName.service
会显示Createdsymlinkfrom/etc/systemd/system/multi-user.target.wants/jenkins.serviceto/etc/systemd/system/jenkins.service.
若须要延后执行redhat linux 9.0linux web服务器,可以编辑.sh文件
sleep 60
xxxxx
5设置开机启动app(有界面)
以上是开机自启服务,适用于没有图形界面的程序。后来发觉一种愈发简便的方式,并且可以带界面,适用于ubuntu
首先,sudogedit~/.bashrc
将运行程序的命令行句子写在最顶部
例如:
pythonxxx.py
保存后执行source~/.bashrc
之后设置开机自启动终端就可以运行该程序了。
终端中输入gnome-session-properties打开Ubuntu开机首选项管理
添加,名称随意写,命令gnome-terminal。