Ubuntu 14.04 LTS x64를 실행하는 가상 서버가 있고 시스템이 충돌할 경우 시스템과 함께 재부팅하고 다시 시작하는 영구 프로세스를 생성하고 싶습니다.
이를 위해 etc 디렉토리의 "inittab"에 다음 줄을 추가했습니다.
test:5:respawn:echo "HELLO TEST" > /test.log
sometestname:234:/var/path/to/process/myprocess
"init q" 또는 "telinit q"를 실행한 후에는 아무 일도 일어나지 않습니다. test.log 파일이 생성되지 않고 프로세스가 시작되지 않으며(pstree를 사용할 때 나열되지 않음) 시스템 로그에 아무것도 없습니다. 서버를 다시 시작해도 도움이 되지 않았습니다.
또한 다음을 사용하여 "/etc/systemd/system/"에 새 "myprocess.service"를 생성하여 systemd를 사용하여 새 서비스를 생성해 보았습니다.
[Unit]
Description=Process Name
[Service]
ExecStart=/var/path/to/process/myprocess
Restart=restart-always
[Install]
WantedBy=multi-user.target
마찬가지로 서버를 다시 시작한 후에는 해당 프로세스가 더 이상 존재하지 않습니다.
Ubuntu에서 영구 프로세스를 만드는 다른 방법이 있습니까?
또한 프로세스는 서버 역할을 하지만 사용자 입력도 허용할 수 있습니다. 대부분의 경우 백그라운드 프로세스로 실행되므로 기본 콘솔에 "연결"하여 일부 명령을 실행한 다음 나중에 분리할 수 있습니까? 퍼티를 사용하여 원격으로 서버에 액세스하고 있습니다.
답변1
크론탭을 사용할 수 있습니다. crontab은 매분마다 프로세스를 시작할 수 있으며, 이미 실행 중인지 확인하고 그렇다면 종료해야 합니다.http://linux.die.net/man/1/crontab
답변2
inittab은 프로세스가 너무 빨리 종료되었음을 인식하고 중지합니다. 60초 동안 기다린 후 종료되는 작은 쉘 스크립트를 사용해 보십시오. echo 명령이 제대로 작동하지 않습니다.