명령 행에서 </ dev / null & 사용법


12

다음 명령 줄을 사용하여 예제 Java 프로그램을 실행하려고했습니다. 그러나 후행 부분이 무엇을 < /dev/null &사용 하는지 모르겠습니다 .

java   -cp  /home/weka.jar weka.classifiers.trees.J48 t train_file  >& log < /dev/null &

답변:


21

< /dev/null입력을 기다리지 않도록 EOF를 프로그램에 즉시 전송하는 데 사용됩니다 ( /dev/nullnull 장치는 작성된 모든 데이터를 버리는 특수 파일이지만 쓰기 작업이 성공했다고보고하며 데이터를 제공하지 않습니다) EOF를 즉시 얻는 모든 프로세스). &이전 프로세스를 백그라운드로 사용하는 데 사용되는 특수 유형의 명령 구분 기호입니다.

프로그램이 호출되는 것을 알지 못하면, 왜 이런 식으로 프로그램을 실행해야하는지 직접 알지 못합니다.


6

</dev/null터미널에서 프로그램 입력을 분리합니다. 일부 프로그램은 표준 입력이 연결된 대상에 따라 다르게 반응합니다. redirection </dev/null을 사용하면 프로그램은 입력이 터미널에서 나오지 않는다는 것을 알 수 있으며 표준 입력에서 읽으려고하면 파일 끝 표시를 즉시 수신합니다.

마지막에 고독이 &있으면 백그라운드에서 프로그램이 실행됩니다. 즉, 즉시 쉘 프롬프트가 다시 나타납니다. 이 없으면 &프로그램 실행이 완료된 후에 만 ​​쉘 프롬프트가 표시됩니다.

독립형은와 &(과) 관련이 없습니다 >&. >&프로그램의 표준 출력과 프로그램의 표준 오류를 모두 연산자 뒤에 지정된 파일 이름 (여기서 log) 으로 리디렉션하는 리디렉션 연산자 (tcsh, bash 및 zsh)입니다 .

다시 말해,이 명령 행을 볼 때 쉘이하는 일은 다음과 같습니다.

  • 백그라운드에서 프로세스를 시작하십시오. 백그라운드 프로세스에서 :
    • 표준 입력을 /dev/null( null 장치 )에 연결하십시오 .
    • 표준 출력과 표준 오류를 모두 호출 된 파일에 연결하십시오 log(아직 존재하지 않는 경우 파일 작성 및 존재하는 경우 잘림).
    • 에서 실행 파일을 찾으 java십시오 $PATH.
    • 5 개 인자로 해당 파일을 실행 -cp, /home/weka.jar, weka.classifiers.trees.J48, –t, train_file`.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.