30 분마다 자동으로 다시 시작하는 방법?


14

30 분마다 우분투 다시 시작을 예약하고 싶습니다. 명령이나 그래픽 방식이 있습니까?


12
궁금한 점이 있습니다. 30 분마다 다시 시작하는 목적은 무엇입니까?
Rafał Cieślak

답변:


30

이를 수행하는 가장 좋은 방법은 30 분마다 Ubuntu를 다시 시작하려는 이유에 따라 다릅니다 .

따라서 왜 원하는지 설명하기 위해 질문을 편집하는 것이 좋습니다.

30 분마다 재부팅하고 재부팅 할 때마다 사용자에게 경고합니다.

사람들이 로컬 또는 원격으로 컴퓨터를 사용하고 있다고 가정하면 경고없이 Ubuntu를 다시 시작하지 않는 것이 가장 좋습니다. 따라서 reboot명령을 예약하는 대신 명령을 예약 shutdown하여 사용자에게 경고하는 것이 좋습니다 .

5 분 전에 경고와 함께 30 분마다 종료를 예약하려면 다음에 추가하십시오 /etc/crontab.

#minute hour    mday    month   wday    user    command
*/30    *       *       *       *       root    shutdown -r +5

실제로 주먹 줄을 추가 할 필요는 없습니다. 명확성을 위해 포함 시켰습니다. 이미 존재하는 것과 같은 것입니다.

  • 이렇게하면 명령이 실행 된 -r후 5 분 ( +5) 후에 재부팅 ( )을 위해 시스템이 다운되도록 예약 됩니다. 30 분마다 표시됩니다 ( */30). 참조 man cronman 5 crontab.
  • 변경 +5긴 사용자가 후 재부팅을 경고하고있다 방법을 변경하려면 뭔가 다른.
  • 0,30원하는 경우 분 미만에서도 작동합니다. (마찬가지로 20 분마다 */20또는 글을 쓸 수 0,20,40있습니다.)
  • 만들기는 확실히 /sbinPATH의 상단에 지정된 변수 /etc/crontab. 그렇지 않으면 shutdown( command)이로 호출되어야합니다 /sbin/shutdown.

기계가 그 시간에 가동되어 실행 중이면 명령은 항상 30 분 표시로 실행됩니다 . 이로 인해 종료가 30 분마다 발표되고 5 분 35 분 후에 수행됩니다.

  • 여기서 한 가지 이점은 관리자가로 방금 발표 한 종료를 취소 할 수 있다는 것입니다 sudo shutdown -c.
  • 예약 된 명령을 실행할 특정 시간 동안 컴퓨터가 작동 중지되면 컴퓨터가 실행되지 않습니다. 그래도 충분하지 않으면 재부팅을 다르게 예약해야합니다. (이것은 특정 용도에 국한된 것이 아니라 shutdown예약하는 경우에도 동일하게 적용됩니다 reboot.)이 경우 특정 요구 사항을 설명하기 위해 질문을 편집하십시오. (권장 사항 anacron이지만 시간 간격이 너무 짧습니다.)

관리자가 자동 ​​재부트가 전혀 발생하지 않도록 쉽게 만들 수 있습니다.

관리자가 자동으로 예약 된 모든 재부팅을 쉽게 중단 할 수 있도록이를 설정하고자 할 수 있습니다.

#minute hour    mday    month   wday    user    command
*/30    *       *       *       *       root    [ -e /etc/noautoreboot ] || shutdown -r +5

