Linux 백그라운드 시작 명령. Linux에서 프로그램을 실행하는 방법. 대기 중인 작업 삭제 중

작업 및 프로세스

Linux에서 실행되는 모든 프로그램을 호출합니다. 프로세스. 멀티태스킹 시스템으로서의 Linux는 한 명 이상의 사용자에게 속한 많은 프로세스를 동시에 실행할 수 있다는 특징이 있습니다. 다음 명령을 사용하여 현재 실행 중인 프로세스 목록을 표시할 수 있습니다. 추신, 예를 들어 다음과 같습니다.

/home/larry# ps PID TT STAT TIME 명령 24 3 S 0:03 (bash) 161 3 R 0:00 ps /home/larry#

기본적으로 명령은 다음과 같습니다. 추신이를 시작한 사용자에게 속한 프로세스 목록만 표시합니다. 시스템에서 실행 중인 모든 프로세스를 보려면 다음 명령을 실행해야 합니다. 추신 -a . 프로세스 번호첫 번째 열에 나열된 (프로세스 ID 또는 PID)는 시스템이 실행 중인 각 프로세스에 할당하는 고유 번호입니다. COMMAND라는 제목의 마지막 열은 실행 중인 명령의 이름을 나타냅니다. 이 경우 목록에는 사용자 larry가 직접 시작한 프로세스가 포함됩니다. 시스템에는 다른 많은 프로세스가 실행되고 있습니다. 전체 목록명령어로 볼 수 있다 ps-aux. 그런데 larry 사용자가 실행하는 명령어 중에는 bash(larry 사용자의 명령어 쉘)와 명령어 자체만 존재한다. 추신. bash 쉘은 명령과 동시에 실행되는 것을 볼 수 있습니다 추신. 사용자가 명령을 입력했을 때 추신, bash 쉘이 실행을 시작했습니다. 팀 이후 추신작업이 완료되면(프로세스 테이블이 표시됨) 제어권이 bash 프로세스로 돌아갑니다. 그런 다음 bash 쉘은 프롬프트를 표시하고 새 명령을 기다립니다.

실행 중인 프로세스라고도 합니다. (직업). 프로세스와 작업이라는 용어는 같은 의미로 사용됩니다. 그러나 일반적으로 프로세스가 의미하는 경우 작업이라고 합니다. 직업 관리(작업 제어). 작업 제어는 사용자에게 여러 작업 간에 전환할 수 있는 기능을 제공하는 명령 셸 기능입니다.

대부분의 경우 사용자는 하나의 작업만 실행합니다. 이는 명령 셸에 입력한 마지막 명령이 됩니다. 그러나 많은 쉘(bash 및 tcsh 포함)에는 다음 기능이 있습니다. 직업 관리(작업 제어), 동시에 여러 명령을 실행하거나 작업(작업) 및 필요에 따라 작업 간에 전환합니다.

예를 들어 대규모 작업을 편집하는 경우 작업 관리가 유용할 수 있습니다. 텍스트 파일다른 작업을 수행하기 위해 편집을 일시적으로 중단하고 싶습니다. 작업 관리 기능을 사용하여 일시적으로 편집기를 종료하고, 쉘 프롬프트로 돌아가고, 다른 작업을 수행할 수 있습니다. 작업이 완료되면 다시 편집기 작업으로 돌아가서 이전과 동일한 상태에서 찾을 수 있습니다. 작업 관리 기능에는 더 많은 유용한 용도가 있습니다.

전경 및 배경 모드

작업은 다음 중 하나일 수 있습니다. 전경(전경) 또는 배경(배경). 주어진 시간에 포그라운드에는 하나의 작업만 있을 수 있습니다. 포그라운드 작업은 상호 작용하는 작업입니다. 키보드로부터 입력을 받고 출력을 화면으로 보냅니다(물론 입력이나 출력을 다른 곳으로 리디렉션하지 않는 한). 에 맞서, 백그라운드 작업터미널에서 입력을 받지 않습니다. 일반적으로 이러한 작업에는 사용자 상호 작용이 필요하지 않습니다.

일부 작업은 완료하는 데 매우 오랜 시간이 걸리며 실행 중에는 흥미로운 일이 발생하지 않습니다. 이러한 작업의 예로는 프로그램 컴파일과 대용량 파일 압축이 있습니다. 화면을 응시하면서 이러한 작업이 완료될 때까지 기다릴 이유가 없습니다. 이러한 작업은 다음에서 실행되어야 합니다. 배경. 이 시간 동안 다른 프로그램을 사용할 수 있습니다.

Linux에서 프로세스 실행을 제어하기 위해 전송 메커니즘이 제공됩니다. 신호. 신호는 시스템을 사용하여 직접 표준 단문 메시지를 교환하는 프로세스의 기능입니다. 신호 메시지에는 신호 번호(편의상 번호 대신 시스템에서 미리 정의한 이름을 사용할 수 있음) 외에는 어떤 정보도 포함되지 않습니다. 신호를 전송하기 위해 프로세스는 시스템 호출만 사용하면 됩니다. 죽이다(), 신호를 받기 위해서는 아무것도 필요하지 않습니다. 프로세스가 특별한 방식으로 신호에 응답해야 하는 경우 다음을 등록할 수 있습니다. 매니저, 핸들러가 없으면 시스템이 이에 반응합니다. 일반적으로 이로 인해 신호를 수신한 프로세스가 즉시 종료됩니다. 신호 처리기가 시작됩니다. 비동기적으로, 그 당시 프로세스가 무엇을 하고 있던 상관없이 신호를 받은 즉시.

두 개의 신호 - 숫자 9 ( 죽이다) 및 19( 멈추다) - 항상 시스템에 의해 처리됩니다. 그 중 첫 번째는 프로세스를 확실히 종료하기 위해 필요합니다(그래서 이름이 붙었습니다). 신호 멈추다 정지하다 프로세스: 이 상태에서 프로세스는 프로세스 테이블에서 제거되지 않지만 신호 18( 계속) - 그 후에도 계속 작동합니다. Linux 명령 셸에서 신호 멈추다이스케이프 시퀀스를 사용하여 활성 프로세스에 전달할 수 있습니다. Ctrl 키 - .

신호번호 15( 용어) 작업을 중단하는 역할을 합니다. ~에 중단(중단) 작업 프로세스가 종료됩니다. 작업은 일반적으로 이스케이프 시퀀스에 의해 중단됩니다. Ctrl 키 -. 중단된 작업을 복원할 수 있는 방법은 없습니다. 또한 일부 프로그램이 신호를 가로채는 것을 알아야 합니다. 용어(핸들러 사용) 키 조합을 누르면 Ctrl 키 -(o) 프로세스를 즉시 중단할 수 없습니다. 이는 프로그램이 완료되기 전에 작업의 흔적을 삭제할 수 있도록 수행됩니다. 실제로 일부 프로그램은 이런 방식으로 전혀 중단될 수 없습니다.

