여러 서버에서 원격으로 정리 명령을 실행하려고 합니다. 이는 장치이기 때문입니다. 로컬에서 cron 작업과 같은 항목을 변경하면 지원이 중단됩니다.
나는 이것을하려고 노력하고 있습니다 :
ssh [email protected] "nohup fstrim /data &"
명령은 실행되지만 문제는 nohup 등에도 불구하고 보안 셸이 열려 있다는 것입니다. ssh가 명령을 삭제하고 즉시 종료하도록 강제할 수 있나요?
방금 Google을 통해 비슷한 요청을 찾았습니다. 거기서 해결됨
screen -d -m ./script
아쉽게도 기기에 화면이 없습니다.
답변1
screen
원격 서버에 설치한 경우 fstrim
독립 실행형 screen
세션에서 명령을 실행하는 이 방법을 시도해 보십시오. 현재로서는 ssh
즉각적인 종료처럼 보입니다.
ssh [email protected] screen -S fstrim -md fstrim /data
다음 명령을 사용하여 세션에 다시 연결할 수 있습니다.
ssh -tt [email protected]. screen -r fstrim
그리고 다시 연결 끊기Ctrl a(Ctrl) d
초기 명령이 작동하지 않는 이유는 다음 nohup
을 볼 수 있기 때문입니다.표준 출력터미널이 아니며 쓰기를 위해 설명자를 열어 둡니다. (사용해본 경우 ssh -tt
원격측에 의사장치가 생성되고 nohup
터미널이 표시됩니다.) 리디렉션을 통해표준 출력특히 예상대로 프로세스가 백그라운드에서 실행되도록 할 수 있습니다.
ssh -fn [email protected] "nohup fstrim /data >nohup.out &"
이제 이것에 대한 잔혹한 세부 사항을 읽으면 man nohup
무엇을 찾고 있는지 알 수 있습니다.
답변2
괜찮아요. 해결책을 찾았다고 생각합니다.
ssh [email protected] "nohup fstrim /data > /dev/null &"
답변3
atd
장치에서 실행되고 있습니까? 그렇다면 at
즉시 작업 일정을 계획할 수 있습니다.
ssh [email protected] "echo 'fstrim /data' | at now"
원격 세션은 작업 예약만 수행하므로 즉시 종료됩니다. 데몬은 atd
이를 실제로 실행하는 역할을 담당합니다.