カスタムsystemdサービスを開始できますが、アクティブにすることはできません。

カスタムsystemdサービスを開始できますが、アクティブにすることはできません。

Telegram-cliデーモンを作成したいです(https://github.com/vysheng/tg)。/etc/systemd/system/telegram.service次の内容でファイルを作成しました。

[Service]
Type=simple
KillMode=process
ExecStart=/usr/bin/telegram-daemon

[Install]
WantedBy=default.target

/usr/bin/telegram-daemon以下を含むファイル:

#!/bin/bash
rm -rf /var/run/telegram.sock
cd /root/tg
bin/telegram-cli  -k tg-server.pub -W -s action.lua  -S /var/run/telegram.sock > /dev/null 2>&1 &
exit

次のコマンドを使用してこのサービスを完全に開始でき、systemctl start telegram次のコマンドを使用して有効にできますsystemctl enable telegram

 ln -s '/etc/systemd/system/telegram.service' '/etc/systemd/system/default.target.wants/telegram.service'

サーバーを手動で起動し、テレグラムが使用中であることを確認すると、サーバーはps aux | grep telegram稼働しています。

root      2506  0.0  2.2 359208 22632 ?        S    apr24   1:11 bin/telegram-cli -k tg-server.pub -W -s action.lua -S /var/run/telegram.sock
root      8177  0.0  0.0 112660   964 pts/0    R+   12:11   0:00 grep --color=auto telegram

しかし、再起動するとcliは起動しません。サービス状態(systemctl status -l telegram)は次のとおりです。

telegram.service
   Loaded: loaded (/etc/systemd/system/telegram.service; enabled)
   Active: inactive (dead) since zo 2015-04-26 12:13:14 UTC; 48s ago
  Process: 393 ExecStart=/usr/bin/telegram-daemon (code=exited, status=0/SUCCESS)
 Main PID: 393 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/telegram.service

apr 26 12:13:14 vultr.guest systemd[1]: Starting telegram.service...
apr 26 12:13:14 vultr.guest systemd[1]: Started telegram.service.

この問題をどのように解決できますか?typeまた、forkingサービスから直接テレグラムコマンドを実行してみました。常に最新の状態でsystemctl start telegram実行されます。

よろしくお願いします!

PS:Centos 7を実行しています。

編集:@rebootでcrontabを介してサービスを開始すると、結果は同じです。

ベストアンサー1

私はこの問題を解決しました。これが/etc/systemd/system/telegram.serviceファイルです。このファイルが必要な唯一のファイルであることに注意してください。

[Unit]
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
ExecStartPre=/bin/rm -f /var/run/telegram.sock
ExecStart=/root/tg/bin/telegram-cli  -k /root/tg/tg-server.pub -W -s /root/tg/action.lua  -S /var/run/telegram.sock > /var/log/telegram.log &
KillMode=process

ExecStop=/bin/rm -rf /var/run/telegram.sock

[Install]
WantedBy=multi-user.target

/root/tg の下にテレグラムをインストールしてコンパイルする必要があります。これで、次の方法で起動systemctl start telegram、停止、およびsystemctl stop telegramアクティブ化できます(起動時に実行されます)。systemctl enable telegram

これでメッセージの送信を開始できますecho "msg $username $msg" | socat - UNIX-CONNECT:/var/run/telegram.sock。 $ usernameと$ msgを希望の値に置き換えます。これはbashスクリプトを生成することで単純化することができます(/usr/bin/telegram-msgの下に配置して実行する)。chmod +x /usr/bin/telegram-msg

#!/bin/bash
echo "msg $1 $2" | socat - UNIX-CONNECT:/var/run/telegram.sock

これでテレグラム経由でメッセージを送信できますtelegram-msg $username $msg

おすすめ記事