백그라운드로 전송 및 작업 삭제

시작해보자 간단한 예. 언뜻 보기엔 쓸모 없어 보일 수도 있는 yes 명령을 살펴보겠습니다. 이 명령은 문자 y로 구성된 끝없는 문자열 스트림을 표준 출력으로 보냅니다. 이 명령이 어떻게 작동하는지 살펴보겠습니다.

/집/래리# 예 y y y y

이러한 줄의 순서는 무한정 계속됩니다. 인터럽트 신호를 보내면 이 프로세스를 파괴할 수 있습니다. Ctrl 키 -. 이제 다르게 해봅시다. 이 끝없는 시퀀스가 ​​화면에 표시되는 것을 방지하기 위해 yes 명령의 표준 출력을 /dev/null 로 리디렉션합니다. 아시다시피 /dev/null 장치는 "블랙홀" 역할을 합니다. 즉, 이 장치로 전송된 모든 데이터가 손실됩니다. 이 장치를 사용하면 일부 프로그램에서 너무 많은 출력을 제거하는 것이 매우 편리합니다.

/home/larry# 예 > /dev/null

이제 화면에는 아무것도 표시되지 않습니다. 그러나 쉘 프롬프트도 반환되지 않습니다. 이는 yes 명령이 여전히 실행 중이고 문자 y로 구성된 메시지를 /dev/null로 보내기 때문입니다. 또한 인터럽트 신호를 보내 이 작업을 파괴할 수도 있습니다.

이제 yes 명령이 계속 작동하기를 원할 뿐만 아니라 다른 프로그램에서 작업할 수 있도록 쉘 프롬프트를 화면으로 반환하기를 원한다고 가정해 보겠습니다. 이렇게 하려면 yes 명령을 백그라운드에 넣으면 사용자와 통신하지 않고도 작동합니다.

프로세스를 백그라운드에 두는 한 가지 방법은 명령 끝에 &를 추가하는 것입니다. 예:

/home/larry# 예 > /dev/null & + 164 /home/larry#

메시지는 직업 번호(작업 번호) 프로세스에 대해 그렇습니다. 명령 셸은 실행되는 각 작업에 작업 번호를 할당합니다. yes는 실행 가능한 유일한 작업이므로 숫자 1이 할당됩니다. 숫자 164는 이 프로세스와 관련된 식별 번호(PID)이며 이 번호는 시스템에 의해 프로세스에도 부여됩니다. 나중에 살펴보겠지만, 이 두 숫자를 모두 지정하여 프로세스에 액세스할 수 있습니다.

이제 백그라운드에서 yes 프로세스가 실행되어 y 스트림을 /dev/null 장치로 지속적으로 보냅니다. 이 프로세스의 상태를 확인하려면 다음 명령을 실행해야 합니다. 직업, 이는 쉘 내부 명령입니다.

/home/larry# jobs + Running yes >/dev/null & /home/larry#

우리는 이 프로그램이 정말 효과가 있다는 것을 알았습니다. 작업 상태를 확인하기 위해 다음 명령을 사용할 수도 있습니다. 추신, 위에 표시된 것처럼.

프로세스에 신호를 전송하려면(대부분의 경우 다음이 필요합니다. 방해하다작업 작업) 유틸리티가 사용됩니다. 죽이다. 이 명령에는 작업 번호 또는 PID가 인수로 제공됩니다. 선택적 매개변수는 프로세스에 전송되어야 하는 신호의 수입니다. 기본적으로 신호가 전송됩니다. 용어. 위의 경우 Job 번호는 1 이므로 명령어는 다음과 같습니다. % 1을(를) 죽입니다작업을 중단합니다. PID가 아닌 해당 번호로 작업에 액세스하는 경우 명령줄에서 해당 번호 앞에 퍼센트 기호("%")가 와야 합니다.

이제 명령어를 입력해보자 직업이전 작업의 결과를 다시 확인하려면 다음을 수행하세요.

/home/larry# 작업 종료됨 yes >/dev/null

실제로 작업은 소멸되며 다음에 작업 명령을 입력하면 화면에 이에 대한 정보가 표시되지 않습니다.

PID(프로세스 식별 번호)를 사용하여 작업을 종료할 수도 있습니다. 이 번호는 작업 식별 번호와 함께 작업이 시작될 때 표시됩니다. 이 예에서는 PID 값이 164이므로 명령은 164명을 죽여라명령과 동일합니다 % 1을(를) 죽입니다. PID를 kill 명령의 인수로 사용하는 경우 "%" 문자를 입력할 필요가 없습니다.

작업 일시 중지 및 재개

먼저 이전에 수행했던 것처럼 포그라운드에서 yes 명령을 사용하여 프로세스를 시작하겠습니다.

/home/larry# 예 > /dev/null

이전과 마찬가지로 프로세스가 포그라운드에서 실행 중이기 때문에 쉘 프롬프트가 화면으로 돌아가지 않습니다.

이제 키 조합으로 작업을 중단하는 대신 Ctrl 키 -, 작업이 가능합니다 유예하다(일시 중지, 말 그대로 - 일시 중지) 그에게 신호를 보냅니다. 멈추다. 작업을 일시 중지하려면 적절한 키 조합을 눌러야 합니다. 일반적으로 다음과 같습니다. Ctrl 키 - .

/home/larry# 예 > /dev/null Ctrl 키 -+ 중지됨 yes >/dev/null /home/larry#

일시 중단된 프로세스는 단순히 실행되지 않습니다. 프로세서 리소스를 소비하지 않습니다. 일시 중단된 작업은 일시 중단되지 않은 것처럼 동일한 지점에서 실행을 시작할 수 있습니다.

포그라운드에서 실행 중인 작업을 재개하려면 다음 명령을 사용할 수 있습니다. fg(전경이라는 단어에서 - 전경).

/home/larry# fg 예 >/dev/null

명령 셸은 사용자가 현재 어떤 작업에 있는지 알 수 있도록 명령 이름을 다시 한 번 표시합니다. 이 순간전경에서 시작되었습니다. 키를 눌러 이 작업을 다시 일시중지해 보겠습니다. Ctrl 키 -, 하지만 이번에는 다음 명령을 사용하여 백그라운드에서 실행해 보겠습니다. bg(배경이라는 단어에서 - 배경). 이렇게 하면 프로세스가 끝에 &가 있는 명령을 사용하여 실행된 것처럼 실행됩니다(이전 섹션에서 수행한 것처럼).

/home/larry# bg + yes $>$/dev/null & /home/larry#

