`& disown` 및 `setsid`는 ssh에서 작동하지 않습니다! 그들은 작동하지 않는 "(sd-pam)" 프로세스를 시작했습니다.

`& disown` 및 `setsid`는 ssh에서 작동하지 않습니다! 그들은 작동하지 않는 "(sd-pam)" 프로세스를 시작했습니다.

지정된 시간 이후에 서버를 다시 시작하려고 합니다.

서버에 로그인하는 경우 다음 명령을 사용하여 이를 달성할 수 있습니다.

sleep 10 && reboot

쉘이 종료되더라도 이 명령을 (tmux 또는 screen 없이) 유지하기 위해 다양한 옵션을 시도했지만 가장 적합했습니다 setsid.& disown

setsid bash -c 'sleep 10 && reboot' &

... 또는:

bash -c 'sleep 10 && reboot' & disown

지금까지는 이 명령이 호출되는 셸을 닫아도 서버에서 제대로 작동합니다. 하지만 서버를 다시 시작하고 싶기 때문에SSH명령을 호출한 후 즉시 종료합니다(지정된 sleep시간 동안 기다리지 않고). 위에서 설명한 명령을 사용하면 다음과 같이 이 작업을 수행할 수 있을 것 같습니다.

ssh user@server -t "setsid bash -c 'sleep 10 && reboot' &"

... 또는:

ssh user@server -t "bash -c 'sleep 10 && reboot' & disown"

그러나 흥미로운 점은 이러한 명령이 해당 이름으로 프로세스를 시작하고 지정된 시간이 (sd-pam)지나면 아무런 작업도 수행하지 않고 종료된다는 것입니다 . sleep그러나 이 명령을 정기적으로 실행하면 약 10% 정도 작동한다는 것을 알 수 있습니다. 이 동작을 조사한 결과 (sd-pam)프로세스가 여러 가지 방식으로 제한되어 있음을 발견했습니다(예: 파일을 읽고 쓸 수 없으므로 다시 시작 명령에서 오류가 발생하면 아무것도 기록할 수 없습니다).

모든 명령은 rootFedora 32의 사용자가 실행합니다.

편집하다:

@UlrichSchwarz에게 감사드립니다.이 트릭:

echo 'sleep 30; reboot' | at now

이는 다음에도 적용됩니다 ssh.

ssh user@server -t "echo 'sleep 30; reboot' | at now"

하는 것과 어떻게 at다른 가요?setsid& disown

답변1

shutdown 명령은 필요한 경우 나중에 활동을 예약할 수 있는 기능을 통해 원하는 작업을 수행할 것이라고 생각합니다. 예를 들어, 다시 시작하려면 "-r" 스위치를 사용하고 1분 동안 지연하려면 "+1" 스위치를 사용합니다. 그러나 종료하려면 sudo를 사용한 권한 상승이 필요합니다.

sudo shutdown -r '+1'

"+1" 대신 "now"를 사용하여 즉시 다시 시작할 수도 있습니다.

sudo shutdown -r now

관련 정보