Linux 13

[리눅스 바이블] 16. 스크립트 제어

신호 처리 bash 쉘에게 전달되는 신호 다음은 널리 쓰이는 리눅스 신호이다. 신호 값 설명 1 SIGHUP 프로세스를 끊는다 2 SIGINT 프로세스를 중지시킨다 3 SIGQUIT 프로세스를 중단시킨다 9 SIGKILL 무조건 프로세스를 종료한다 15 SIGTERM 가능하면 프로세스를 종료한다 17 SIGSTOP 무조건 프로세스를 중단하지만 종료하지는 않는다 18 SIGSTP 프로세스를 중단 / 일시 중지하지만 종료하지는 않는다 19 SIGCONT 중단되었던 프로세스를 계속한다 신호 만들기 프로세스를 중지시키는 SIGINT 신호를 만들어내기 위해서는 Ctrl + C 키 조합을 누른다. 프로세스를 일시 중지시키는 SIGSTP 신호를 만들어내기 위해서는 Ctrl + Z 키 조합을 사용한다. ps를 통해 실..

[리눅스 바이블] 15. 데이터 보여주기

입력 및 출력 이해하기 리눅스 시스템은 모든 개체를 파일로 다루며 파일 디스크립터를 사용하여 각 파일 개체를 식별한다. 각 프로세스는 한 번에 최대 9개의 파일 디스크립터를 열 수 있다. 파일 디스크립터 0은 STDIN 파일 디스크립터 1은 STDOUT 파일 디스트립터 2는 STDERR STDIN 파일 디스크립터는 쉘의 표준 입력을 의미한다. 터미널 인터페이스에서 표준 입력은 키보드이다. STDOUT 파일 디스크립터는 쉘의 표준 출력을 뜻한다. 터미널 인터페이스에서 표준 출력은 모니터이다. STDERR 파일 디스크립터는 쉘의 표준 오류 출력을 의미한다. 기본적으로 STDOUT 파일 디스크립터와 같은 곳을 가리킨다. 오류만 리다이렉트하기 위해서는 2> 기호를 사용한다. 정상 출력을 리다이렉트하기 위해서는 ..

[리눅스 바이블] 14. 사용자 입력 처리

매개변수 전달하기 쉘 스크립트에 데이터를 전달하는 가장 기본적인 방법은 커맨드라인 매개변수를 사용하는 것이다. 쉘 스크립트내에서 $1, $2와 같이 아홉번째 매개변수인 $9까지 사용할 수 있다. 아홉번째 매개변수 이후에는 ${10}과 같이 변수의 번호 주위에 중괄호를 사용해야 한다. 각 매개변수는 빈 칸으로 구분되므로 매개변수 값에 빈 칸을 포함하려면 따옴표를 사용해야 한다. 스크립트의 이름은 $0에 저장되어 있다. 다만 스크립트를 어디에서 실행하느냐에 따라 다른데, $0 변수는 스크립트의 전체 경로 및 이름으로 설정된다. #!/bin/bash echo "The zero parameter is set to $0" 위의 파일을 bash /home/user/test.sh와 같이 실행하게 되면 /home/us..

[리눅스 바이블] 13. 반복문 사용하기

for 명령 다음은 bash 쉘 for 문의 기본 형식이다. for var in list do commands done #!/bin/bash for test in A B C D E do echo "test: $test" done 다만 목록안에 홑따옴표(')가 있다면 bash 쉘은 이를 구분자로 인식한다. 따라서 \를 써서 이스케이프 처리를 해주거나, 곁따옴표로 둘러싸야 한다. 또는 우리가 원하는 데이터 값 사이에 빈칸이 있다면 이를 겹따옴표로 감싸야 한다. 직접적인 목록말고도 명령의 출력을 사용할 수도 있다. #!/bin/bash file="states" for state in $(cat $file) do echo "Visit beautiful $state" done 위처럼 명령의 출력을 읽을 때도 구분..

[리눅스 바이블] 12. 조건문 사용하기

if-then 구문 사용하기 구조적 명령의 가장 기본은 if-else 구문이다. 형식은 다음과 같다. if command then command1 command2 ... elif command then command3 command4 ... else command5 command6 ... fi 일반적인 프로그래밍 언어에서는 if문 다음에 오는 객체는 True/False 값을 평가하는 표현식이나, bash 쉘의 if문은 그 줄에 정의된 명령을 실행한다. 이 명령의 종료 상태가 0이라면 then 뒤에 명령이 실행되고, 0이 아니라면 실행되지 않는다. test 명령 사용하기 위의 방법은 bash의 if-then 구문이 명령의 종료 상태 코드말고도 다른 조건은 평가할 수 없다. 하지만 test 명령을 사용함으로..

[리눅스 바이블] 11. 스크립트 구축의 기초