쉘 프롬프트가 반환됩니다. 이제 팀 직업그 과정을 보여줘야 한다 실제로 지금 일하고 있습니다. 이 프로세스는 다음 명령으로 종료될 수 있습니다. 죽이다, 이전에 그랬던 것처럼.

키보드 단축키를 사용하여 백그라운드에서 실행 중인 작업을 일시중지할 수 없습니다. Ctrl 키 -. 작업을 일시 중지하기 전에 다음 명령을 사용하여 작업을 전경으로 가져와야 합니다. fg그런 다음 중지하십시오. 따라서 명령은 fg일시 중단된 작업이나 백그라운드에서 실행 중인 작업에 적용될 수 있습니다.

백그라운드 작업과 일시 중단된 작업에는 큰 차이가 있습니다. 일시 중지된 작업은 작동하지 않습니다. - 비용이 지출되지 않습니다. 컴퓨팅 파워프로세서. 이 작업은 어떤 작업도 수행하지 않습니다. 일시 중지된 작업은 일정량의 컴퓨터 RAM을 차지합니다. 일정 시간이 지나면 커널은 메모리의 이 부분을 펌핑하여 HDD « 포스트 레스토랑" 이와 대조적으로, 백그라운드 작업은 실행 중이고, 메모리를 사용하고, 수행하고 싶은 일부 작업을 수행하지만 동시에 다른 프로그램에서 작업을 하고 있을 수도 있습니다.

백그라운드에서 실행 중인 작업은 화면에 일부 텍스트를 표시하려고 시도할 수 있습니다. 이는 다른 작업에 방해가 됩니다.

/home/larry# 예 &

여기서 표준 출력은 /dev/null 장치로 리디렉션되지 않았으므로 끝없는 y 문자 스트림이 화면에 인쇄됩니다. 키 조합이 다르기 때문에 이 스레드를 중지할 수 없습니다. Ctrl 키 -백그라운드 작업에는 영향을 주지 않습니다. 이 출력을 중지하려면 다음 명령을 사용해야 합니다. fg, 작업을 전면으로 가져온 다음 키 조합을 사용하여 작업을 삭제합니다. Ctrl 키 - .

한 가지 더 언급해 보겠습니다. 보통 팀별로 fg그리고 팀 bg가장 최근에 일시 중단된 작업에 영향을 줍니다(명령을 입력하면 이러한 작업은 작업 번호 옆에 + 기호로 표시됩니다). 직업). 하나 이상의 작업이 동시에 실행 중인 경우 명령을 인수로 지정하여 작업을 전경 또는 배경에 배치할 수 있습니다. fg또는 명령 bg식별 번호(작업 ID)입니다. 예를 들어 다음 명령은 fg% 2작업 번호 2를 앞에 두고 다음 명령을 실행합니다. 배경% 3작업 번호 3을 백그라운드에 둡니다. PID를 명령 인수로 사용 fg그리고 bg그것은 금지되어 있습니다.

또한 작업을 전면으로 가져오려면 작업 번호를 간단히 지정할 수 있습니다. 응, 팀 %2 명령과 동일합니다 fg% 2 .

작업 제어 기능은 셸에 속한다는 점을 기억하는 것이 중요합니다. 팀 fg , bg그리고 직업~이다 내부 팀껍질. 어떤 이유로 작업 관리 기능을 지원하지 않는 명령 셸을 사용하는 경우 해당 명령(및 유사한) 명령을 찾을 수 없습니다.

Linux를 실행하는 서버를 관리하려면 터미널 창에서 명령을 여러 번 조작해야 하는 경우가 많습니다. 이는 Linux에서 서버를 관리하는 사람들에게는 친숙한 그림이며 어떤 경우에는 백그라운드에서 명령을 실행하는 것이 편리합니다. 이는 실제로 잘 사용될 수 있으며 이것이 유용한 이유에 대해 언급할 가치가 있습니다.
— 터미널이 많은 메시지로 인해 과부하되어 추가 작업을 병렬로 수행할 수 없는 경우;
— 터미널을 닫으면 현재 프로세스와 해당 하위 프로세스가 중지됩니다.
이러한 문제는 간단하게 해결할 수 있는데, 간단히 말해서 실행 중인 프로세스를 제어 터미널에서 완전히 분리해야 합니다.

이번 포스팅에서는 백그라운드에서 명령을 실행하는 Linux의 유용한 기능을 살펴보겠습니다. 즉, 시작한 프로세스는 제어 터미널과 별도로 실행됩니다.

백그라운드에서 명령이나 프로세스를 실행하는 방법
프로세스가 터미널 창에서 실행 중인 경우 다음 명령을 사용하여 프로세스를 일시 중지할 수 있습니다. Ctrl+Z, 아마도 많은 사람들이 이것을 알고 생각할 것입니다. 흥미로운 점은 프로세스를 일시 중지한 후 백그라운드에서 계속할 수 있다는 것입니다. 이를 위해서는 명령을 입력해야 합니다.

이 명령을 입력하면 프로세스가 계속 진행되지만 백그라운드에서 진행됩니다. 백그라운드에서 실행 중인 모든 프로세스를 보려면 다음 명령을 입력하십시오.

이것이 어떻게 적용될 수 있는지 간단한 예를 살펴보겠습니다. 압축을 풀어야 하는 가 있지만 기다릴 시간이 없어 병렬로 작업하고 싶다고 가정해 보겠습니다.

백그라운드에서 아카이브 압축 풀기

$ tar -czf home.tar.gz .

딸깍 하는 소리 Ctrl+Z을 누른 다음 명령을 입력하세요.

$bg$작업

두 번째 방법은 명령 끝에 &를 추가하는 것입니다. 그러면 시스템이 백그라운드에서 명령을 실행하도록 지시합니다.

$ tar -czf home.tar.gz . &$작업

이 방법을 사용하면 프로세스가 백그라운드에서 실행될 수 있습니다. STDIN, 표준 출력, STDERR아직 터미널에 연결되어 있습니다. 이제 터미널이 닫혀도 프로세스가 실행되는지 확인해 보겠습니다.

터미널 창을 닫은 후 프로세스 실행
터미널 창을 닫은 후에도 프로세스를 계속 실행하려면 다음 명령을 사용할 수 있습니다. 자기 것이 아니라고 말하다. 터미널 창의 셸에서 프로세스를 "연결 해제"한 후 콘솔 창을 닫은 후에도 실행됩니다.
표준 명령을 사용하는 예를 살펴 보겠습니다. 재동기화, 백그라운드에서 실행하고 터미널에서 프로세스 연결을 해제해 보겠습니다.

