Red Hat 7 시스템의 /etc/rc.d/init.d/에 공급업체에서 제공한 스크립트가 있습니다. 스크립트를 시작하고 중지할 수 있지만 systemctl
실제로는 시스템 단위 파일이 아닌 것 같습니다.
이 스크립트는 부팅 시 시스템 장치 파일에 의해 마운트되는 드라이브에 의존합니다. 그러나 이 init 스크립트는 설치가 완료되기 전에 시작을 시도하므로 항상 실패합니다.
나는 init 스크립트의 시작 부분에 스크립트를 나머지 스크립트를 실행하기 전에 30초 동안 대기 상태로 만드는 줄을 추가하여 해킹을 시도했습니다 sleep 30
.
그러나 수면 기능이 항상 작동하는 것은 아닙니다.
완료되는 시스템 마운트 장치 파일에 따라 이 초기화 스크립트를 만드는 방법이 있습니까? 초기화 스크립트 시작 부분에 절전 모드를 추가하는 것보다 더 좋은 방법이 있습니까? 감사해요.
답변1
SysV 초기화 스크립트는 systemd에 의해 systemd 단위 파일로 자동 변환됩니다. 바라보다 man systemd-sysv-generator
. 생성된 유닛을 편집하여 마운트 지점에 적절한 종속성을 추가하려고 합니다. 단 몇 줄의 추가 콘텐츠로 "포함된" 파일을 생성하면 됩니다. 예를 들어 초기화 파일이 호출되면 /etc/rc.d/init.d/mysysv
생성된 유닛은 mysysv.service
. 다음 명령을 입력하세요:
sudo systemctl edit mysysv
그리고 선택한 편집기의 임시 파일에 있어야 합니다(환경 변수 EDITOR 설정). 다음을 포함하도록 파일을 편집합니다.
[Unit]
# default timeout of 90 secs for dir to be mounted
JobTimeoutSec=600
RequiresMountsFor=/path/to/mount
편집기를 깔끔하게 종료하세요. 이렇게 하면 파일이 생성됩니다 /etc/systemd/system/mysysv.service.d/override.conf
. 지금 장치를 시작하면 mysysv
이 수정으로 인해 작업은 시작하기 전에 마운트 지점에 무언가가 설치될 때까지 최대 600초 동안 대기하게 됩니다. 그렇지 않으면 시간 초과로 인해 실패합니다. 작업의 기본 대기 시간은 시스템 전역 값인 90초입니다.
답변2
이것은 간단한 템플릿 시스템 파일입니다.
#!/bin/bash
[Unit]
Description=license administration
After=default.target
[Service]
Type=idle
ExecStart=/root/scripts/administration.sh
TimeoutStartSec=0
[Install]
WantedBy=default.target
my_administration.service
예를 들어 위의 이름을 지정하면- 그것을 위치시키다
/etc/systemd/system/
root.root
허가 를 받고-rw-r--r--
- 그런 다음
systemctl daemon-reload
- 그런 다음 a를 수행하면 목록이
systemctl list-unit-files
표시됩니다.my_administration.service
- 어떤 것을 만들어
systemctl enable my_administration
- 시작 후 위 구문이 주어지면 런레벨에 도달하면 파일이
/root/scripts/administration.sh
실행됩니다. 제 경우에는 graphic.target입니다.default.target
systemctl get-default
- 내
administration.sh
파일에는 권한이root.root
있으며-rwx------
실행 가능해야 합니다.확실히저는 이 파일을 수동으로 만들었습니다. Linux가 완전히 부팅된 후 몇 가지 작업을 수행하기 위해 만든 작은 사용자 정의 스크립트입니다.
참조용으로 다른 시스템 서비스 파일을 확인하세요.
Redhat 시스템 관리자 가이드, 10장을 참조하십시오. systemd를 사용하여 서비스 관리
당신은 활용하고 싶어
[Unit]
Before=
Wants=
After=
Requires=
ExecStart=
특정 시간에 파일 에 무슨 일이 일어나든 다른 서비스가 시작되기 전이나 일부 서비스가 시작된 후에는 분명히 발생합니다. 이 네 가지뿐만 아니라 원하는 것을 실현하기 위해 사용해야 하는 시스템 관리자 가이드에서 찾아보아야 할 다른 많은 것들이 있으며, 이 네 가지는 가장 일반적으로 사용되는 것입니다.
여기에서 참조용으로 모든 서비스 파일을 찾을 수 있습니다 /usr/lib/systemd/system/
.
또한 확인해 보세요:https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files
반품:스크립트에서 다음과 같은 작업을 수행할 수도 있습니다.
if mountpoint -q /bkup ;then /usr/bin/rsnapshot daily; fi
내 /etc/crontab
집에서는 다음을 실행하여 매일 백업을 수행합니다.스냅 사진mountpoint -q
먼저 10TB 백업이 마운트되었는지 확인하고 루트 파티션의 마운트 해제된 폴더에 백업하여 시스템이 충돌하지 않았는지 확인하기 위해 다음을 수행했습니다 .