사용자 정의 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실행됩니다.

미리 감사드립니다!

추신 : 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.

관련 정보