작업이 완료된 후 컴퓨터를 종료하는 방법은 무엇입니까?


25

학교에 가기 전에 보통 다운로드를 시작합니다.
특정 작업이 완료된 후 필요한 저장을 자동으로 수행하고 컴퓨터를 끄려면 어떤 명령을 사용해야합니까?
(업데이트 설치 후 또는 큰 파일 다운로드 후)

나는 또한 askubuntu에 교차 게시했습니다 .

답변:


25

시작한 작업에 따라 다릅니다. 그것은 몇 가지 명령 줄 도구 인 경우 당신은 간단하게 실행할 수 있습니다 halt또는 shutdown -h now:

  1. wget http://..../somelargefile; halt- halt이후에 실행됩니다wget

  2. wget http://..../somelargefile && halt- 오류가 halt없으면 wget반환됩니다

  3. wget http://..../somelargefile || halt- 반환 오류가 발생 halt하면 실행됩니다wget

이것에 대한 대안은 사용 중입니다 kshutdown-이 응용 프로그램에서 수행해야 할 작업 (재부팅 / 종료 / 최대 절전 모드 / 등 또는 명령 실행) 및 시간 (시간 후 또는 다른 응용 프로그램 종료시)을 지정할 수 있습니다. 이 도구를 사용하려면 올바른 프로세스를 선택해야합니다. 일부 업데이트 유틸리티는 몇 개의 하위 프로세스를 시작합니다.

K 셧다운


4
shutdown기다릴 시간을 줄 수도 있습니다 . 그 목적으로 kshutdown을 사용할 필요가 없습니다.
Cascabel

1
아니요, 그러나 shutdown실제 이벤트를 기다리는 방법은 없습니다.
Shadur

18

모든 프로세스에는 proc파일 시스템 의 프로세스 ID (pid)에 따라 이름이 지정된 디렉토리가 있습니다. 따라서 디렉토리가 반복적으로 존재하는지 확인하여 특정 프로세스가 종료 될 때까지 기다릴 수 있습니다.

이것을 사용하여 다음과 같이 프로세스 종료 후 시스템 종료를 수행 할 수 있습니다 (기다리는 pid로 2296을 대체하십시오).

su -c 'while [[ -d /proc/2296 ]]; do sleep 1; done; poweroff'

장점 :

  • 쉘 명령을 해제 한 후 종료 여부를 결정할 수 있습니다
  • 종료는 root로 발행되며 대기 명령은 반드시 root로 수행 될 필요는 없습니다 (늦은 sudo암호 프롬프트 프롬프트 를 해결할 필요가 없음 ).

단점 :

  • 프로세스가 종료되고 OS가 2 초 내에 새로 생성 된 프로세스에 대해 동일한 pid를 재사용 할 수 있습니다 (레이스 조건). 따라서 새 프로세스가 종료 될 때까지 계속 기다립니다.

2
요점 : 프로세스가 시작된 경우에도 작동합니다.
Heisenberg

ps동일한 터미널에서 여전히 열려있는 터미널에서 무언가를 시작한 경우 CMD의 PID를 파악하는 데 도움이됩니다. 프로세스가 다른 터미널에 있거나 grep을 통해 ps 출력을 ps -elf | grep <command_related_word>
파이프

pgrep일명 프로세스 grep을 기반으로 내 대답을 더 잘 확인하십시오 ...
Gilles Quenot

이 명령을 백그라운드에 어떻게 넣을 수 있습니까?
DerWeh

1
@DerWeh 쉘 스크립트로
감싸서

3

&&||연산자를 사용하여 명령을 함께 연결할 수 있습니다 . 예를 들면 다음과 같습니다.

apt-get update && sleep 2 && init 0

aptitude를 사용하여 시스템을 업데이트하고 2 초 동안 기다린 후 시스템에 따라 실제로는 시스템 전원을 끄지 않을 수도 있습니다.

아마도 웹 브라우저와 같이 좀 더 임의의 작업을 수행 한 후 하나 이상의 작업을 수행하려면 다운로드 파일을보고 다운로드가 실제로 완료되었는지 확인하기 위해 추가 로직이 필요하지만 셸 로직은 변경되지 않습니다.


3

이미 시작된 프로세스를 모니터하려는 경우 에서이를 수행 할 수 있습니다 .

# while pgrep &>/dev/null -f process_name; do sleep 60; done; shutdown -h now

1

sentinella라는 이름의 응용 프로그램이 있으며 GUI를 통해이를 수행 할 수 있습니다. 센티넬 라

그것을 설치하기 위해 :

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