Centos
systemctl .service 文件未按預期工作
我正在使用 Centos 7 中的服務文件,並正在為 xymon 創建一個。我遇到的問題是我正在嘗試配置啟動、停止和重新啟動。我盡可能使用現有的服務文件作為模板,但無論我選擇哪個選項,都會使用“停止”選項。
# more xymon.service [Unit] Description=Xymon Monitor Service After=network.target [Service] Type=simple #User=xymon ExecStart=/home/xymon/startup/xymon-init.d start ExecReload=/home/xymon/startup/xymon-init.d restart ExecStop=/home/xymon/startup/xymon-init.d stop [Install] WantedBy=multi-user.target
我嘗試了簡單的、分叉的和其他幾個變體都無濟於事。我放置了一個虛擬腳本,其中列印了第一個參數,並且我總是在日誌文件中停止。我過去做過其他類型的服務文件沒有問題,但這是我第一次嘗試這個 systemctl。任何幫助,將不勝感激。
通常 systemd 可以將 init.d 腳本轉換為服務,而無需生成 .service 單元文件 - 如果腳本位於 init.d 目錄中,是可執行的並且可以由 systemd 成功解析,那麼(沒有 .service 文件)執行 systemctl status xymon 應該可以正常工作。顯然,情況並非總是如此。我在我的 centos 7 機器上擁有的唯一服務是 VMWare 工作站——在這種情況下,它只是在沒有服務文件的情況下工作。
這是使用 systemd 且不使用 init.d 腳本啟動 xymon 的推薦服務文件。一旦它工作(並且肯定在重新啟動之前),您可能必須將它們移出 init.d 區域。大概他們沒有在目前的狀態下工作,但他們仍然可以做足夠的干預。
這個站點有 el7 可用的 rpm(和 srpm):http://terabithia.org/rpms/xymon/它們 顯然是它的測試版,但它們包含 systemd 配置,不在官方 sourceforge 下載中.
# xymonlaunch.service # systemd file for Fedora 18 and up, or RHEL 7 and up [Unit] Description=Xymon systems and network monitor Documentation=man:xymon(7) man:xymonlaunch(8) man:xymon(1) After=network.target [Install] # Compatibility with "xymon" and "xymon-client" Alias=xymon.service Alias=xymon-client.service WantedBy=multi-user.target [Service] EnvironmentFile=/etc/sysconfig/xymonlaunch User=xymon # We wrap in xymoncmd to eliminate the need for the bulk of the old init script ExecStart=/usr/bin/xymoncmd /usr/sbin/xymonlaunch --no-daemon $XYMONLAUNCHOPTS Type=simple # Kill xymonlaunch, but don't send kills to the underlying procs, since they # might be doing important things (like writing checkpoints and flushing caches) KillMode=process # SendSIGHUP=yes SendSIGKILL=no
注意 - Argonauts 的答案適用於一些模組。這是我環境中基於標準安裝的工作版本:
# xymonlaunch.service # systemd file for Fedora 18 and up, or RHEL 7 and up [Unit] Description=Xymon systems and network monitor Documentation=man:xymon(7) man:xymonlaunch(8) man:xymon(1) After=network.target [Install] # Compatibility with "xymon" and "xymon-client" Alias=xymon.service Alias=xymon-client.service WantedBy=multi-user.target [Service] #EnvironmentFile=/etc/sysconfig/xymonlaunch User=xymon # We wrap in xymoncmd to eliminate the need for the bulk of the old init script ExecStart=/home/xymon/server/bin/xymoncmd /home/xymon/server/bin/xymonlaunch --no-daemon $XYMONLAUNCHOPTS Type=simple # Kill xymonlaunch, but don't send kills to the underlying procs, since they # might be doing important things (like writing checkpoints and flushing caches) KillMode=process # SendSIGHUP=yes SendSIGKILL=no