첫 번째 명령을 계속 실행하면서 체인의 두 번째 명령을 차단하려면 어떻게 해야 합니까?

첫 번째 명령을 계속 실행하면서 체인의 두 번째 명령을 차단하려면 어떻게 해야 합니까?

어제 자기 전에 긴 작업을 시작했는데, 일어나기 전에 끝날 것 같아서 사용했어요.

./command && sudo poweroff

내 시스템은 비밀번호를 묻지 않도록 구성되어 있으므로 sudo poweroff이 명령이 완료된 후 시스템이 종료되어야 합니다.

하지만 여전히 실행 중이므로 이제 다른 작업에 시스템을 사용하고 싶습니다. 백그라운드에서 명령을 실행하는 것은 문제가 되지 않지만 시스템이 언제든지 종료될 가능성이 있습니다.

첫 번째 명령이 완료될 때까지 실행되도록 하면서 명령이 실행되는 것을 zsh방지 하는 방법이 있습니까 ?poweroff

이런 경우에도 /etc/sudoers비밀번호를 묻는 메시지가 표시되도록 파일을 편집하는 것이 도움이 될까요?

답변1

귀하의 의견에서 명시한 대로 대화형 셸의 전경에서 여전히 실행 중이므로 를 누를 수 있어야 합니다 Ctrl+Z.

이로 인해 작업이 중단됩니다 ./command. SIGTSTP 신호가 실제로 차단되고 이 경우(가능성이 낮음) 종료(0)가 선택되지 않는 한 ./command종료 상태는 0이 아니므로(128 + SIGTSTP, 일반적으로 148) sudo poweroff실행되지 않습니다.

./command그런 다음 포그라운드 또는 백그라운드에서 사용하거나 재개할 수 있습니다 .fgbg

다음을 사용하여 이를 테스트할 수 있습니다.

sleep 10 && echo poweroff

를 누르고 나중에 사용/복원하면 poweroff출력이 없다는 점에 유의하세요.Ctrl+Zfgbg

또는

sleep 10 || echo "failed: $?"

failed: 148클릭해서 확인하세요 Ctrl+Z.

이는 zshstart 에 유효하며 사용한다고 가정 합니다 ./command && sudo poweroff. 다른 쉘에서는 작동하지 않을 수 있으며 (./command && sudo poweroff)서브쉘이나 { ./command && sudo poweroff; }복합 명령의 일부와 같은 다른 방법으로 시작하면 ( zsh대부분의 다른 쉘과 달리 서브쉘로 변환되므로 그대로 재개할 수 있습니다) 일시 중지되었을 때 전체였습니다).

답변2

일시적으로 /sbin/poweroff의 이름을 바꿀 수 있습니다.

답변3

첫 번째 명령이 완료될 때까지 실행되도록 하면서 zsh가 poweroff 명령을 실행하지 못하도록 하는 방법이 있습니까?

gdb실행중인 프로세스의 메모리를 편집하는 것과 같은 것을 사용하지 않으면 이것이 가능하지 않다고 생각합니다.

이 경우 비밀번호를 묻는 메시지가 표시되도록 /etc/sudoers 파일을 편집하는 것이 여전히 도움이 됩니까?

도움이 될 것입니다.

관련 정보