nohup 를 대체하는 systemd-run 명령어 사용법
daemon 으로 작성하지 않았지만 back group 로 돌아가야 하는 명령어. 혹은 현재 로그인 세션이 끊어져도 계속 실행해야 하는 배치 명령어등은 nohup로 실행할수 있습니다.
systemd-run 은 단기로 실행해야 하는 .service 나 .scope 유닛이나 또는 특정 커맨드를 실행할 수 있으므로 전통적인 nohup 를 대체할 수 있습니다.
실행
$ sudo systemd-run ls Running as unit: run-r1234.service
journalctl 로 실행한 서비스의 상태를 확인할 수 있습니다.
$ sudo journalctl -u run-r1234.service Running as unit: run-r1234.service
예제
env 변수 값 로깅
env 명령으로 systemd 가 서비스에 전달하는 환경 변수 값을 logging 할 수 있습니다.
$ sudo systemd-run env Running as unit: run-reb6fa83b994f4766906b30aafaf13a03.service
실행된 unit 번호를 journalctl 에 전달하면 systemd 가 service 에 전달한 환경변수를 확인할 수 있습니다.
$ sudo journalctl -u run-reb6fa83b994f4766906b30aafaf13a03.service -- Logs begin at Tue 2021-03-16 19:51:24 EDT, end at Tue 2021-04-20 10:11:31 EDT. -- Apr 20 10:11:31 kccf-dev.lesstif.com systemd[1]: Started /bin/env. Apr 20 10:11:31 kccf-dev.lesstif.com env[688817]: LANG=ko_KR.UTF-8 Apr 20 10:11:31 kccf-dev.lesstif.com env[688817]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin Apr 20 10:11:31 kccf-dev.lesstif.com env[688817]: INVOCATION_ID=fdedf2cb7d3d46e0a261a279e6ee8ab7 Apr 20 10:11:31 kccf-dev.lesstif.com env[688817]: JOURNAL_STREAM=9:15368433 Apr 20 10:11:31 kccf-dev.lesstif.com systemd[1]: run-reb6fa83b994f4766906b30aafaf13a03.service: Succeeded.
property 설정 및 실행
-p 옵션으로 실행할 서비스나 scope unit 의 프로퍼티를 설정할 수 있습니다. 다음은 updatedb 명령을 실행하면서 block I/O weight 를 10으로 제한합니다.
$ sudo systemd-run -p BlockIOWeight=10 updatedb
정해진 시간에 실행
--on-active 옵션뒤에 시간(초 단위)을 설정하면 해당 시간 뒤에 명령어를 실행합니다.
$ date; sudo systemd-run --on-active=30 --timer-property=AccuracySec=100ms /bin/touch /tmp/foo