로그인하지 않았을 때 시스템에서 실행할 작업 목록에 쉘 명령을 추가하는 쉬운 방법이 있습니까?
예를 들어:
내 시스템에 SSH로 연결하고 나중에 전자책을 읽기로 결정했지만 형식이 잘못되었습니다. Calibre를 사용하여 변환하지만 CPU에서 오랜 시간이 걸립니다. 그래도 서두르지 않기 때문에 SSH 세션을 종료하자마자(쉘 명령만 실행하면 됨) Calibre 변환 작업을 시작하도록 시스템에 지시하고 싶습니다. 그런 다음 SSH를 통해 다시 로그인하면 변환된 책이 나를 기다리고 있을 것입니다.
답변1
간단하지만 아마도 불편한 방법은 다음을 사용하여 명령을 실행하는 것입니다.북면로그아웃하기 전에 터미널에서 분리하세요.
nohup mycommand &
logout
nohup.out
이 명령의 모든 출력은 현재 디렉터리의 파일로 전송됩니다.
일반적으로 내부에서 명령을 실행하는 것이 더 편리합니다.화면또는멀티플렉서. 두 프로그램 모두 현재 터미널에서 세션을 분리하고 나중에 다시 연결할 수 있는 터미널을 터미널에 제공합니다.
screen
# inside the screen session
sleep 60; mycommand
# press Ctrl+A D to detach from the session
# now back in the original shell
logout
그런 다음 나중에:
screen -rd
# inside the screen session, you can see how your command is doing
…
exit
또 다른 가능성은 나중에 작업을 예약하는 것입니다. 이것at
명령을 사용하면 특정 시간에 작업을 예약할 수 있습니다(주기적으로 작업을 예약하는 cron용 일회성 위젯입니다). 명령이 출력을 생성하면 사용자에게 메일로 전송됩니다(로컬 메일을 실행한다고 가정).
echo 'mycommand' | at 23:05
답변2
screen
방금 (현재 " byobu
"로 액세스됨) 또는 세션 을 시작했습니다 tmux
. 원하는 대로 프로세스를 시작한 다음 연결을 끊으세요. 작업은 계속 실행되며 준비가 되면 다시 연결하여 세션으로 돌아갈 수 있습니다. 저는 몇 달 동안 스크린 세션을 실행해 왔으며 다음과 같이 미리 구성할 수 있습니다.
답변3
at
처리를 위해 일괄 작업을 제출하려면 이 명령을 사용합니다 . 하지만 실행하기 전에 로그아웃할 때까지 기다리지 않으므로 작업을 제출할 때 해당 작업이 nice
편집되었는지 확인하세요.