어제 자기 전에 긴 작업을 시작했는데, 일어나기 전에 끝날 것 같아서 사용했어요.
./command && sudo poweroff
내 시스템은 비밀번호를 묻지 않도록 구성되어 있으므로 sudo poweroff
이 명령이 완료된 후 시스템이 종료되어야 합니다.
하지만 여전히 실행 중이므로 이제 다른 작업에 시스템을 사용하고 싶습니다. 백그라운드에서 명령을 실행하는 것은 문제가 되지 않지만 시스템이 언제든지 종료될 가능성이 있습니다.
첫 번째 명령이 완료될 때까지 실행되도록 하면서 명령이 실행되는 것을 zsh
방지 하는 방법이 있습니까 ?poweroff
이런 경우에도 /etc/sudoers
비밀번호를 묻는 메시지가 표시되도록 파일을 편집하는 것이 도움이 될까요?
답변1
귀하의 의견에서 명시한 대로 대화형 셸의 전경에서 여전히 실행 중이므로 를 누를 수 있어야 합니다 Ctrl+Z.
이로 인해 작업이 중단됩니다 ./command
. SIGTSTP 신호가 실제로 차단되고 이 경우(가능성이 낮음) 종료(0)가 선택되지 않는 한 ./command
종료 상태는 0이 아니므로(128 + SIGTSTP, 일반적으로 148) sudo poweroff
실행되지 않습니다.
./command
그런 다음 포그라운드 또는 백그라운드에서 사용하거나 재개할 수 있습니다 .fg
bg
다음을 사용하여 이를 테스트할 수 있습니다.
sleep 10 && echo poweroff
를 누르고 나중에 사용/복원하면 poweroff
출력이 없다는 점에 유의하세요.Ctrl+Zfg
bg
또는
sleep 10 || echo "failed: $?"
failed: 148
클릭해서 확인하세요 Ctrl+Z.
이는 zsh
start 에 유효하며 사용한다고 가정 합니다 ./command && sudo poweroff
. 다른 쉘에서는 작동하지 않을 수 있으며 (./command && sudo poweroff)
서브쉘이나 { ./command && sudo poweroff; }
복합 명령의 일부와 같은 다른 방법으로 시작하면 ( zsh
대부분의 다른 쉘과 달리 서브쉘로 변환되므로 그대로 재개할 수 있습니다) 일시 중지되었을 때 전체였습니다).
답변2
일시적으로 /sbin/poweroff의 이름을 바꿀 수 있습니다.
답변3
첫 번째 명령이 완료될 때까지 실행되도록 하면서 zsh가 poweroff 명령을 실행하지 못하도록 하는 방법이 있습니까?
gdb
실행중인 프로세스의 메모리를 편집하는 것과 같은 것을 사용하지 않으면 이것이 가능하지 않다고 생각합니다.
이 경우 비밀번호를 묻는 메시지가 표시되도록 /etc/sudoers 파일을 편집하는 것이 여전히 도움이 됩니까?
도움이 될 것입니다.