라는 파일이 경우는 재부팅을 예약 할 것을 제외하고 - 오분 경고와 함께, 매 30 시간 -이 일정은 같은 방법으로 재부팅 noautoreboot존재 /etc.

  • 이 제어 파일은 다음을 사용하여 관리자가 만들 수 있습니다.

    sudo touch /etc/noautoreboot
    
  • 다음을 사용하여 삭제할 수 있습니다.

    sudo rm /etc/noautoreboot
    
  • 그것의 것을 참고 파일이 존재하는지 여부 , 여기에 포함되지 무엇을, 그 문제를.

  • 재부팅이 예정되어 사용자가 경고를하는 경우, 다음 파일이 생성되면, (즉시 곧) 재부팅은 여전히 발생합니다.

  • 어떻게 작동합니까? 다음 과 같이 단락 평가 또는 연산자 ( ||)를 축약 형으로 사용합니다.

    경우 /etc/noautoreboot 존재하지 않는 실행합니다 shutdown -r +5.

    이 답변은 어떻게 단락 설명 또는 운영자는 수행 할 수 if- then논리를. 간단하고 직관적이며 비공식적 인 설명을 위해 다음과 같이 명령을 읽을 수 있습니다.

    /etc/noautoreboot존재합니다! 또는을 실행하십시오 shutdown -r +5.

    참조 man [테스트 자체가 수행되는 방법을 볼 수 있습니다.


12

세션 관리자에게 재부팅하고 싶다고 말함으로써이 작업을 좋아합니다. 루트 권한없이이 작업을 수행 할 수 있으며, 시스템이 재부팅 될 것이라는 경고 창이 표시됩니다. 원할 경우 재부팅을 취소 할 수도 있습니다.

그래픽 방식-선호되는 방법

gnome-schedule우분투 소프트웨어 센터에서 설치 하십시오. 추가로 설치하지 않으려면 터미널 웨이로 설치하십시오.

gnome-schedule대시에서 열고 새 반복 작업을 생성 한 후 다음 옵션을 설정하십시오.

  • 설명 : 원하는 것
  • 명령: dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
  • 명령 바로 아래에서 X 응용 프로그램을 선택하십시오 .
  • 시간 및 날짜, 고급 :
    • 분 : 0,30

다른 옵션은 기본값으로 두십시오. 추가를 클릭 하십시오 .


터미널 방식-추가 소프트웨어 불필요

터미널에서 실행하십시오.

crontab -e

이 줄을 추가하십시오 :

0,30 * * * * DISPLAY=:0 dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot

저장하고 종료하십시오. 사용한다고 가정하면 nano(기본 설정) Ctrl + oCtrl + x를 누릅니다 .

DISPLAY가 실제로와 다른 경우에는 작동하지 않으므로이 :0방법을 사용하지 않는 것이 좋습니다. 그러나 솔직히 30 분마다 컴퓨터를 재부팅하는 경우 DISPLAY는 항상으로 표시됩니다 :0.

Gnome 또는 Unity를 사용하지 않습니까?

위에서 설명한 두 가지 방법 모두 Gnome 세션과 Unity 모두에서 발견되는 일부 그놈 구성 요소에 따라 다릅니다. 다른 환경 (예 : Kubuntu의 KDE, Kubuntu의 LXDE ...)에서이 작업을 수행하려면 대신이 명령으로 명령을 바꾸는 것이 좋습니다.

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

이것은 확인을 요구하지 않고 즉시 다시 시작되지만 물론 ConsoleKit을 수동으로 제거하지 않았다고 가정하면 모든 환경에서 작동합니다.


6

sudo crontab -e명령 행에서 실행 하여이 행을 파일에 추가하십시오.

0,30 * * * * reboot

이것은 시스템이 reboot루트로 30 분마다 명령을 실행하도록 지시합니다 . 시간 구문에 대한 개요는 여기를 참조하십시오 : http://linuxmoz.com/crontab-syntax-tutorial/


3
reboot로 실행해야하는 대로 작동하지 않으며, root이를 사용자의 개인 crontab에 추가하므로 루트가 아닌 사용자로 실행됩니다. ( 암호를 묻는 메시지가 표시되고 실패 sudo reboot하기 때문에 동일한 기능 도 작동 sudo하지 않습니다.) /etc/crontab대신이 구문을 사용해야합니다 (구문이 약간 다릅니다).
Eliah Kagan

1
sudo crontab -ecron 항목을 발행 한 후 작성할 수 있습니다.
Tass

-3

cron30 분마다 작업을 예약하는 데 사용 합니다. 해당 작업을 단순히 다음과 같은 쉘 스크립트로 지정하십시오.

reboot

그 안에.

이후 cron루트로 실행, 당신은 권한의 측면에서 아무것도 특별 할 필요가 없습니다.

최신 정보

예, 사실 저는 시스템에 사용자 기반 크론 탭을 허용하지 않습니다 (사용자가 사용자 수준의 예약 된 작업을 수행 할 수있는 더 좋은 방법이 있습니다) cron은 시스템 자동화를 위해 처음부터 설계되었으며 사용자는 일반 일정을 예약하지 않았습니다 작업. 로그 회전과 같은 것 (오늘날 여전히 발생)

재부팅하려면 루트로 실행해야하며, 대안은 고정 비트로 설정하는 것입니다. 정상 사용자로 실행하면 실제로 루트로 실행되고 예상대로 작동하지만 정규식을 허용하기 위해 서버를 열면됩니다. 사용자는 마음대로 재부팅 할 수 있습니다.

SUDO 호출을 자동화 할 수도 있지만 SUDO를 사용하여 암호 필요를 자동화 할 수 있는지 잘 모르겠습니다 (자주 사용하지 않습니다. 루트로 바로 넘어가는 것을 선호합니다) SU를 사용하는 쉘)

