지정된 시간에 Mac을 강제로 종료하려면 어떻게해야합니까?


19

지정된 시간에 컴퓨터를 강제로 종료하는 자동 종료 앱을 찾고 있습니다.

이것의 가장 중요한 부분은 종료가 취소 될 수 없다는 것입니다 (프로세스가 극도로 번거로운 경우가 아니라면).


"앱"은 무슨 뜻입니까? GUI 프로그램이거나 시작 (아래에 제안)이 허용됩니까? GUI 응용 프로그램을 수행하는 경우 어떻게 하시겠습니까? 실행할 때 컴퓨터를 종료해야 할 시간을 묻는 메시지가 표시됩니까?
TJ Luoma

답변:


25

좋아, 이전 답변에 더하여, cron (내장 UNIX 스케줄 서비스)을 통해 예약 된 종료 명령을 실행하는 방법을 안내 할 수 있습니다.

루트로 실행되고 강제됩니다.

  • 터미널 열기 (/ 응용 프로그램 / 유틸리티 / 터미널)
  • 입력 sudo crontab -e

로그인 비밀번호를 입력 한 후 Enter를 누르십시오.

이제 텍스트 편집기 (vim)에있게됩니다. 다음 키 입력을주의해서 입력하십시오.

  • i한 번 누르면 텍스트를 입력 할 수 있습니다.

매일 오전 2시에 머신을 종료한다고 가정하면 다음과 같이 입력합니다.

* 2 * * * /sbin/shutdown -h now

매일 오전 2시 30 분에 시스템을 종료하려면 다음을 입력하십시오.

30 2 * * * /sbin/shutdown -h now
  • 입력 한 후 esc
  • 그런 다음 shift+ z shift+ z(대문자 "z")를 두 번 눌러 변경 사항을 기록하고 편집기를 종료하십시오.

이제 시작한 명령 행으로 되돌아 가야합니다.

끝났습니다!


sudo거기 에 두지 않아도 됩니까? 아마 그게 전화를 끊을 수도 있다는 것을 알고 있지만 실행하려면 루트 권한이 있어야합니다 shutdown.
daviesgeek

예외가 필요하지 않습니다. 놀라운 답변입니다. 특히 내가 당신의 무례하게 대답 한 후에 매우 놀랐습니다. 도와 주셔서 감사합니다
Harry

3
@daveisgeek-당신은 완전히 맞습니다. 그러나 우리는 sudo로 crontab을 시작합니다. 이것은 우리가 루트의 crontab을 편집하고 있으므로 예약 된 모든 명령이 해당 사용자로 실행됨을 의미합니다.
macaco

이봐, 나 이러고 약속 한 시간에이 컴퓨터가 10 분 후에 종료 될 것이라는 대화 상자가 나왔니? 그리고 취소하라는 메시지가 표시됩니다. 그것이 cron 일의 결과인지, 또는 에너지 절약 일의 결과인지 모르겠습니다. cron은 취소 대화 상자없이 강제로 종료해야합니까?
Harry

3
shutdown/sbin크론의 기본 $ PATH에 아마이다. 수정하려면 sudo crontab -e다시 작업을 수행하고 입력 dd하여 줄을 삭제하고 (파일이 위에서 링크 한 것으로 가정) 줄을로 다시 입력하십시오 30 22 * * * /sbin/shutdown -h now.
nohillside

13

그래도 취소 할 수 있습니다.


에 정지 yymmddhhmm:

shutdown -h 1109211555

4 분 안에 정지 :

shutdown -h +4

/Library/LaunchAgents/me.lri.forceshutdown.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>me.lri.forceshutdown</string>
    <key>ProgramArguments</key>
    <array>
        <string>shutdown</string>
        <string>-h</string>
        <string>now</string>

    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>23</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
</dict>
</plist>

plist가 일반 사용자가 소유 한 경우로드하려고하면 오류가 발생합니다 launchctl: Dubious ownership on file (skipping).

sudo chown root /Library/LaunchAgents/me.lri.forceshutdown.plist

에이전트는 로그 아웃했다가 다시 로그인하거나 다음을 사용하여로드 할 수 있습니다.

sudo launchctl load /Library/LaunchAgents/me.lri.forceshutdown.plist

sudo crontab -e

`08 16 * * * /sbin/shutdown -h now`

이것은 일반적인 비 강제 종료를 수행합니다.

osascript -e 'tell app "System Events" to shut down'

/ Library / LaunchAgents /에서 시작된 에이전트에 shutdown 명령을 추가하면 작동하지 않으며 'console'은 'shutdown : NOT super-user'를 기록합니다. 아마도 이것은 / System / Library / LaunchAgents에서 작동했을 것입니다 (그러나 거기에 물건을 넣지 않아야합니다 :-)) 정상적인 종료 만 필요했기 때문에 osascript와 함께 ~ / Library / LaunchAgents에 넣었습니다. /bla.shutdown.plist. 잘 작동했습니다.
commonpike

그래도 <code> osascript -e '
텔러

이것이 유일한 정답입니다. (내 의견으로는)
CousinCocaine

9

