建立自訂 Systemd 服務

  1. 建立服務要執行的腳本 /usr/local/bin/usrfind.sh,將找到的結果導向到家目錄的 usrfind.txt。
    [root@kvm8 ~]# vi /usr/local/bin/usrfind.sh
    [root@kvm8 ~]# cat /usr/local/bin/usrfind.sh
    #!/bin/bash
    find /usr/ -size +10M > ~/usrfind.txt
    
  2. 將 /usr/local/bin/usrfind.sh 加上可執行屬性。
    [root@kvm8 ~]# chmod +x /usr/local/bin/usrfind.sh
    
  3. 查看 systemd 服務的單元檔案的說明文件,其中範例一如下:
    [root@kvm8 ~]# man 5 systemd.unit
           Example 1. Allowing units to be enabled
    
           The following snippet (highlighted) allows a unit (e.g.  foo.service)
           to be enabled via systemctl enable:
    
               [Unit]
               Description=Foo
    
               [Service]
               ExecStart=/usr/sbin/foo-daemon
    
  4. 建立 systemd 服務單位設定檔 /usr/lib/systemd/system/usrfind.service
    [root@kvm8 ~]# vi /usr/lib/systemd/system/usrfind.service
    [root@kvm8 ~]# cat /usr/lib/systemd/system/usrfind.service
    [Unit]
    Description=usrfind.sh
    
    [Service]
    ExecStart=/usr/local/bin/usrfind.sh
    
  5. 重新載入 Systemd 設定檔
    [root@kvm8 ~]# systemctl daemon-reload
    
  6. 啟動 usrfind 服務
    [root@kvm8 ~]# systemctl start usrfind.service
    
  7. 查看 usrfind 服務狀態,因為只有一行指令,不是背景執行的常駐程式,所以啟動後執行完馬上退出。
    [root@kvm8 ~]# systemctl status usrfind.service
    ○ usrfind.service - usrfind.sh
         Loaded: loaded (/usr/lib/systemd/system/usrfind.service; static)
         Active: inactive (dead)
    
    Sep 29 20:54:54 kvm8.deyu.wang systemd[1]: Starting usrfind.service - usrfind.sh...
    Sep 29 20:54:54 kvm8.deyu.wang systemd[1]: usrfind.service: Deactivated successfully.
    Sep 29 20:54:54 kvm8.deyu.wang systemd[1]: Finished usrfind.service - usrfind.sh.
    
  8. 查看家目錄於 20:54 建立 usrfind.txt 與 usrfind 服務狀態顯示的時間一玫。
    [root@kvm8 ~]# ll usrfind.txt 
    -rw-r--r--. 1 root root 500 Sep 29 20:54 usrfind.txt
    
  9. 家目錄建立的 usrfind.txt,內容為查詢的結果。
    [root@kvm8 ~]# cat usrfind.txt 
    /usr/lib/sysimage/rpm/rpmdb.sqlite
    /usr/lib/firmware/nvidia/ga102/gsp/gsp-535.113.01.bin.xz
    /usr/lib/firmware/nvidia/tu102/gsp/gsp-535.113.01.bin.xz
    /usr/lib/modules/6.12.0-55.9.1.el10_0.x86_64/vmlinuz
    /usr/lib64/libicudata.so.74.2
    /usr/lib64/libLLVM.so.19.1
    /usr/lib64/libgallium-24.2.8.so
    /usr/share/fonts/google-noto-sans-mono-cjk-vf-fonts/NotoSansMonoCJK-VF.ttc
    /usr/share/fonts/google-noto-sans-cjk-vf-fonts/NotoSansCJK-VF.ttc
    /usr/share/fonts/google-noto-serif-cjk-vf-fonts/NotoSerifCJK-VF.ttc