여러 명령 사용하기 두 개의 명령을 함께 실행하고 싶다면 같은 프롬프트 라인에 세미콜론(;)으로 둘을 구분하여 입력한다. 스크립트 파일 만들기 쉘 스크립트 파일을 만들 때에는 파일의 첫 번째 줄에 사용하고 있는 쉘을 지정해야 한다. #!/bin/bash date whoami 보통의 쉘 스크립트 라인에서 #은 주석으로 사용되지만, 첫 번째 줄은 # 기호 다음에 느낌표를 쓰면 쉘에게 이 스크립트가 어떤 쉘에서 실행되는지를 알려준다. 스크립트 파일을 실행하기 위해서는 PATH 환경변수안에 있는 쉘 스크립트 파일이 있는 디렉토리를 추가하거나, 프롬프트에서 쉘 스크립트 파일의 절대/상대 경로를 명시해야 한다. 또한 쉘이 쉘 스크립트 파일을 실행하기 위해서는 실행권한을 줘야하는데, 주로 chmod 명령을 사용한다...

[리눅스 바이블] 8. 파일시스템 관리하기

리눅스 파일시스템 살펴보기 기본적인 리눅스 파일시스템 이해하기 리눅스 OS와 함께 도입된 원래의 파일시스템은 확장 파일시스템(ext)로, 이 시스템은 물리적 장치를 다루기 위해서 가상 디렉토리를 사용하며 물리적 장치에 고정 길이의 블록을 이용해서 데이터를 저장하는 유닉스와 비슷한 파일시스템을 리눅스에 제공한다. ext 파일시스템은 가상 디렉토리에 저장되어 있는 파일에 대한 정보를 추적하기 위하여 아이노드(Inode)라는 시스템을 사용한다. 아이노드 시스템은 각각의 물리적 장치마다 파일 정보를 저장하기 위해 아이노드 테이블이라는 것을 만드는데, 가상 디렉토리에 저장되는 각 파일은 아이노드 테이블에 항목을 가진다. 리눅스는 데이터 파일이 만들어질 때 파일시스템이 할당하는 고유한 번호(아이노드 번호)를 써서 ..

[리눅스 바이블] 7. 리눅스 파일 사용 권한 이해하기

리눅스 보안 리눅스 보안 시스템의 핵심은 사용자 계장이다. 사용자 권한은 UID로 추적된다. /etc/passwd 파일 리눅스 시스템은 실제 사용자가 아닌 기능에 관련된 사용자 기능을 많이 만드는데, 이를 시스템 계정이라고 한다. 백그라운드 모드에서 실행되는 모든 서비스는 시스템 사용자 계정으로 리눅스 시스템에 로그인해야 한다. /etc/passwd 파일의 필드는 로그인 사용자의 이름, 사용자의 암호, UID, GID, 설명 텍스트(주석 필트), HOME 디렉토리의 위치, 기본 쉘과 같은 정보를 포함한다. 암호 필드는 x로 설정되는데 실제 암호는 /etc/shadow에 저장되어 있다. 새 사용자 추가하기, 없애기, 수정하기 새사용자를 추가하기 위해선 useradd 명령을 사용한다. 시스템 기본값을 확인하..

[리눅스 바이블] 6. 리눅스 환경 변수 사용하기

환경 변수 살펴보기 bash 쉘에는 두 가지 환경 변수의 유형이 있다. 전역 변수와 지역 변수 두 가지이다. ​ 전역 환경 변수​ 전역 환경 변수는 쉘 세션 및 그로부터 파생된 자식 서브쉘에서 사용할 수 있다. 전역 환경 변수를 보려면 env 또는 printenv 명령을 사용한다. 시스템 환경 변수는 모두 대문자를 사용한다. ​ 지역 환경 변수 지역 환경 변수는 그 변수를 정의한 지역 프로세스에서만 볼 수 있다. set 명령을 통해 특정 프로세스에 대한 모든 변수를 표시하고, 지역 및 전역 환경 변수와 사용자 정의 변수를 알 수 있다. 즉, env 명령을 써서 표시되는 변수에 지역 환경 변수 및 사용자 정의 환경 변수가 표시되는 것이다. 사용자 정의 변수 설정하기 사용자 정의 지역변수 설정하기 my_va..

[리눅스 바이블] 5. 쉘 이해하기

쉘의 유형 알아보기 ls -l /bin/sh 위와 같은 명령을 입력하면 기본 시스템 쉘인 /bin/sh가 소프트링크를 이용해서 bash로 지정한 것을 볼 수 있다. dash 쉘 등 다른 쉘을 실행하고 싶다면 /bin/dash 등을 직접 입력해서 실행하고 exit을 통해 나갈 수 있다. 부모/자식 쉘 관계 이해하기 사용자가 터미널에 로그인할 때 실행되는 기본쉘은 부모쉘이다. 부모 쉘 프로세스는 CLI 프롬프트를 제공하고 명령이 입력될 때까지 기다린다. ps -f 프로세스는 bash 프로세스의 자식 프로세스임을 알 수 있다. 서브쉘로 가지를 쳤을 때 ps --forest 명령을 입력하면 부모-자식 관계를 트리 구조로 볼 수 있다. 서브쉘을 만드는 방법은 1. 쉘 스크립트를 실행하거나 2. 프로세스 목록을 만..