[LINUX]systemd service编写

  • Unit(单元)一个单元代表了一个后台服务进程:(可以类比成relations,描述服务之间的依赖关系)
    • Description:一段描述性文字,让人知道这个服务是干嘛的,一般都会写;
    • (After,Before)/Requires:描述在什么服务之后启动,区别在于(After,Before)非强制启动,类似于一个注释,说明启动本服务之前,【最好】先启动哪些服务,没有任何制约作用,如果那些服务没有启动,本服务照样会启动。Require会自动启动依赖的服务,然后启动本服务,关闭时也会先关闭本服务;
    • Documentation:也是描述性文字,一般指向一个http的文档地址,一般不写;
    • Wants:功能和Requires相反,带有强制作用,等于反向的描述依赖,但是如果wants的服务没有启动成功,不会影响本服务,因为从关系上,仍然是wants的服务依赖于本服务;
    • Conflicts:表示互斥关系,如果Conflicts中的服务已经启动,本服务就不启动;
    • BindsTo:指定的unit如果推出,当前服务也会停止运行;
    • Condition:当前unit必须满足的条件,否则不会运行;
    • OnFailure:如果本unit启动失败,那么启动某个候选方案service,类似于backup;
  • Service(服务)配置服务具体的属性了(可以类比成nodes信息)
    • Type:服务的启动类型,可以是
      • simple:本进程就是主体程序,例如非daemon程序,自己编写的小程序;
      • forking:守护进程服务一般采用这种方式启动,即在程序中调用了linux daemon函数;
      • oneshot:一次性程序,在程序退出后服务继续运行;
      • dbus、idle,notify。
    • ExecStart:执行一条shell命令,不要有&&复杂的运行关系,如果有,写入sh脚本中;
    • ExecStartPre:预处理脚本,看需要加;
    • ExecStartPost:后处理脚本,看需求来加;
    • Restart:设置在什么场景下进行重启,always:陷入异常退出或者被系统kill之后自动重启,no, on-success, on-failure,on-watchdog, on-abort;
    • RestartSec:服务终止后等待多长时间才重启,默认是100ms,一般没有特殊需求不用设置;
    • KillMode:process、control-group、none3选1,process就是当前进程,control-group就是终止一个组,none就是不关闭程序(一般不选);
    • TimeoutSec:服务start和stop等超时等待时间;
    • Environment:设置环境变量;
    • EnvironmentFile:通过文件的方式设置环境变量;
    • ExecStop:停止的时候执行的命令;
    • ExecReload:重新加载(restart)的时候执行的命令;
    • StandardOutput:syslog标准输出路径;
    • StandardError:inherit标准错误路径;
    • PrivateTmp:True给服务分配独立的临时空间;
    • WorkingDirectory:设置工作路径;
    • User:以指定的用户名称启动服务;
    • Group:以指定的组名称启动服务;
  • Install(安装):
    • WantedBy:将服务安装到哪里,一般都是multi-user.target;
    • Also:本服务关联的unit,在enable的时候会一起enable;
    • Alias:当前unit的别名;
  • 其他设置:
    • 设置systemd调试模式:service标签下添加:Environment=SYSTEMD_LOG_LEVEL=debug
    • 重新加载最新配置:sudo systemctl daemon-reload
    • 开启启动某个服务:sudo systemctl enable foo.service
NFS(Network File System)是一种允许网络中的计算机之间通过TCP/IP网络共享文件和目录的协议。SystemdLinux系统中用来控制systemd系统和服务管理器的一套系统工具,它使用`.service`文件来管理服务。为了通过Systemd管理NFS服务,你需要编写一个NFS服务的Systemd配置文件。 以下是编写NFS服务Systemd配置文件的一个基本示例: 1. 编辑`/etc/systemd/system/nfs-server.service`文件(如果文件不存在,则创建一个)。 2. 在文件中写入以下内容(或根据你的实际情况进行调整): ```ini [Unit] Description=启动NFS服务器 After=network.target [Service] Type=forking ExecStart=/usr/sbin/rpc.nfsd 8 ExecReload=/bin/kill -HUP $MAINPID KillMode=control-group Restart=on-failure [Install] WantedBy=multi-user.target ``` 在这个配置文件中,各部分的含义如下: - `[Unit]` 部分描述了服务的基本信息,包括服务的描述和启动顺序。 - `[Service]` 部分定义了服务的行为,其中: - `Type=forking` 表示服务在启动后会创建子进程。 - `ExecStart` 指定了启动服务时要执行的命令。 - `ExecReload` 指定了重新加载配置文件时要执行的命令。 - `KillMode` 指定了systemd如何停止服务。 - `Restart` 指定了服务在何种情况下应该自动重启。 - `[Install]` 部分定义了服务在哪个目标下安装,这里表示在多用户模式下启动。 保存文件后,执行以下步骤来管理NFS服务: 1. 重新加载Systemd的守护进程,以识别新的配置文件: ```bash sudo systemctl daemon-reload ``` 2. 启动NFS服务: ```bash sudo systemctl start nfs-server ``` 3. 设置NFS服务开机自启: ```bash sudo systemctl enable nfs-server ``` 4. 停止NFS服务: ```bash sudo systemctl stop nfs-server ``` 5. 查看NFS服务的状态: ```bash sudo systemctl status nfs-server ``` 确保在实际部署时,根据你所使用的Linux发行版和NFS服务的版本(如nfs-kernel-server等)调整上述命令和配置文件内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值