답변:
이를 수행하는 가장 좋은 방법은 30 분마다 Ubuntu를 다시 시작하려는 이유에 따라 다릅니다 .
따라서 왜 원하는지 설명하기 위해 질문을 편집하는 것이 좋습니다.
사람들이 로컬 또는 원격으로 컴퓨터를 사용하고 있다고 가정하면 경고없이 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 cron
및 man 5 crontab
.+5
긴 사용자가 후 재부팅을 경고하고있다 방법을 변경하려면 뭔가 다른.0,30
원하는 경우 분 미만에서도 작동합니다. (마찬가지로 20 분마다 */20
또는 글을 쓸 수 0,20,40
있습니다.)/sbin
에 PATH
의 상단에 지정된 변수 /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 [
테스트 자체가 수행되는 방법을 볼 수 있습니다.
세션 관리자에게 재부팅하고 싶다고 말함으로써이 작업을 좋아합니다. 루트 권한없이이 작업을 수행 할 수 있으며, 시스템이 재부팅 될 것이라는 경고 창이 표시됩니다. 원할 경우 재부팅을 취소 할 수도 있습니다.
gnome-schedule
우분투 소프트웨어 센터에서 설치 하십시오. 추가로 설치하지 않으려면 터미널 웨이로 설치하십시오.
gnome-schedule
대시에서 열고 새 반복 작업을 생성 한 후 다음 옵션을 설정하십시오.
dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
다른 옵션은 기본값으로 두십시오. 추가를 클릭 하십시오 .
터미널에서 실행하십시오.
crontab -e
이 줄을 추가하십시오 :
0,30 * * * * DISPLAY=:0 dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
저장하고 종료하십시오. 사용한다고 가정하면 nano
(기본 설정) Ctrl + o 및 Ctrl + x를 누릅니다 .
DISPLAY가 실제로와 다른 경우에는 작동하지 않으므로이 :0
방법을 사용하지 않는 것이 좋습니다. 그러나 솔직히 30 분마다 컴퓨터를 재부팅하는 경우 DISPLAY는 항상으로 표시됩니다 :0
.
위에서 설명한 두 가지 방법 모두 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을 수동으로 제거하지 않았다고 가정하면 모든 환경에서 작동합니다.
sudo crontab -e
명령 행에서 실행 하여이 행을 파일에 추가하십시오.
0,30 * * * * reboot
이것은 시스템이 reboot
루트로 30 분마다 명령을 실행하도록 지시합니다 . 시간 구문에 대한 개요는 여기를 참조하십시오 : http://linuxmoz.com/crontab-syntax-tutorial/
reboot
로 실행해야하는 대로 작동하지 않으며, root
이를 사용자의 개인 crontab에 추가하므로 루트가 아닌 사용자로 실행됩니다. ( 암호를 묻는 메시지가 표시되고 실패 sudo reboot
하기 때문에 동일한 기능 도 작동 sudo
하지 않습니다.) /etc/crontab
대신이 구문을 사용해야합니다 (구문이 약간 다릅니다).
sudo crontab -e
cron 항목을 발행 한 후 작성할 수 있습니다.
cron
30 분마다 작업을 예약하는 데 사용 합니다. 해당 작업을 단순히 다음과 같은 쉘 스크립트로 지정하십시오.
reboot
그 안에.
이후 cron
루트로 실행, 당신은 권한의 측면에서 아무것도 특별 할 필요가 없습니다.
예, 사실 저는 시스템에 사용자 기반 크론 탭을 허용하지 않습니다 (사용자가 사용자 수준의 예약 된 작업을 수행 할 수있는 더 좋은 방법이 있습니다) cron은 시스템 자동화를 위해 처음부터 설계되었으며 사용자는 일반 일정을 예약하지 않았습니다 작업. 로그 회전과 같은 것 (오늘날 여전히 발생)
재부팅하려면 루트로 실행해야하며, 대안은 고정 비트로 설정하는 것입니다. 정상 사용자로 실행하면 실제로 루트로 실행되고 예상대로 작동하지만 정규식을 허용하기 위해 서버를 열면됩니다. 사용자는 마음대로 재부팅 할 수 있습니다.
SUDO 호출을 자동화 할 수도 있지만 SUDO를 사용하여 암호 필요를 자동화 할 수 있는지 잘 모르겠습니다 (자주 사용하지 않습니다. 루트로 바로 넘어가는 것을 선호합니다) SU를 사용하는 쉘)
시스템 전체 crontab에서 설정하면 모든 것이 루트로 실행되므로 내 진술이 정확합니다 (시스템 전체를 사용해야한다고 언급하지 않았습니다)
당신의 질문에 관해서는 "왜 스크립트로 감싸 야합니까?" 글쎄, 왜 안돼? OP가 쉘 스크립트에 넣은 경우 나중에 언젠가 추가해야 할 경우 crontab을 열어 작업을 찾고 제거하고 쉘 스크립트로 바꾸지 않고 스크립트에 추가하면됩니다. 그런 다음 old + new를 사용하여 스크립트를 작성하십시오.
Ultrix / Solaris와 VAX까지 거슬러 올라가는 시스템을 다루는 Sys Admin / Developer로서 20 년 동안 한 가지 중요한 점을 가르쳐주었습니다.
처음에 쉽게 만들 수 있다면 평생 동안 쉬워집니다.
나는 많은 현대 시스템 관리자들이 가지고있는이 "최소한"태도를 얻지 못합니다. 가능한 한 적은 일을하는 것이 성공의 열쇠입니다. 요즘 대부분의 서버는 내가 처음 시작한 것보다 쉽게 20 배 이상 강력하며, 이런 종류의 시나리오 (쉘 스크립트에서 래핑)가 권장되는 방식이므로 지금은하지 말아야 할 주장이 없습니다.
하드 코어 유닉스 / 리눅스로 가고 싶지 않다면이 모든 것을 cron 항목에 태그하고 모든 것을 함께 수행해야하는 방식으로 파이프하십시오 :-)
그러나 나는 혼란을 겪고 있으며 요즘 많은 사람들이 깊은 곳에서 던져지고 일을하도록 지시 했으므로 새로운 기술에 대해 배우고 배울 수있는 시간 (및 일반적으로 성향)이 없기 때문에 이 경우 오래된 것) 또는 작업 이외의 물건으로 놀고 싶을 수도 있습니다.
나는 개인적으로, 내가 운영하는 서버 중 하나만 사용하여 순전히 놀러 다닐 수 있으므로 다음과 같은 것을 테스트 할 수 있습니다 ... A 또는 B가 더 좋습니다. 이.