완료되지 않는 몇 가지 명령을 실행하려고 합니다. 이 명령은 디렉터리를 감시하고 파일이 변경되면 업데이트합니다. 아이디어는 단일 명령으로 모든 폴더를 실행할 수 있도록 다양한 도구로 감시되는 여러 폴더가 필요하다는 것입니다.
예상대로 반환되는 일반 명령의 경우 명령을 작동으로 분리합니다 ;
.
ls /;
cd /;
ls var;
cd var;
ls log;
cd log
tail -f <some_file>
반환되지 않는 명령(예: 또는 ) 을 함께 연결하려고 하면 coffee -c -w <some_coffeescript_folder>
첫 번째 명령만 실행됩니다.
단일 명령으로 이 작업을 수행할 수 있는 방법이 있습니까? 함께 연결하려는 명령은 다음과 같습니다.
coffee -c -m -w public/javascript/*.coffee; \
stylus views/stylesheets/*.styl -w -m --out public/stylesheets/; \
stylus views/stylesheets/lib/*.styl -w -m --out public/stylesheets/lib/;
답변1
명령에 앰퍼샌드를 추가하여 백그라운드에서 실행할 수 있습니다.
coffee -c -m -w public/javascript/*.coffee &
stylus views/stylesheets/*.styl -w -m --out public/stylesheets/ &
stylus views/stylesheets/lib/*.styl -w -m --out public/stylesheets/lib/ &
현재 백그라운드에서 실행 중인 모든 작업을 보려면 다음을 수행하십시오.
jobs -l
백그라운드 작업을 다시 포그라운드로 가져오려면 fg를 사용하세요(PID는 선택 사항).
fg <PID>
쉘을 "차단"하는 포그라운드 작업을 다시 백그라운드 모드로 보내려면 Ctrl-Z / bg를 사용하십시오.
$ tail -f foobar.log # is "blocking" your shell
(hit Ctrl-Z)
$ bg
작업이 쉘에 바인딩되어 자동으로 포크되지 않을 것 같습니다. 이는 SSH를 통해 로그인한 후 연결을 끊으면 셸이 SIGHUP을 수신하고 해당 작업에도 전송된다는 의미입니다. 그러면 명령이 중지/종료됩니다.
로그아웃한 후에도 작업을 계속 실행하려면 bash 내장 "disown"을 살펴보는 것이 좋습니다.
jobs # fetch job ID in the squre brackets
disown -h %<JOBID> # disown job by using the job ID
또 다른 옵션은 "nohup"(bash 내장이 아닌 명령)이거나 "screen" 또는 "tmux"와 같은 터미널 멀티플렉서를 사용하는 것입니다.
답변2
이 시도:
coffee -c -m -w public/javascript/*.coffee &
stylus views/stylesheets/*.styl -w -m --out public/stylesheets/ &
stylus views/stylesheets/lib/*.styl -w -m --out public/stylesheets/lib/ &