crontab에서 시작시 명령 실행


24

재부팅이 끝난 후 리눅스에서 명령을 실행하고 싶었습니다 .crontab을 사용하여 명령을 수행 할 수 있음을 알았습니다. 이 명령을 실행하고 싶었습니다

sudo ifdown eth0 && sudo ifup -v eth0

crontab에서 그냥 할 수 있습니다 :

@reboot sudo ifdown eth0 && sudo ifup -v eth0

아니면 스크립트에 저장해야합니까?

고맙습니다


7
Crontab은 eth0을 다시 시작하기위한 잘못된 도구 인 것 같습니다. 왜 /etc/rc.local에 그 명령을 sudo없이 넣지 않겠습니까?
mikewhatever

이를 위해 무엇을해야합니까? 이러한 작업은 일반적으로 부팅 과정에서 자동으로 수행, 거의있다 마십시오 자동 부팅 프로세스를 별도로 실행 할 필요가 없습니다 ...
토마스 구

1
@ mikewhat 내가 지금 투표 할 수는 없지만 제안 해 주셔서 감사합니다.
Lottie

답변:


34

이것이 작동하기 전에 여기에 몇 가지 메모가 있습니다.

  1. sudo크론 작업 에는 사용하지 마십시오 . 대신 root자신의 crontab을 편집 sudo crontab -e하십시오 sudo.
  2. @mikewhat이 언급했듯이 이것은의 이상한 사용이며 줄 앞에 cron배치하는 것이 좋습니다 ./etc/rc.localexit 0
  3. 원하는 것을 정확하게 알려 주면 로그 또는 구성 옵션으로 안내 할 수 있습니다 (시작시 네트워크 서비스를 다시 시작하는 것은 약간 역겨운 느낌입니다).
  4. 대부분의 시스템 @reboot에서는 하드 셧다운 또는 충돌 후에도 실행해야하지만 YMMV와 같이 다른 크론 구현이 있습니다. 다른 곳에서 의견을 보았습니다.

편집 (2016/02/17) : 절대 경로에서 잘못된 흐림을 제거했습니다. kudos @muru
EDIT (2016/10/17) : 종료 노트 추가
EDIT (2017/09/11) : 수정 된 종료 노트. 확실하지 않습니다.


좋아, 분명히하고 싶다면 etc/rc.local, sudo없이 전체 명령을 작성해야합니다 . 그렇다면 그것은 단지 ifdown eth0 && sudo ifup -v eth0 exit 0
Lottie

cron용도 PATH에 나와 /etc/environment있는 않는다, /sbin.
muru

@ mikewhatever가 제안한 작업을 수행했으며 작동했습니다. 감사합니다
Lottie

1
@TheSchwa해야합니다. 12.04 이후 적어도 /etc/pam.d/cron하중은 pam_env, 그래서 /etc/environment읽기 및 기본되어야 PATH사용 설정한다. 이 답변은 12.04가 나오기 직전에 게시되었습니다.
muru

2
@TheSchwa cron의 재부팅이 콜드 부팅에서 실행되지 않는다는 설명이 잘못되었습니다. 재부팅 데드 라인은 crond 데몬이 시작될 때 실행됩니다. 그것은 웜 부팅이든 콜드 부팅이든 부팅이 없었는지 여부이며 수동으로 크론 드를 종료하고 다시 시작했습니다. crond 데몬은 왜 다시 시작되는지 알지 못하거나 신경 쓰지 않습니다. 재부팅 할 때마다 재부팅 라인을 실행합니다.
커트 피츠너

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.