使用Systemd把自作脚本服务化(加入开机启动)

Systemd的出现,使得自己编写的脚本可更容易的添加进系统服务,进而实现开机启动。

例如,我们可以把最简单的hello world脚本进行扩展,将其添加进系统服务,使之开机自启动。

1、编写脚本

编写一个 /opt/hello.sh 脚本

sudo vim /opt/hello.sh
/opt/hello.sh
#!/bin/bash
while true
do
   echo hello world >> /tmp/hello.log
   sleep 1
done

赋予执行权限。

sudo chmod 0755 /opt/hello.sh

2、在/etc/systemd/system/ 下创建Unit定义文件

sudo vim /etc/systemd/system/hello.service

内容如下

/etc/systemd/system/hello.service
[Unit]
Description = hello daemon

[Service]
ExecStart = /opt/hello.sh
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target

ExecStart中填写想要执行的脚本。
Restart = always 是指进程或服务意外故障的时候可以自动重启的模式。

※Unit文件的详细写法会另外给出。

(Type = simple 指默认的选项没有必要填写,或可理解成其余选项均为系统默认。)

3、把Unit添加进Service

使用systemctl list-unit-files --type=service命令,出现如下图所示即为正常。

$ sudo systemctl list-unit-files --type=service | grep hello
hello.service                              disabled

OK!

4、enable服务后使之start

之后系统将以一般服务的形式对待它。

# 开机自启动on
$ sudo systemctl enable hello
# 单次启动
$ sudo systemctl start hello

运行状态确认

$ sudo systemctl status hello

hello.service - hello daemon
   Loaded: loaded (/etc/systemd/system/hello.service; enabled)
   Active: active (running) since 2018-05-19 09:02:19 UTC; 2min 54s ago
 Main PID: 551 (hello.sh)
   CGroup: /system.slice/hello.service
           ├─ 551 /bin/bash /opt/hello.sh
           └─2062 sleep 1

 6月 19 09:02:19 localhost.localdomain systemd[1]: Started hello daemon.

打开日志文件看看脚本是否正常运作。

[vagrant@localhost ~]$ tailf /tmp/hello.log
hello world
hello world
hello world
hello world
hello world

成功了!

5、重启机器,查看服务是否正常自动启动

$ sudo reboot

重启后,如正常显示hello服务即为操作政工。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/100909

(26)
上一篇 2018-06-12 15:40
下一篇 2018-06-12 15:45

相关推荐

  • shell脚本

    shell脚本的练习题

    2018-04-18
  • linux操作系统启动流程与kickstart自动化部署

    linux操作系统启动流程与kickstart自动化部署

    Linux笔记 2020-02-29
  • 文本三剑客之awk

    awk的名称来源于三个开发者的姓名:Aho, Weinberger, Kernighan,报告生成器,格式化文本输出,Linux文本处理三剑客之一。

    2018-05-17
  • 第十周博客作业

    1、Centos系统下实现httpd-2.2的安装,并分别实现prefork、worker、event等几种工作方式
    2、简述request报文请求方法和状态响应码
    3、详细描述httpd虚拟主机、站点访问控制、基于用户的访问控制、持久链接等应用配置实例

    2018-05-26
  • 网络管理基础

    1.PDU: Protocol Data Unit,协议数据单元是指对等层次之间传递的数据单位 物理层的 PDU是数据位 bit 数据链路层的 PDU是数据帧 frame 网络层的PDU是数据包 packet 传输层的 PDU是数据段 segment 其他更高层次的PDU是消息 message 2.TCP特性工作在传输层 面向连接协议 全双工协…

    Linux笔记 2018-05-02
  • LINUX 进程管理

    #### hostname hostname [OPTION] [HOSTNAME] 默认选项:修改主机名为[HOSTNAME] 备注:临时生效如果想永久生效则需要修改文件/etc/sysconfig/network文件 选项 -I :取出本机上所有的非回环地址 示例 “` [root@zhangxiao network-scripts]#hos…

    Linux笔记 2018-05-06