systemd를 사용하여 프로세스를 관리하고 다음 규칙을 따르는 모든 운영 체제의 경우Linux Foundation의 파일 시스템 계층 표준
나는 최근에 systemd 단위 파일 외에 어디로 가야할지 물었습니다. Arch Linux에서 내 시스템 장치 파일을 어디에 배치해야 합니까?
나는파이썬 스크립트5분마다(파이썬 스크립트를 호출하는 시스템 단위 파일 스크립트와 혼동하지 마십시오). 나는 이 질문에 대한 답을 읽었습니다. systemd를 사용하여 30분마다 스크립트 실행
이것이 내 문제가 있는 곳이다. systemd가 실행하는 스크립트를 어디에 저장해야 하며 저장할 수 있습니까? 특히 Arch Linux에 이러한 용도로 예약된 공간이 있나요?
- 예를 들어, 로그는 다음 위치에 배치됩니다.
/var/log
systemd
유닛 파일은 다음 위치에 위치합니다./etc/systemd/system
/etc/systemd/system/writehello.service
샘플 서비스입니다.
[Unit]
Description=Run python script that writes hello in file on /media/5TB/hello.txt
[Service]
Type=oneshot
ExecStart=# <-- This is what I am looking for
[Install]
WantedBy=multi-user.target
/etc/systemd/system/writehello.timer
해당 타이머입니다. 이것들은 모두 녹음된 것들입니다.
[Unit]
Description=test
[Timer]
Persistent=true
OnUnitActiveSec=10s
OnBootSec=10s
[Install]
WantedBy=timers.target
/path/to/writehello.py
이것이 내가 찾고 있는 길이다.
#!/usr/bin/env python
import os
import datetime
now = datetime.datetime.now()
f1 = open('/media/mydrive/hello.txt','a')
f1.write('hello %s\n' % (now))
f1.close
답변1
저도 같은 생각을 하고 있는데 다른 분들의 의견도 듣고 싶습니다. 내 생각에는 관리자가 실행해야 하는 항목을 어디에 두는가 /usr/local/sbin
하는 것입니다.sbin
귀하의 분석은 정확합니다. 이는 /usr/local
패키지 관리자가 관리하지 않는 콘텐츠를 설치하는 데 특별히 사용되는 위치입니다. 하지만 bin
일반 사용자도 실행할 수 있어야 합니다. 두 경우 모두를 root
제외하고는 /usr/local
... 내가 아는 한 이것은 (/usr/ 전체에 대한) 규칙입니다.
/opt
일반적으로 시스템에서 기본적으로 사용하지 않는 소프트웨어 패키지에 사용됩니다. 사용자는 bin/man/etc에 대한 일부 환경 변수를 설정해야 액세스할 수 있습니다. 특정 패키지에 대한 디렉터리입니다. 위에 제공한 링크를 읽어보세요.
바라보다RHEL FSH 개요게다가최신 FHS 문서.
답변2
다음은 실행될 항목을 저장하기에 이상적인 장소입니다(자세한 내용은 링크 참조).
파일 시스템 계층 표준 HS v2.3에서 인용됨
로컬로 설치된 하이퍼바이저는 /usr/local/sbin에 배치되어야 합니다.
내가 아는 한, FHS 문서에서 "시스템"을 언급하는 것은 특정 "루트" 사용자를 지칭하는 것입니다.
/usr/local/bin
또는/usr/local/sbin
고유한이 컴퓨터에(패키지 관리자는 사용할 수 없음(예: 스크립트, CD의 소프트웨어)), 즉 일반 소스에서 모든 컴퓨터에 설치되지 않음(패키지 관리자가 아닙니다.)./usr/local/bin
모든 사용자가 작업을 실행할 수 있습니다./usr/local/sbin
stuff는 루트(시스템 "바이너리" 디렉터리)에서만 실행할 수 있습니다./usr/bin
독특하지 않음(예를 들어 패키지 관리자로부터 컴퓨터 간에 공유되는 것, 즉패키지 관리자는 이 위치를 사용합니다.)/root/bin
ㅏ루트 사용자이 디렉토리는/usr/local/sbin
.루트 사용자run 또는 visible (이 폴더는 루트 또는 그룹 루트에 의해서만 실행될 수 있으므로 해당 내용은 루트 이외의 누구에게도 표시되지 않습니다.) 일관성을 위해 bin 폴더를 만들 수도 있지만 어쨌든 아무도 모릅니다 :)/home/<user>/bin
표준 사용자이 디렉터리를 만들 수 있습니다. 표준 사용자로 systemd가 실행하는 스크립트를 저장하기에 좋은 장소입니다.
결론은번호 1systemd 데몬/서비스가 실행하는 스크립트를 저장하기에 이상적인 장소입니다.
말이 되네요.
- 표준 위치입니다.
- 패키지 관리자 패키지와 격리되어 있습니다.
답변3
스크립트를 /usr/bin
또는 /usr/local/bin
(선호) 또는/opt
ExecStart=
유닛 파일의 Key In service 섹션에 있는 스크립트를 참조해야 합니다.