시스템 환경 설정> 에너지 절약> 스케줄에서 스케줄 할 수 있습니다 . 이것이 강제 종료를 시작할지 확실하지 않으므로 시도해야합니다. 그러나 이는 예약 된 전원 차단 / 작동을 자동화하는 기본 제공 옵션입니다.

  • 터미널 명령을 사용하여 시스템을 강제로 종료 할 수도 있습니다 (루트 필요).

    shutdown -h now

    당신은에 그 명령을 넣을 수 launchd에 또는 크론 예약 된 작업. 두 서비스에 대한 자세한 내용이 기사 를 확인하십시오 .

  • 적절하게 이름이 지정된 iWannaSleep 와 같은 응용 프로그램을 체크 아웃 할 수도 있습니다 ( 종료 강제 종료 인지 확실하지 않음 ).


뭐...??? 앱을 찾고 있습니다.
Harry

2
당신은 덜 배고픈 것처럼 보일 수도 있지만 내 대답을 다시 읽으면 내가 앱을 추천한다는 것을 알 수 있으며 약간의 독립적 인 연구를하면 실제로이 능력을 가진 몇 가지 응용 프로그램이 더 있음을 알 수 있습니다!
macaco

iWannaSleep은 사람들이 Google에서 추천하는 첫 번째 결과이며 원하는 것을하지 않습니다. 그리고 컴퓨터를 종료하는 유닉스를 배우는 것이 좋습니다?
Harry

3
내장 도구를 사용하여 원하는 것을 달성하는 효과적인 방법이므로 권장합니다. 귀하의 요구에 맞는 응용 프로그램을 찾을 수 없으면 내 제안에 따라 무언가를 찾아야 할 수도 있습니다.
macaco

1
에너지 절약»스케줄은 종료하기 10 분 전에 사용자에게 프롬프트하고 프로세스 취소를 제안하기 때문에 좋은 대답 이 아닙니다 .
TJ Luoma

3

shutdown미래에 언제든지 종료를 예약하는 데 직접 사용할 수 있습니다 .

shutdown -h time

여기서 time은 미래의 시간을 + number 또는 yymmddhhmm 형식 중 하나로 지정합니다. 여기서 년, 월 및 일은 현재 시스템 값으로 기본 설정 될 수 있습니다. 첫 번째 형식은 시스템을 수 분 안에, 두 번째 형식은 지정된 절대 시간에 다운시킵니다.


2
cd ~/Downloads/

curl --remote-name http://dl.dropbox.com/u/18414/ase/com.tjluoma.forceshutdown.plist

# 아래 참고 참조

sudo mv com.tjluoma.forceshutdown.plist /Library/LaunchAgents

sudo chown root:wheel /Library/LaunchAgents/com.tjluoma.forceshutdown.plist

sudo launchctl load /Library/LaunchAgents/com.tjluoma.forceshutdown.plist

노트 :

기록 된대로 plist는 매일 오후 11시 (현지 시간)에 컴퓨터를 종료시킵니다.

시간을 변경하려면 텍스트 편집기에서 스크립트를 편집하십시오. 여기에서 발췌 한시 및 분 키를 변경하십시오.

<dict>
    <key>Hour</key>
    <integer>23</integer>
    <key>Minute</key>
    <integer>0</integer>
</dict>

(24 시간제 사용 참고)


2

더 좋은 예약 된 종료

예약 된 시간에 Mac안전하게 종료 하려면 Power Manager를 고려하십시오 . 응용 프로그램이 프로세스를 차단하지 않으면 서 잘 종료됩니다.

  • 모든 활성 사용자에게 충분한 알림이 제공됩니다.
  • 종료가 시작되기 직전에 큰 경고가 표시됩니다.
  • 실행중인 응용 프로그램은 종료해야합니다.
  • 좋은 요청을 무시하는 응용 프로그램은 더 확실하게 종료됩니다.
  • Mac이 종료되기 전에 로그 아웃이 완료됩니다.

불량 응용 프로그램이나 프로세스에서 이러한 단계를 차단하기가 매우 어렵습니다.

왜 안돼? shutdown

를 사용 shutdown하면 그래픽 응용 프로그램을 포함하여 Mac의 모든 프로세스가 강제 종료됩니다. 많은 응용 프로그램에서 이것은 공격적인 동작이며 응용 프로그램에서 상태 나 데이터를 저장할 수있는 많은 기회를 제공하지 않습니다.

일정 도우미

Power Manager에는 일정을 종료하기 위한 일정 도우미 작업이 포함되어 있습니다.

전원 관리자-일일 작업 전원 끄기

공개 : 저는 Power Manager를 만드는 회사와 협력합니다.


0

Apple의 기술 노트를 살펴 보겠습니다.


고마워, 이제 어떻게해야합니까?
Harry

SendAppleEventToSystemProcess (kAEShutDown)을 사용하고 killall -u username 명령을 사용하여 모든 앱을 종료 할 수 있습니다 (취소 할 수 없기 때문에) 타이머 클래스를 확인하고 싶을 수도 있습니다 : developer.apple.com/library/ mac / # documentation / Cocoa / Reference /…
사만다 카타니아

1
훌륭한 기사이지만 OP가 cron 사용에 대해 고민하거나 시작 했으므로이 문제에 대한 자신의 솔루션을 코딩하려고하는 것 같습니다.
macaco

1
이 이론적으로 질문에 대답 할 수 있습니다 동안, 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
daviesgeek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.