![exec -a를 사용하여 프로세스 이름을 지정하지만 CTRL-C의 영향을 받지 않고 백그라운드에서 실행합니다.](https://linux55.com/image/80622/exec%20-a%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EC%A7%80%EC%A0%95%ED%95%98%EC%A7%80%EB%A7%8C%20CTRL-C%EC%9D%98%20%EC%98%81%ED%96%A5%EC%9D%84%20%EB%B0%9B%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C%EC%97%90%EC%84%9C%20%EC%8B%A4%ED%96%89%ED%95%A9%EB%8B%88%EB%8B%A4..png)
bash 스크립트에서 백그라운드 프로세스를 시작하고 싶지만 다른 이름을 지정하고 CTRL- 에 면역되도록 만들고 싶습니다 C. 나는 다음을 시도했다:
exec -a NiceName java -cp ....long java command line &
tail -f logs/the.log
exec
프로세스 에 java
.
SIGINT가 종료되는 프로세스에 전달되므로 CTRL-stop Cscript/tail을 누를 때까지 작동합니다 .java
나는 또한 (exec ...&)
및 의 조합을 시도했습니다 (exec ...)&
. 작동하는 것은 무엇입니까
exec bash -c "java command line escaping hell&"
tail -f logs/the.log
하지만 지옥에서 벗어나지 않을 방법이 있었으면 좋겠어요. 나는 또한 성공하지 못한 채 몇 가지를 시도했습니다 disown
.
을 제거하면 exec
하위 프로세스는 CTRL- 의 영향을 받지 않지만 C이름을 지정할 수는 없습니다.
답변1
좀 더 실험한 후에 다음과 같은 방법을 찾았습니다.
(trap "" SIGINT; exec -a NiceName java -cp ....long java command line &)
tail -f logs/the.log
SIGINT
서브쉘 무시는 exec
ed 명령에 의해 java
상속 됩니다. 전경에서 실행 bash
/ tail
계속 CTRL-C를 사용하여 종료할 수 있습니다.