시스템 전체 crontab에서 설정하면 모든 것이 루트로 실행되므로 내 진술이 정확합니다 (시스템 전체를 사용해야한다고 언급하지 않았습니다)

당신의 질문에 관해서는 "왜 스크립트로 감싸 야합니까?" 글쎄, 왜 안돼? OP가 쉘 스크립트에 넣은 경우 나중에 언젠가 추가해야 할 경우 crontab을 열어 작업을 찾고 제거하고 쉘 스크립트로 바꾸지 않고 스크립트에 추가하면됩니다. 그런 다음 old + new를 사용하여 스크립트를 작성하십시오.

Ultrix / Solaris와 VAX까지 거슬러 올라가는 시스템을 다루는 Sys Admin / Developer로서 20 년 동안 한 가지 중요한 점을 가르쳐주었습니다.

처음에 쉽게 만들 수 있다면 평생 동안 쉬워집니다.

나는 많은 현대 시스템 관리자들이 가지고있는이 "최소한"태도를 얻지 못합니다. 가능한 한 적은 일을하는 것이 성공의 열쇠입니다. 요즘 대부분의 서버는 내가 처음 시작한 것보다 쉽게 ​​20 배 이상 강력하며, 이런 종류의 시나리오 (쉘 스크립트에서 래핑)가 권장되는 방식이므로 지금은하지 말아야 할 주장이 없습니다.

하드 코어 유닉스 / 리눅스로 가고 싶지 않다면이 모든 것을 cron 항목에 태그하고 모든 것을 함께 수행해야하는 방식으로 파이프하십시오 :-)

그러나 나는 혼란을 겪고 있으며 요즘 많은 사람들이 깊은 곳에서 던져지고 일을하도록 지시 했으므로 새로운 기술에 대해 배우고 배울 수있는 시간 (및 일반적으로 성향)이 없기 때문에 이 경우 오래된 것) 또는 작업 이외의 물건으로 놀고 싶을 수도 있습니다.

나는 개인적으로, 내가 운영하는 서버 중 하나만 사용하여 순전히 놀러 다닐 수 있으므로 다음과 같은 것을 테스트 할 수 있습니다 ... A 또는 B가 더 좋습니다. 이.


내 업데이트를 참조하십시오 .. 원한다면 지금 1 포인트를 다시 줄 수 있습니다 ;-)
shawty

다시 시도하십시오 ... 인내심 ...
shawty

2
이것은 이제 더 이상 대답이 아닙니다! (또한, 당신은 스티커 비트setuid 비트를 혼동하고 있습니다.)
Eliah Kagan

예, 그것은 답변입니다, 나는 그것을 입력하고 답변으로 추가했습니다. 그래서 그것은 답변입니다!
shawty
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.