24.5. systemd 장치 파일을 사용하여 Next Boot에서 실행되도록 작업 예약
cron, anacron, at, batch 유틸리티를 사용하면 특정 시간 또는 시스템 워크로드에 특정 수준에 도달하면 작업을 예약할 수 있습니다. 다음 시스템 부팅 중에 실행할 작업을 생성할 수도 있습니다. 이 작업은 실행할 스크립트와 해당 종속 항목을 지정하는 systemd
장치 파일을 생성하여 수행됩니다.
다음 부팅 시 실행되도록 스크립트를 구성하려면 다음을 수행합니다.
스크립트를 실행할 부팅 프로세스의 단계를 지정하는
systemd
장치 파일을 만듭니다. 이 예에서는 적절한Wants=
및After=
종속성이 있는 단위 파일을 보여줍니다.~]# cat /etc/systemd/system/one-time.service [Unit] # The script needs to execute after: # network interfaces are configured Wants=network-online.target After=network-online.target # all remote filesystems (NFS/_netdev) are mounted After=remote-fs.target # name (DNS) and user resolution from remote databases (AD/LDAP) are available After=nss-user-lookup.target nss-lookup.target # the system clock has synchronized After=time-sync.target [Service] Type=oneshot ExecStart=/usr/local/bin/foobar.sh [Install] WantedBy=multi-user.target
다음 예제를 사용하는 경우:
-
/usr/local/bin/foobar.sh
를 스크립트 이름으로 대체 필요한 경우
After=
항목 세트를 수정합니다.부팅 단계를 지정하는 방법에 대한 자세한 내용은 10.6절. “systemd 장치 파일 생성 및 수정” 을 참조하십시오.
-
스크립트를 실행한 후
systemd
서비스가 활성화되도록 하려면RemainAfterExit=yes
행을[Service]
섹션에 추가합니다.[Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/local/bin/foobar.sh
systemd
데몬을 다시 로드합니다.~]# systemctl daemon-reload
systemd
서비스를 활성화합니다.~]# systemctl enable one-time.service
실행할 스크립트를 생성합니다.
~]# cat /usr/local/bin/foobar.sh #!/bin/bash touch /root/test_file
다음 부팅 중에 스크립트가 모든 부팅 시에만 실행되도록 하려면
systemd
장치를 비활성화하는 행을 추가합니다.#!/bin/bash touch /root/test_file systemctl disable one-time.service
스크립트를 실행 가능하게 만듭니다.
~]# chmod +x /usr/local/bin/foobar.sh