쉘 스크립트 줄 끝에 있는 앰퍼샌드는 무엇을 의미합니까?

쉘 스크립트 줄 끝에 있는 앰퍼샌드는 무엇을 의미합니까?
sh sys-snap.sh &

무엇인가요 sh? 무엇인가요 sys-snap.sh? 왜 &줄 끝에 넣어야 하나요 ? 누구든지 구문을 설명할 수 있나요?

그렇지 않은 경우 +를 &누를 때까지 스크립트는 프롬프트로 돌아오지 않습니다 . Enter를 누르면 작동합니다.CtrlC&

답변1

sh기본값입니다Bourne 호환 케이스(보통 bash 또는 dash)

sys-snap.shsh실행할 명령이 포함된 쉘 스크립트입니다 . 콘텐츠를 게시하지 않으셨기 때문에 이름만 보고 기능을 추측할 수 있습니다. 모든 현재 프로세스, 현재 메모리 사용량, 데이터베이스 상태 등을 포함하는 로그 파일을 생성하는 동일한 파일 이름을 가진 CPanel 관련 스크립트를 찾을 수 있습니다. 스크립트가 다음으로 끝나는 경우셰르본 라인(또는 유사) 현재 디렉토리에 있으면 #!/bin/sh실행 가능하게 만들고 chmod +x sys-snap.sh../sys-snap.sh

&프로세스가 백그라운드에서 시작되므로 스크립트가 완료될 때까지 기다리지 않고 셸을 계속 사용할 수 있습니다 . 잊어버린 경우 를 사용하여 현재 실행 중인 프로세스를 중지 Ctrl-Z하고 백그라운드 bg(또는 포그라운드 fg)에서 을 사용하여 계속할 수 있습니다. 자세한 내용은 다음을 참조하세요.직업 통제

답변2

이것이 job control유닉스에서는 호출되는 것입니다. &명령을 백그라운드에 두도록 쉘에 지시합니다 . 이는 sys-snap.sh명령을 계속 실행하지만 병렬 명령을 계속 실행할 수 있도록 셸로 돌아가는 것을 의미합니다.

이 명령을 사용하면 현재 실행 중인 작업 목록을 볼 수 있습니다 jobs. 이 명령을 사용하여 명령으로 돌아갈 수 있습니다("전경"으로 이동) fg. 이렇게 하면 명령이 프롬프트가 표시되지 않는 상태로 다시 돌아가므로 다음을 실행해야 합니다 Ctrl.C죽이다의 과정. 하지만 넌 할수있어정지시키다(일시 중지) 프로세스가 Ctrl- 을 내보냅니다 Z. 그러면 일시 중지 sys-snap.sh되고 프롬프트로 돌아갑니다. 그런 다음 배경으로 설정할 수 있습니다(마치 게시한 것처럼).그리고) 명령을 &사용하면bg다시 덮다일시정지 상태에서 실행 중 Ctrl- Z입력하세요.

다음과 같이 한 번에 여러 작업을 수행할 수 있습니다 jobs.

[1]-  Running          sys-snap.sh &
[2]+  Running          another-script.sh &

해당 작업 번호, %1will sys-snap.sh및 will be를 사용하여 %2배경 및 전경에 배치 할 수 있습니다 another-script.sh. 매개변수를 사용하거나 fg사용하지 않으면 bg위 출력에 표시된 작업에 대해 명령이 실행됩니다.+jobs

fg %1

배경에 sys-snap.sh남아 있으면서 다시 전경으로 돌아 옵니다 .another-script.sh

이 명령을 사용하면 포그라운드로 가져오지 않고도 실행 중인 작업에 Ctrl- 시퀀스를 실행할 수 있습니다. 그러면 - 에 해당하는 내용이 전송됩니다 .Ckillkill %1CtrlCsys-snap.sh

Bash 셸을 사용하는 경우 man bash명령의 "작업 제어" 섹션 아래에 자세한 내용을 제공하는 세부 정보 섹션이 있습니다.

name 의 경우 sys-snap.sh파일 이름은 Unix에서 임의적입니다(동적으로 로드된 파일과 같은 일부 예외 있음). 쉘 스크립트로 실행하거나 perl또는 php등과 같은 다른 명령을 호출하기 위해 특정 파일 확장자를 가질 필요는 없습니다. 이는 명확성을 제공하기 위해 자주 사용되며, 이 경우 .shBourne Shell을 사용하는 쉘 스크립트 입니다 /bin/sh.

sys-snap.sh(명령어 같은 것으로 내용을 볼 때) 기능 부분 less셰르본. 첫 번째 줄에서 다음 중 하나를 찾을 수 있습니다.

#! /bin/sh
#! /bin/bash
#! /usr/local/bin/bash

또는 유사합니다. 기본적으로 #!(예: /bin/sh) 다음에 명령을 실행하고 나머지 스크립트 파일의 내용을 한 번에 한 줄씩 입력합니다. 또한 파일 chmod을 명령으로 실행할 수 있도록 실행 파일로 설정해야 합니다 . 권한이 설정되지 않으면 shebang다음 오류 메시지가 표시되므로 아무 효과가 없습니다.

bash: sys-snap.sh: command not found

./sys-snap.sh또는 명시적인 경로(예: 현재 작업 디렉터리)를 통해 실행하면 다음과 같은 결과 .가 나타납니다.

bash: ./sys-snap.sh: Permission denied

또 다른 옵션은 실행 권한 없이 그대로 두고 명시적으로 /bin/sh에 실행을 요청하는 것입니다.

/bin/sh sys-snap.sh &

답변3

sh껍질이에요. 사용되는 쉘은 시스템에 따라 다릅니다. bash시스템을 표준 쉘로 사용하는 예:

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 13 16:12 /bin/sh -> bash

$ sh --version
GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)

sys-snap.sh일종의 쉘 스크립트이므로 sh sys-snap.sh쉘 스크립트가 실행됩니다.

&쉘 프로세스가 백그라운드에서 실행됩니다. 그렇지 않은 경우 &스크립트가 끝날 때까지 전경에 유지됩니다. 어느 쪽이든 스크립트는 작동할 것입니다. 추가 명령을 실행하기 전에 스크립트가 끝날 때까지 기다리는 문제일 뿐입니다.

답변4

귀하의 서버가 Hostgator에 있습니까?

이 스크립트는 sys-snap.sh시스템의 모든 로그 파일과 데이터를 수집하기 위해 Hostgator 팀이 작성한 특수 스크립트이므로 해당 출력을 사용하여 시스템 정보를 모니터링하고 수집합니다.

관련 정보