Liunx 开机自启程序设置[systemd]

(这里以Java程序为例,其他同理)

步骤 1:编写 systemd 服务文件

  1. 创建服务文件:
    使用文本编辑器(如 vimnano)创建服务文件。例如,假设你的 Java 程序是 myapp.jar,可以创建一个名为 myapp.service 的文件:
sudo vim /etc/systemd/system/myapp.service
  1. 添加服务配置:
    myapp.service 文件中添加以下内容,替换路径和参数为你实际的 Java 程序路径和配置:
[Unit]
Description=My Java Application
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/java -jar /path/to/your/myapp.jar
# 服务失败时自动重启,这里kill掉程序将不断自启,若不需要可以设置为no
Restart=always
User=root
Group=root
WorkingDirectory=/path/to/your/
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk"
StandardOutput=journal
StandardError=journal
# 若需要,可将日志从默认journal输出到对应的文件[file/append]
# StandardOutput=append:/root/service.log
# StandardError=append:/root/service.log

[Install]
WantedBy=multi-user.target

说明:

  • Description:服务的描述。
  • After:确保服务在网络启动后运行。
  • ExecStart:启动命令,指定 Java 路径和 jar 文件路径。
  • Restart:设置服务失败时自动重启。
  • UserGroup:指定运行服务的用户和组,建议使用非 root 用户。
  • WorkingDirectory:指定工作目录(jar 文件所在目录)。
  • Environment:设置环境变量(可选,根据你的 Java 安装路径设置Java环境变量)。
  • StandardOutputStandardError:将输出和错误日志记录到 systemd 的 journal 中。

步骤 2:设置文件权限

确保服务文件具有正确权限:

sudo chmod 644 /etc/systemd/system/myapp.service

步骤 3:重新加载 systemd 配置

让 systemd 识别新创建的服务文件:

sudo systemctl daemon-reload

步骤 4:启用开机自启动

启用服务以便在系统启动时自动运行:

sudo systemctl enable myapp.service

步骤 5:启动服务

立即启动服务以测试:

sudo systemctl start myapp.service

步骤 6:检查服务状态

确认服务是否正常运行:

sudo systemctl status myapp.service

步骤 7:查看日志

如果需要调试,可以查看服务的日志:

sudo journalctl -u myapp.service
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。