Linux使用systemctl设置程序开机自启动

1 说明

设置开机自启动,需要用到systemctl工具。
systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。
systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。
在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。

2 准备

os:redhat7.0
systemctl –version : systemd 208
weblogic version:12

3 将程序设置成系统服务

3.1 编写系统服务文件

# vi /etc/systemd/system/myapp.service
----------------------------------------------------
#如果/etc/systemd/system/myapp.service有过修改,需要进行更新,执行下面这个命令
#systemctl daemon-reload
#查看服务是否被正确识别
#systemctl list-unit-files|grep myapp
[Unit]
#服务描述,写有意义的内容,便于识别
Description=myapp service

[Service]
Type=simple
#设置应用的工作目录
WorkingDirectory=/myapp_path
ExecStart=/myapp_path/startMyApp.sh
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

3.3 查看系统服务文件是否被识别

# systemctl list-unit-files|grep myapp
--------------------------
myapp.service                      disabled

至此,系统服务文件编写完成。

4 编写程序启动脚本

# vi /myapp_path/startMyApp.sh
----------------------------------------------------
#!/bin/sh
#上面这行很重要,会报203错误
#最好先cd到程序目录
cd /myapp_path
#使用java的绝对路径。如果找不到java可执行程序,也会报203错误
/usr/java/jdk1.8/bin/java -jar myapp.jar

启动脚本设置执行权限

# chmod +x myapp.sh

5 测试系统服务

5.1 启动系统服务

# systemctl start myapp.service

5.2 停止系统服务

# systemctl stop myapp.service

5.3 查看系统服务是否成功启动

# systemctl status myapp.service -l

5.4 可能碰到的203错误

ExecStart参数指定启动脚本路径不对,会提示203错误。(改对就好了。)
启动程序脚本(.sh文件)中未指定脚本解析器,会提示203错误。(在文件开头添加:#!/bin/sh)
启动程序脚本(.sh文件)没有执行权限,会提示203错误。(chmod +x myapp.sh)

6 将服务设置成开机自启动

# systemctl enable myapp.service
# systemctl list-unit-files|grep myapp
--------------------------
myapp.service                      enabled

反向命令:

# systemctl disable myapp.service
# systemctl list-unit-files|grep myapp
--------------------------
myapp.service                      disabled

6 查看服务的控制台日志

相当于tail -f。

# journalctl -flu myapp.service
  • 9
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Linux 下,有多种方式可以设置程序开机自启动,以下是其中的两种方法: 1. 使用系统自带的服务管理工具 大多数 Linux 系统都自带了服务管理工具,例如 Ubuntu 下的 systemd。可以通过以下步骤设置程序开机自启动: 1. 编写一个服务文件,通常以 `.service` 结尾,比如 `myservice.service`。 2. 将服务文件拷贝到 `/etc/systemd/system/` 目录下。 3. 执行 `systemctl daemon-reload` 命令,重新加载服务文件。 4. 执行 `systemctl enable myservice.service` 命令,启用服务。 示例服务文件 `myservice.service`: ``` [Unit] Description=My Service After=network.target [Service] Type=simple ExecStart=/path/to/my/program [Install] WantedBy=multi-user.target ``` 该服务文件定义了一个名为 My Service 的服务,它依赖于网络服务,在网络服务启动之后才会启动。服务类型为 simple,执行的命令是 `/path/to/my/program`。最后,将该服务安装为多用户模式下的服务。 2. 使用 rc.local 文件 rc.local 文件是一个在系统启动时执行的脚本文件。可以通过以下步骤设置程序开机自启动: 1. 编辑 `/etc/rc.local` 文件,添加需要启动程序命令。 2. 将程序命令添加到文件中,格式为 `<command> &`,例如 `/path/to/my/program &`。 3. 保存文件并退出。 示例 `/etc/rc.local` 文件: ``` #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. /path/to/my/program & exit 0 ``` 该文件在系统启动时会执行 `/path/to/my/program` 命令,并加上后台运行符号 `&`,使程序在后台运行。最后,将文件保存并设置执行权限即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值