sh sys-snap.sh &
무엇입니까 sh
? 무엇입니까 sys-snap.sh
? 왜 &
줄 끝에 넣어야 합니까? 누구든지 구문을 설명 할 수 있습니까?
포함하지 않는 &
I 누를 때까지 스크립트가 프롬프트로 돌아 가지 않을 Ctrl+를 C. 함께 &
내가 눌러 입력하고 작동합니다.
sh sys-snap.sh &
무엇입니까 sh
? 무엇입니까 sys-snap.sh
? 왜 &
줄 끝에 넣어야 합니까? 누구든지 구문을 설명 할 수 있습니까?
포함하지 않는 &
I 누를 때까지 스크립트가 프롬프트로 돌아 가지 않을 Ctrl+를 C. 함께 &
내가 눌러 입력하고 작동합니다.
답변:
sh
기본 Bourne 호환 쉘 (보통 bash 또는 dash)입니다.
sys-snap.sh
sh
실행 되는 명령을 포함하는 쉘 스크립트 입니다. 당신이 그 내용을 게시하지 않기 때문에 나는 그 이름으로 무엇을 추측 할 수 있습니다. 모든 현재 프로세스, 현재 메모리 사용량, 데이터베이스 상태 등으로 로그 파일을 만드는 동일한 파일 이름을 가진 CPanel 관련 스크립트를 찾을 수 있습니다. 스크립트가 shebang 행 ( #!/bin/sh
또는 이와 유사한)으로 시작되면 실행 가능하게 만들 수 있습니다. 과 chmod +x sys-snap.sh
및 사용하여 직접 시작 ./sys-snap.sh
현재 디렉토리에있는 경우.
함께 &
프로세스가 백그라운드에서 시작, 그래서 당신은 쉘을 계속 사용할 수 있으며, 스크립트가 완료 될 때까지 기다릴 필요가 없습니다. 잊어 버린 경우 현재 실행중인 프로세스를 중지하고 (또는을 사용하여 전경에서 ) Ctrl-Z
계속 진행할 수 있습니다. 자세한 정보는 작업 제어를 참조하십시오.bg
fg
sh
일반적으로 bash
또는 dash
Linux 기반 시스템 (또는 최신 OS / X) 에서만 . BSD에서는 일반적으로 Ash의 또 다른 변형 (대시는 NetBSD sh를 기반으로하며 Almquist Shell을 기반으로 함) 또는 pdksh 파생물입니다. 상용 Unices에서는 일반적으로 ksh88입니다.
&
백그라운드에서 시작 되면 새 쉘 프롬프트 만 표시됩니다.
&&
는 단일 앰퍼샌드와 다른가 &
?
이것은 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 &
당신은 배경과 그들의 작업 번호를 사용하여 전경, 할 수 %1
있을 것 sys-snap.sh
하고 %2
있을 것입니다 another-script.sh
. 당신이 사용하는 경우 fg
또는 bg
그것으로 표시 작업에 대한 조치 명령을 것이다 인수없이 +
에서 jobs
위의 출력.
fg %1
둘 것이다 sys-snap.sh
떠나는 동안, 다시 전경에 another-script.sh
백그라운드에서.
당신은 실행할 수 있습니다 Ctrl- C로 전경하지 않고 작업을 실행하는 순서 kill
명령을 kill %1
동등한를 보낼 것 Ctrl- C에 sys-snap.sh
.
bash 쉘을 사용하는 경우, man bash
명령에는 'JOB CONTROL'섹션 아래에 자세한 섹션이 있습니다.
의 이름에 관해서 sys-snap.sh
는 유닉스 파일에서 파일 이름은 임의적입니다 (동적 로더 파일과 같은 몇 가지 예외가 있음). 쉘 스크립트로 실행 perl
하거나 php
등의 다른 명령을 호출하기 위해 특정 파일 확장자를 가질 필요는 없습니다 . 일반적으로 명확성을 제공하는 데 사용됩니다.이 경우 .sh
에는 Bourne 쉘을 사용하는 쉘 스크립트입니다 /bin/sh
.
기능적인 부분 sys-snap.sh
( less
명령 과 같은 내용을 볼 때 )은 Shebang 입니다. 첫 번째 줄에는 다음 중 하나가있을 것입니다.
#! /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 &
nohup
데 종종 사용되기 때문에 그 기능을 추가하는 것 &
입니다.
jobs
첫 번째 명령이면 항상 비어있는 것이 사실 입니까?
&
에만이 이탈 (분리) 명령의 끝에서 stdin
(그러나 stdout
나 stderr
명령 / 스크립트가 백그라운드에서 실행 만에 쓰는 경우 의미) stdout
, 당신은 상황에 실행할 수있는 것은 어디에서 Ctrl + c
출력을 중지하지 않습니다하지만 당신은 수있을 것입니다 명령을 입력하십시오. 백그라운드 프로세스가 작성 stdout
중이지만 포 그라운드에서 실행되고 있지 않으므로 중지 할 수 없습니다. 자세한 내용은 여기를 참조하십시오 .
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
실행합니다.
&
쉘 프로세스가 백그라운드에서 실행되도록합니다. 그렇지 않으면 &
스크립트가 끝날 때까지 포 그라운드로 유지됩니다. 스크립트는 어느 쪽이든 작동하지만 추가 명령을 실행하기 전에 스크립트가 끝날 때까지 기다리는 것입니다.
&&
는 단일 앰퍼샌드와 다른가&
?