$ sudo rsync 템플릿/* /var/www/html/ & $ jobs $ disown -h %1 $ jobs

다음 명령을 사용할 수도 있습니다. 안돼, 사용자가 시스템 셸을 종료하더라도 프로세스가 계속 실행될 수 있습니다.

$ nohup tar -czf iso.tar.gz 템플릿/* & $ 작업

Linux 제어 터미널에서 프로세스를 분리하는 방법
제어 터미널에서 프로세스를 완전히 분리하려면 Firefox 브라우저와 같은 그래픽 사용자 인터페이스(GUI)를 사용할 때 효과적인 명령을 사용할 수도 있습니다.

$firefox/dev/null &

안에 리눅스 시스템(그리고 거의 모든 Unix 시스템에서) /dev/null은 "널 장치"라고도 불리는 특수 장치 파일입니다. 기록된 정보의 양에 관계없이 쓰기는 성공적으로 수행되며, 여기서 읽는 것은 파일 끝(EOF)을 읽는 것과 같습니다.

지난번에는 bash 스크립트, 파일 설명자 및 스트림 리디렉션의 입력, 출력 및 오류 스트림 작업에 대해 이야기했습니다. 이제 당신은 자신만의 글을 쓸 만큼 이미 충분히 알고 있습니다. Bash를 마스터하는 이 단계에서는 실행 중인 스크립트를 관리하는 방법과 실행을 자동화하는 방법에 대해 질문이 있을 수 있습니다.

지금까지 우리는 명령줄에 스크립트 이름을 입력하고 Enter 키를 누르면 프로그램이 즉시 실행되지만 그렇지 않습니다. 유일한 방법스크립트 호출. 오늘 우리는 스크립트가 Linux 신호와 함께 작동하는 방법, 스크립트를 실행하고 실행하는 동안 관리하는 다양한 접근 방식에 대해 이야기하겠습니다.

리눅스 신호

Linux에는 시스템이나 애플리케이션에 의해 생성되는 신호가 36개가 넘습니다. 다음은 가장 일반적으로 사용되는 목록이며 스크립트를 개발할 때 확실히 유용할 것입니다. 명령줄.
신호 코드
이름
설명
1
한숨
터미널 닫기
2
서명
터미널에서 사용자가 프로세스를 중지하라는 신호(CTRL + C)
3
시그퀴트
메모리 덤프를 사용하여 터미널(CTRL + \)에서 사용자가 프로세스를 중지하라는 신호
9
시그킬
무조건 프로세스 종료
15
SIGTERM
프로세스 종료 요청 신호
17
시그스톱
프로세스를 강제로 일시 중단하지만 종료하지는 않음
18
SIGTSTP
터미널에서 프로세스를 일시 중지(CTRL+Z)했지만 종료하지 않음
19
SIGCONT
이전에 중지된 프로세스를 계속 실행합니다.

터미널을 닫을 때 bash 쉘이 SIGHUP 신호를 받으면 종료됩니다. 종료하기 전에 실행 중인 스크립트를 포함하여 그 안에서 실행 중인 모든 프로세스에 SIGHUP 신호를 보냅니다.

SIGINT 신호로 인해 작업이 일시적으로 중지됩니다. Linux 커널은 프로세서 시간을 셸에 할당하는 것을 중지합니다. 이런 일이 발생하면 쉘은 SIGINT 신호를 보내 프로세스에 알립니다.

Bash 스크립트는 이러한 신호를 제어하지 않지만 이를 인식하고 특정 명령을 실행하여 신호로 인한 결과에 대해 스크립트를 준비할 수 있습니다.

스크립트에 신호 보내기

Bash 쉘을 사용하면 키보드 단축키를 사용하여 스크립트에 신호를 보낼 수 있습니다. 이는 실행 중인 스크립트를 일시적으로 중지하거나 해당 작업을 종료해야 하는 경우 매우 유용합니다.

프로세스 종료

콤비네이션 CTRL 키+C는 SIGINT 신호를 생성하고 이를 셸에서 실행 중인 모든 프로세스에 보내 종료되도록 합니다.

셸에서 다음 명령을 실행해 보겠습니다.

$수면 100
그런 다음 Ctrl + C 키 조합을 사용하여 작업을 완료합니다.


키보드에서 프로세스 종료

프로세스를 일시적으로 중지

CTRL + Z 키 조합은 프로세스를 일시 중단하지만 종료하지는 않는 SIGTSTP 신호를 생성합니다. 이러한 프로세스는 메모리에 남아 있으며 작업을 재개할 수 있습니다. 쉘에서 명령을 실행해 봅시다:

$수면 100
Ctrl + Z 키 조합을 사용하여 일시적으로 중지하세요.


프로세스를 일시 중지

대괄호 안의 숫자는 쉘이 프로세스에 할당하는 작업 번호입니다. 셸은 내부에서 실행되는 프로세스를 고유 번호가 있는 작업으로 처리합니다. 첫 번째 프로세스에는 번호 1이 할당되고 두 번째 프로세스에는 2번 등이 할당됩니다.

쉘에 바인딩된 작업을 일시 중지하고 종료하려고 하면 bash가 경고를 표시합니다.

다음 명령을 사용하여 일시 중단된 작업을 볼 수 있습니다.

시 -l


작업 목록

프로세스 상태를 표시하는 S 열에는 일시 중단된 프로세스에 대해 T가 표시됩니다. 이는 명령이 일시중단되었거나 추적 상태에 있음을 나타냅니다.

일시 중지된 프로세스를 종료해야 하는 경우 kill 명령을 사용할 수 있습니다. 이에 대한 자세한 내용을 읽을 수 있습니다.

그녀의 통화 내용은 다음과 같습니다.

프로세스 ID 종료

신호 차단

스크립트에서 Linux 신호 추적을 활성화하려면 Trap 명령을 사용하십시오. 스크립트가 이 명령을 호출할 때 지정된 신호를 받으면 이를 독립적으로 처리하지만 쉘은 그러한 신호를 처리하지 않습니다.

Trap 명령을 사용하면 개입 없이 쉘에서 처리할 신호에 스크립트가 응답할 수 있습니다.

Trap 명령이 실행될 코드와 가로채고 싶은 신호 목록을 공백으로 구분하여 지정하는 방법을 보여주는 예를 살펴보겠습니다. 이 경우에는 하나의 신호일 뿐입니다.

#!/bin/bash Trap "echo " Trapped Ctrl-C"" SIGINT echo 이것은 테스트 스크립트입니다 count=1 while [ $count -le 10 ] do echo "Loop #$count" sleep 1 count=$(($ 카운트 + 1)) 완료
이 예에 사용된 트랩 명령은 다음을 출력합니다. 문자 메세지키보드에서 Ctrl + C를 눌러 생성할 수 있는 SIGINT 신호를 감지할 때마다.


신호 차단

CTRL + C 를 누를 때마다 스크립트는 쉘이 종료하도록 하는 대신 추적을 호출할 때 지정된 echo 명령을 실행합니다.

트랩 명령을 호출할 때 EXIT 신호의 이름을 사용하여 스크립트 종료 신호를 가로챌 수 있습니다.

#!/bin/bash 트랩 "echo 안녕..." EXIT count=1 while [ $count -le 5 ] do echo "Loop #$count" sleep 1 count=$(($count + 1)) done


스크립트 종료 신호 가로채기

정상적으로 또는 SIGINT 신호로 인해 스크립트가 종료되면 쉘은 echo 명령을 가로채서 실행합니다.

감청된 신호의 수정 및 감청 취소

스크립트가 가로채는 신호를 수정하려면 새 매개변수를 사용하여 트랩 명령을 실행할 수 있습니다.

#!/bin/bash Trap "echo "Ctrl-C가 갇혔습니다."" SIGINT count=1 while [ $count -le 5 ] do echo "Loop #$count" sleep 1 count=$(($count + 1) ) done Trap "echo "트랩을 수정했습니다!"" SIGINT count=1 while [ $count -le 5 ] do echo "두 번째 루프 #$count" sleep 1 count=$(($count + 1)) done


신호 차단 수정

수정 후에는 신호가 새로운 방식으로 처리됩니다.

간단히 트랩 명령을 실행하고 이중 대시와 신호 이름을 전달하여 신호 차단을 취소할 수도 있습니다.

#!/bin/bash Trap "echo "Ctrl-C가 갇혔습니다."" SIGINT count=1 while [ $count -le 5 ] do echo "Loop #$count" sleep 1 count=$(($count + 1) ) done Trap -- SIGINT echo "방금 트랩을 제거했습니다" count=1 while [ $count -le 5 ] do echo "두 번째 루프 #$count" sleep 1 count=$(($count + 1)) done
가로채기가 취소되기 전에 스크립트가 신호를 받으면 다음에 지정된 대로 처리합니다. 현재 팀덫. 스크립트를 실행해 보겠습니다.

$ ./myscript
그리고 키보드에서 CTRL + C를 누르세요.


차단이 취소되기 전에 차단된 신호입니다.

신호 차단이 적용되는 스크립트 실행 시 처음으로 CTRL + C를 누르는 경우가 발생하므로 스크립트는 신호에 할당된 echo 명령을 실행했습니다. 실행이 unhook 명령에 도달한 후 CTRL + C 명령이 평소와 같이 작동하여 스크립트를 종료했습니다.

백그라운드에서 명령줄 스크립트 실행

때때로 bash 스크립트는 작업을 완료하는 데 오랜 시간이 걸립니다. 그러나 스크립트가 완료될 때까지 기다리지 않고 명령줄에서 정상적으로 작업할 수 있어야 할 수도 있습니다. 구현하는 것은 그리 어렵지 않습니다.

ps 명령으로 출력된 프로세스 목록을 본 경우 터미널에 연결되지 않고 백그라운드에서 실행 중인 프로세스를 발견했을 수 있습니다.
다음 스크립트를 작성해 보겠습니다.

#!/bin/bash count=1 while [ $count -le 10 ] do sleep 1 count=$(($count + 1)) 완료
이름 뒤에 앰퍼샌드 문자(&)를 지정하여 실행해 보겠습니다.

$ ./myscipt &
이렇게 하면 백그라운드 프로세스로 실행됩니다.


백그라운드에서 스크립트 실행

스크립트는 백그라운드 프로세스에서 시작되고 해당 식별자가 터미널에 표시되며 실행이 완료되면 이에 대한 메시지가 표시됩니다.

스크립트는 백그라운드에서 실행되지만 계속해서 터미널을 사용하여 STDOUT 및 STDERR에 메시지를 출력합니다. 즉, 출력되는 텍스트나 오류 메시지가 터미널에 표시됩니다.


프로세스 목록

이 접근 방식을 사용하면 터미널을 종료하면 백그라운드에서 실행 중인 스크립트도 종료됩니다.

터미널을 닫은 후에도 스크립트가 계속 실행되도록 하려면 어떻게 해야 합니까?

터미널을 닫을 때 종료되지 않는 스크립트 실행

터미널 세션을 종료한 후에도 백그라운드 프로세스에서 스크립트를 실행할 수 있습니다. 이를 위해 nohup 명령을 사용할 수 있습니다. 이 명령을 사용하면 프로세스로 전송되는 SIGHUP 신호를 차단하여 프로그램을 실행할 수 있습니다. 결과적으로 프로세스가 시작된 터미널을 종료하더라도 프로세스가 실행됩니다.

스크립트를 실행할 때 이 기술을 적용해 보겠습니다.

안돼 ./myscript &
이것이 터미널에 출력되는 내용입니다.


팀 노홉

nohup 명령은 터미널에서 프로세스를 연결 해제합니다. 이는 프로세스가 STDOUT 및 STDERR에 대한 참조를 잃게 됨을 의미합니다. 스크립트에 의한 데이터 출력을 잃지 않기 위해 nohup은 STDOUT 및 STDERR에 도착하는 메시지를 자동으로 nohup.out 파일로 리디렉션합니다.

동일한 디렉터리에서 여러 스크립트를 실행하는 경우 해당 출력은 단일 nohup.out 파일로 끝납니다.

과제 보기

jobs 명령을 사용하면 셸에서 실행 중인 현재 작업을 볼 수 있습니다. 다음 스크립트를 작성해 보겠습니다.

#!/bin/bash count=1 while [ $count -le 10 ] do echo "Loop #$count" sleep 10 count=$(($count + 1)) done
실행해보자:

$ ./myscript
Ctrl + Z 키 조합을 사용하여 일시적으로 중지하세요.


스크립트 실행 및 일시 중지

화면에 아무것도 표시되지 않도록 스크립트의 출력을 파일로 리디렉션하면서 백그라운드에서 동일한 스크립트를 실행해 보겠습니다.

$ ./myscript > 아웃파일 &
이제 jobs 명령을 실행하면 일시 중지된 스크립트와 백그라운드에서 실행 중인 스크립트에 대한 정보를 모두 볼 수 있습니다.


스크립트에 대한 정보 얻기

jobs 명령을 호출할 때 -l 스위치는 프로세스 ID에 대한 정보가 필요함을 나타냅니다.

일시 중단된 작업 다시 시작

백그라운드에서 스크립트를 다시 시작하려면 bg 명령을 사용할 수 있습니다.

스크립트를 실행해 보겠습니다.

$ ./myscript
CTRL + Z를 누르면 실행이 일시적으로 중지됩니다. 다음 명령을 실행해 보겠습니다.

$bg


bg 명령

이제 스크립트가 백그라운드에서 실행 중입니다.

일시 중지된 작업이 여러 개인 경우 작업 번호를 bg 명령에 전달하여 특정 작업을 다시 시작할 수 있습니다.

작업을 다시 시작하려면 일반 모드 fg 명령을 사용하십시오.

스크립트 실행 계획

Linux는 특정 시간에 bash 스크립트를 실행하는 몇 가지 방법을 제공합니다. at 명령과 cron 작업 스케줄러가 있습니다.

at 명령은 다음과 같습니다:

[-f 파일 이름] 시간에
이 명령은 다양한 시간 형식을 인식합니다.

  • 표준(예: 10:15)은 시간과 분을 나타냅니다.
  • AM/PM 표시기를 사용하여 정오 이전 또는 이후(예: 오후 10시 15분)
  • now , noon , Midnight 와 같은 특수 이름을 사용합니다.
작업이 실행되어야 하는 시간을 지정할 수 있을 뿐만 아니라 at 명령은 지원되는 형식 중 하나를 사용하여 날짜를 전달할 수도 있습니다.
  • MMDDYY, MM/DD/YY 또는 DD.MM.YY 패턴을 사용하여 날짜를 기록하는 표준 날짜 형식입니다.
  • 날짜를 텍스트로 표현한 것(예: 7월 4일 또는 12월 25일). 연도를 지정할 수도 있고 연도 없이 지정할 수도 있습니다.
  • 지금처럼 녹음 + 25분 .
  • 녹화 보기 내일 오후 10시 15분 .
  • 녹화형식 10:15 + 7일.
이 주제에 대해 더 깊이 다루지는 않고 명령의 간단한 사용 사례를 살펴보겠습니다.

$ at -f ./myscript 지금


at 명령을 사용하여 작업 예약

at을 호출할 때 -M 스위치는 스크립트가 출력하는 내용을 보내는 데 사용됩니다. 이메일, 시스템이 그에 따라 구성된 경우. 보내는 경우 이메일불가능합니다. 이 스위치는 단순히 출력을 억제합니다.

실행 대기 중인 작업 목록을 보려면 atq 명령을 사용할 수 있습니다.


대기 중인 작업 목록

대기 중인 작업 삭제 중

atrm 명령을 사용하면 보류 중인 작업을 삭제할 수 있습니다. 전화할 때 작업 번호를 표시하십시오.

$atrm 18


작업 삭제

일정에 따라 스크립트 실행

at 명령을 사용하여 스크립트가 한 번 실행되도록 예약하면 많은 상황에서 작업이 더 쉬워질 수 있습니다. 하지만 매일 같은 시간, 일주일에 한 번, 한 달에 한 번 스크립트를 실행해야 한다면 어떻게 될까요?

Linux에는 정기적으로 실행해야 하는 스크립트를 예약할 수 있는 crontab 유틸리티가 있습니다.

Crontab은 백그라운드에서 실행되며 소위 cron 테이블의 데이터를 기반으로 예약된 작업을 실행합니다.

기존 크론 작업 테이블을 보려면 다음 명령을 사용하십시오.

$ 크론탭 -l
일정에 따라 실행되도록 스크립트를 예약할 때 crontab은 작업을 실행해야 하는 시기에 대한 데이터를 다음 형식으로 받아들입니다.

분, 시, 일, 월, 요일.
예를 들어 매일 10시 30분에 command라는 특정 스크립트를 실행하려는 경우 이는 작업 테이블의 다음 항목에 해당합니다.

30 10 * * * 명령
여기서 일, 월, 요일 필드에 사용된 와일드카드 "*"는 cron이 매월 매일 오전 10시 30분에 명령을 실행해야 함을 나타냅니다.

예를 들어 매주 월요일 오후 4시 30분에 스크립트를 실행하려면 작업 테이블에 다음 항목을 생성해야 합니다.

30 16 * * 1 명령
요일의 번호는 0부터 시작하며, 0은 일요일, 6은 토요일을 의미합니다. 또 다른 예가 있습니다. 여기서 명령은 매월 1일 정오 12시에 실행됩니다.

00 12 1 * * 명령
월 번호는 1부터 시작됩니다.
테이블에 항목을 추가하려면 -e 스위치를 사용하여 crontab을 호출해야 합니다.

크론탭 –e
그런 다음 일정 생성 명령을 입력할 수 있습니다.

30 10 * * * /홈/likegeeks/데스크탑/myscript
이 명령 덕분에 스크립트는 매일 10시 30분에 호출됩니다. "리소스를 일시적으로 사용할 수 없음" 오류가 발생하면 루트로 아래 명령을 실행하세요.

$ rm -f /var/run/crond.pid
여러 특수 디렉토리를 사용하면 cron을 사용하여 스크립트의 주기적 실행을 더욱 쉽게 구성할 수 있습니다.

/etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
그 중 하나에 스크립트 파일을 배치하면 각각 매시간, 매일, 매주 또는 매월 실행됩니다.

로그인 및 쉘 시작 시 스크립트 실행

사용자 로그인이나 셸 실행과 같은 다양한 이벤트를 기반으로 스크립트 실행을 자동화할 수 있습니다. 이러한 상황에서 처리되는 파일에 대해 읽을 수 있습니다. 예를 들어 다음 파일은 다음과 같습니다.

$HOME/.bash_profile $HOME/.bash_login $HOME/.profile
로그인 시 스크립트를 실행하려면 해당 호출을 .bash_profile 파일에 배치하세요.

터미널을 열 때 스크립트를 실행하는 것은 어떻습니까? .bashrc 파일은 이를 정리하는 데 도움이 됩니다.

결과

오늘은 경영에 관한 문제를 논의했습니다. 수명주기스크립트, 우리는 백그라운드에서 스크립트를 실행하는 방법, 실행을 예약하는 방법에 대해 이야기했습니다. 다음에는 bash 스크립트 및 라이브러리 개발의 기능에 대해 읽어보세요.

친애하는 독자 여러분! 도구를 사용하여 명령줄 스크립트가 일정에 따라 실행되도록 예약합니까? 그렇다면 이에 대해 알려주십시오.

Linux 터미널 서비스는 기본적으로 단일 작업 모드로 실행됩니다. 이는 발사된 승무원이 완료될 때까지 터미널을 차단한다는 것을 의미합니다. 이 접근 방식은 긴 실행 시간이 필요한 프로그램을 실행할 때 편리하지 않습니다. 이 문제이 문제는 두 가지 방법으로 해결할 수 있습니다. 추가 터미널 창을 열고 그 창에서 다른 명령을 실행하거나 백그라운드 모드를 사용하는 것입니다. Linux를 포함한 현재의 모든 운영 체제는 멀티태스킹 기능을 갖추고 있습니다. 이는 여러 프로그램을 동시에 실행할 수 있는 능력을 의미합니다.

명령줄 인터페이스에 즉시 액세스할 수 있도록 백그라운드에서 여단을 실행하려면 어떻게 해야 합니까? 강제로 실행된 크루를 백그라운드 프로세스라고 합니다. 백그라운드 프로세스는 화면에 표시되지 않습니다. 예를 들어 Apache HTTPD 서버는 웹 페이지를 제공하기 위해 백그라운드에서 실행됩니다. 쉘 스크립트나 명령을 낮은 우선순위 모드로 설정할 수 있습니다. 작업(예: 팀 또는 스크립트)은 명령줄 끝에 "&"를 추가하여 백그라운드에 배치할 수 있습니다. 이 명령문은 명령을 백그라운드에 두고 터미널의 공간을 확보합니다. 백그라운드에서 실행되는 팀을 작업이라고 합니다. 백그라운드 명령이 실행되는 동안 다른 명령을 실행할 수 있습니다. 구문은 다음과 같습니다.

명령 & 스크립트 이름 & /path/to/command arg1 arg2 & command-1 | 명령-2 arg1 & 명령-1 | 명령-2 -arg1 -arg2 >/경로/to/출력 &

터미널 창을 차단하지 않고 백그라운드에서 프로그램을 실행하려면 특수 “&” 강사를 사용해야 합니다. 명령 이름, 옵션 및 입력 매개변수를 지정한 후 행 맨 끝에 이 문자를 배치하십시오. 안에 일반적인 견해이 순서는 "command_name -option input_parameter &"로 입력할 수 있습니다.

ls ~/* > ~/test-file.txt &
18960

Enter 버튼을 누르면 프로그램이 백그라운드에서 자동으로 시작됩니다. 이 경우 터미널에는 "[task_number] process_identifier" 내용이 포함된 줄이 표시되고 새로 생성된 명령을 입력하라는 메시지가 표시됩니다.

Linux의 백그라운드에서 실행되는 명령 찾기

다음 명령을 실행하십시오.

데이터 출력 예:

find / -iname "*.c" 2> /dev/null > /tmp/output.txt & 실행
+ grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt 실행 &

주문 식별자는 어디에 있습니까?

표준 캐스트 외에 작업 ID에 대한 프로세스 ID를 표시하려면 -l 옵션을 전달하십시오.

데이터 출력 예:

7307 실행 find / -iname "*.c" 2> /dev/null > /tmp/output.txt &
+ 7324 grep -R "hostNamed" / 2> /dev/null > /tmp/grep.txt 실행 &

프로세스 ID만 표시하려면 다음을 입력하십시오.

데이터 출력 예:

백그라운드에서 실행 중인 명령 실행을 중지합니다.

프로세스를 강제로 또는 정상적으로 종료하려면 kill 명령을 사용하십시오. 구문은 다음과 같습니다.

PID를 죽여라
-15 PID를 죽여라
kill -9 PID
killall 프로세스-이름-여기
killall -15 프로세스-이름-여기
killall -9 프로세스-이름-여기

Linux에서 프로그램을 포그라운드 모드로 되돌리기

Linux를 사용하면 백그라운드에서 프로그램을 실행할 수 있을 뿐만 아니라 원할 경우 프로그램을 일반 실행으로 되돌릴 수도 있습니다. 이를 위한 두 가지 도구가 있습니다: 명령( 팀은 공통의 동기와 이해관계로 뭉친 사람들의 집단입니다.) fg 및 % 연산자. 그들의 노력의 원리는 매우 간단합니다. fg는 작업 번호를 매개변수로 지정해야 하며, 공백 없이 연산자 바로 뒤에 %를 대체해야 합니다.

찾기 / -name .ini 2> ~/results.txt &
19090
1화
bash: fg: 작업이 종료되었습니다
+ 1번 출구 찾기 / -name .ini 2> ~/results.txt

기본적으로 운영 체제는 다양한 작업을 수행하고 시스템을 유지하며 사용자의 요구를 충족하도록 설계된 커널과 거대한 프로그램 세트로 구성됩니다. 사용자와 운영 체제 간의 거의 모든 상호 작용은 프로그램을 통해 이루어집니다. 따라서 초보자는 Linux에서 프로그램을 실행하는 방법, 시작 중에 어떤 일이 발생하는지, 실행 방법은 무엇인지 이해하는 것이 중요합니다.

프로그램을 시작하기 전에 먼저 프로그램이 무엇인지 이해해야 합니다. Linux에서 프로그램은 실행 가능한 플래그가 설정되어 있다는 점에서만 다른 파일과 다릅니다. 이에 대해서는 이미 기사에서 자세히 썼으므로 반복하지 않겠습니다.

모든 프로그램은 여러 유형으로 나눌 수 있습니다.

  • 바이너리 프로그램- 실행할 준비가 된 프로세서에 대한 명령을 포함합니다. 대부분의 프로그램은 이 형식으로 되어 있으며 빠르며 시스템에 의해 즉시 실행됩니다.
  • 바이트코드 프로그램- 이는 더 이상 프로세서 명령이 아니라 이를 실행할 수 있는 특정 가상 머신의 명령입니다. 가상 머신이 없으면 이러한 명령을 실행할 수 없습니다. 이러한 프로그램은 더 많은 리소스를 소비하지만 속도도 매우 빠릅니다. 장점은 작업할 수 있는 모든 곳에서 수정 없이 실행할 수 있다는 것입니다. 가상 기기. 이러한 프로그램에는 Java 프로그램이 포함됩니다.
  • 스크립트 프로그램- 이 프로그램은 특수 인터프리터에 의해 실행되는 일반 텍스트 명령 세트로 구성됩니다. 이러한 프로그램은 속도는 느리지만 개발하기가 더 쉽고 코드를 쉽고 빠르게 변경할 수 있습니다.

이제 프로그램 시작으로 넘어 갑시다.

터미널에서 프로그램 실행

처음에는 수술실에서 유닉스 시스템 Linux에는 그래픽 인터페이스가 없었기 때문에 터미널의 명령을 사용하여 프로그램이 시작되었습니다. 이제 이것은 가능하며 숙련된 사용자가 매우 적극적으로 사용합니다. 프로그램 시작 구문은 다음과 같습니다.

/경로/대상/파일/프로그램옵션

매개변수는 필요할 때만 지정되지만 쉘은 항상 프로그램의 전체 경로를 알고 있어야 합니다. 프로그램 이름과 공백 뒤의 모든 내용은 매개변수입니다. 프로그램을 실행할 때 일반적으로 전체 경로를 지정하지 않는다는 점을 이미 알고 계실 것입니다. 매우 길고 불편할 것입니다.

개발자들이 해결 방법을 찾았습니다. 프로그램이 일반적으로 위치하는 폴더(/bin, /sbin, /usr/bin, /usr/sbin 등)에 대한 모든 경로를 저장하는 PATH 변수가 생성되었습니다. 다음 명령을 사용하여 내용을 볼 수 있습니다.

프로그램 이름을 입력하면 시스템은 PATH의 모든 폴더에서 해당 이름을 가진 실행 파일을 검색하고 찾으면 실행합니다. 해당 파일이 없으면 "명령어를 찾을 수 없습니다"라는 메시지가 표시됩니다. 따라서 시스템 프로그램 중 하나를 시작하려면 해당 이름을 입력하기만 하면 됩니다. 실행 가능 파일, 예를 들어:

공백 뒤에 매개변수를 전달할 수도 있습니다.

프로그램이 이 디렉터리에 없으면 전체 경로를 지정해야 합니다.

/usr/로컬/bin/ls1

다음을 통해 프로그램을 실행하고 싶다면 우분투 터미널, 현재 폴더에 있으면 상황이 약간 달라집니다. 시스템은 PATH 변수에 있는 폴더만 검색하며 현재 디렉터리는 검색하지 않습니다. 따라서 실행 파일의 이름을 입력하면 오류가 발생합니다. 기억하는 대로 전체 경로를 지정해야 합니다./:

때로는 특별한 . 예를 들어 EDITOR 변수는 다음을 나타냅니다. 텍스트 에디터기본값으로 사용해야 합니다. 다음 구문을 사용하여 명령 이름 앞에 변수 이름과 해당 값을 지정할 수 있습니다.

변수 이름 = 값 명령

예를 들어:

EDITOR=나노 비수도

기본적으로 이 명령은 Vim 편집기의 설정을 엽니다. 환경 변수설정이 나노 편집기에서 열립니다.

다른 사용자로 프로그램 실행

당신은 이미 프로그램을 실행하는 방법을 알고 있습니다. 리눅스 터미널, 다른 사용자는 어떻습니까? Windows에서는 프로그램이 시스템에서 더 많은 액세스 권한을 얻을 수 있도록 관리자로 프로그램을 실행하는 것이 일반적입니다. Linux에서는 이를 위해 sudo 유틸리티가 사용됩니다. 그녀의 이름은 다음과 같이 해독될 수 있습니다. 에스마녀 세르 하다- 사용자를 변경하고 실행합니다. 기본적으로 유틸리티는 루트 수퍼유저로 명령을 실행합니다.

sudo 명령
스도 후아미

그러나 -u 옵션을 사용하면 시스템에 로그인한 모든 사용자로 프로그램을 실행할 수 있습니다.

sudo -u 사용자 이름 명령
sudo -u 포스트그레스 whoami

whoami(나는 누구인가) 명령은 현재 사용자의 이름을 표시합니다.

백그라운드에서 프로그램을 실행하는 방법

때로는 추가 작업을 방해하지 않도록 터미널에서 장기 실행 프로그램을 실행해야 하는 경우도 있습니다. 이렇게 하려면 Linux에서 백그라운드로 프로그램을 실행하면 됩니다.

프로그램_이름 &

예를 들어:

dd if=/dev/zero of=~/file count=100000 &

시스템은 프로그램의 고유 식별자인 PID를 출력하며 이를 사용하여 프로그램을 닫을 수 있습니다.

Linux에서 스크립트를 실행하는 방법

우리는 이미 프로그램이 바이너리로 나누어져 해석된다고 말했습니다. 이전에는 바이너리 프로그램에 대해서만 이야기했습니다. 해석된 프로그램을 실행하려면 인터프리터가 직접 필요하며 이러한 프로그램에는 Java, Python, Perl, Ruby, PHP, NodeJS 등과 같은 언어로 작성된 프로그램이 포함됩니다. 이러한 프로그램을 시작하는 구문은 다릅니다.

통역사 /경로/대상/파일/프로그램옵션

인터프리터마다 다르게 동작하므로 프로그램의 전체 경로를 즉시 지정하는 것이 좋습니다. Python은 일반적으로 전체 경로를 지정하지 않고 현재 폴더에서 스크립트를 선택합니다.

파이썬 hellowrld.py

그리고 Java 프로그램은 다음과 같이 실행되어야 합니다:

자바 -jar 프로그램.jar

해석된 프로그램 파일의 경우 실행 가능성 플래그는 기본 프로그램에 매개변수로 전달되므로 선택 사항입니다. Bash 스크립트만 예외입니다. 인터프리터를 사용하여 스크립트를 실행할 수 있습니다.

아니면 스크립트 경로를 입력하세요.

쉘 자체는 실행 가능성 플래그로 스크립트를 결정하고 실행합니다. 실행 가능성 플래그가 설정되지 않은 경우 이를 추가해야 합니다.

sudo chmod u+x ./script.sh

따라서 대부분의 해석된 프로그램에 대해 빠르게 실행할 수 있는 간단한 sh 스크립트가 생성되었습니다.

GUI에서 Linux 프로그램 실행

그래픽 인터페이스를 통해 프로그램을 실행하는 것이 훨씬 더 편리합니다. 이 방법으로 콘솔 프로그램을 시작할 수 없는 경우 시스템의 기본 메뉴에서 찾을 수 있는 모든 그래픽 유틸리티에 대한 바로 가기가 있습니다.

또는 다음에서 프로그램을 실행할 수 있습니다. 파일 관리자, 마우스를 두 번 클릭하면 실행 가능성 플래그가 설정되어야 합니다.

스크립트 실행 그래픽 인터페이스. /usr/share/applications/ 디렉토리에서 모든 메뉴 바로가기를 찾을 수 있습니다. 여기에서 두 번 클릭하면 모든 프로그램을 시작할 수 있습니다. 하지만 바로가기 안에 무엇이 있는지 살펴보겠습니다. 이렇게 하려면 텍스트 편집기에서 엽니다.


무엇보다도 Exec 라인은 실행되는 명령을 지정합니다. 리눅스 프로그램바로가기를 더블클릭하면. 기존 단축키 중 하나를 사용하여 이를 기반으로 자신만의 단축키를 만들 수 있습니다. 이것은 단순히 프로그램의 이름입니다. 그러나 바로가기, 스크립트, cron 등과 같은 위치에 전체 경로를 지정하는 것이 더 낫다는 점에 유의하는 것이 중요합니다. 이 경우 시스템이 PATH를 확인하는지 또는 확인하는지 알 수 없기 때문에 오류 수가 줄어듭니다. 현재 디렉토리에서만 프로그램을 찾습니다. 이제 Linux에서 프로그램을 실행하는 방법에 대한 모든 것을 알았습니다.

결론

이 기사에서는 우분투 터미널이나 다른 터미널을 통해 프로그램을 실행하는 방법을 살펴보았습니다. 리눅스 배포판. 매우 간단한 주제처럼 보이지만 유용할 수 있는 몇 가지 흥미로운 점이 있습니다. 하지만 당신은 이미 그들에 대해 알고 있습니다. 궁금한 점이 있다면 댓글로 질문해주세요!