Archlinux에서 부팅 할 때 자동으로 시작되는 커스텀 서비스를 만드는 방법은 무엇입니까?


10

Archlinux (systemd)에서 시작할 때 간단한 명령을 실행하고 싶습니다.

nohup fatrat -n &

데비안 에서이 작업을 수행했습니다.

#! /bin/sh
# /etc/init.d/fatratWS

### BEGIN INIT INFO
# Provides: fatratWS
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: fatratWS init script.
# Description: Starts and stops fatrat Web Server services.
### END INIT INFO

#VAR
FATRAT_PID=$(ps aux | awk '/fatrat --nogui/ && !/awk/ && !/nohup/ {print $2}')

# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting script fatratWS"
if [ -z "$FATRAT_PID" ]; then
nohup fatrat --nogui &
echo "Started"
else
echo "fatratWS already started"
fi
;;
stop)
echo "Stopping script fatratWS"
if [ ! -z "$FATRAT_PID" ]; then
kill $FATRAT_PID
fi
echo "OK"
;;
status)
if [ ! -z "$FATRAT_PID" ]; then
echo "The fatratWS is running with PID = "$FATRAT_PID
else
echo "No process found for fatratWS"
fi
;;
*)
echo "Usage: /etc/init.d/fatratWS {start|stop|status}"
exit 1
;;
esac

exit 0

아치에서 어떻게 똑같이 할 수 있습니까?

난 노력 했어:

[Unit]
Description=Fatrat NoGui Web Access Service

[Service]
ExecStart=/usr/bin/nohup /usr/bin/fatrat -n &
Type=forking

[Install]
WantedBy=multi-user.target

그러나 수동으로 시작할 때 시작되지 않습니다 (시간 초과)

답변:


14

이 시도:

[Unit]
Description=Fatrat NoGui Web Access Service
Requires=network.target
After=network.target

[Service]
ExecStart=/usr/bin/fatrat -n
Type=forking

[Install]
WantedBy=multi-user.target
  • "웹 액세스 서비스"에는 네트워크가 필요하다고 가정했기 때문에 요구 사항으로 network.target을 추가했습니다.

  • 이 기능은 시스템 자체에서 제공하며 '&'와 동일하므로 nohup을 사용할 필요가 없습니다.

  • 더 이상 nohup을 사용하지 않기 때문에 유형이 단순하게 변경되지만 git 릴리스에서 사용 가능한 웹 인터페이스는 포크하지 않으면 작동하지 않습니다.

  • 시스템 서비스 파일에 대한 자세한 내용은 "systemd.service"매뉴얼 페이지 및 https://wiki.archlinux.org/index.php/Systemd#Writing_custom_.service_files를 참조하십시오.

  • 충돌하는 경우 섹션 을 추가 Restart=always하여 [Service]자동으로 다시 시작 하는 것을 고려할 수 있습니다 .

  • 서비스 파일을 /etc/systemd/system/fatrat.service넣고 다음을 통해 자동 시작을 위해 활성화하십시오.systemctl enable fatrat.service


고마워요, 작동합니다! 내가해야했던 유일한 차이점은 추가 할 수 있었다 User=my_user_name에서 [Service]내 사용자로 응용 프로그램을 실행하는 섹션. 응용 프로그램에서 설정 파일을로드 할 수 있습니다이 방법/home/my_user_name/.local/share/fatrat/data
Joudicek Jouda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.