&
프로세스를 말 그대로 백그라운드에서 실행시키기 위해서는 &
를 붙혀주면 된다.
$ [process] &
프로세스가 백그라운드에서 실행되더라도, 그 프로세스를 실행시킨 터미널을 종료 시키면 백그라운드에서 돌던 프로세스도 종료가 된다. 반쪽짜리 백그라운드이다. 이것을 해결하는 명령어가 nohub
이다.
터미널이 종료되면 터미널에서 실행 중이던 프로세스는 HUB Signal을 전달 받아 종료된다.
터미널이 종료되더라도 이 신호를 무시하여 프로세스가 유지될 수 있도록 하는 명령어가 nohub
이다.
$ nohub [process] > /dev/null
프로세스가 진행되면 std::cout
같은 출력들을 nohub.out
라는 파일에 모두 저장하게 되는데, 이걸 하기 싫으면 /dev/null
을 넣어주어야 한다.
출력이 아닌 에러 출력들은 *.err
에 저장되는데 *.err
를 만들지 않고 출력이 쓰여지는 파일(*.out
)에 한번에 저장하기 위해서 2>&1
를 넣어주어야 한다.
$ nohub [process] > /dev/null 2>&1 &