1. 프로세스(Process)
A. 프로세스 ID 확인 명령문
i. echo $$
B. 동작 중인 프로세스들 확인 명령문
ii. ps -u [사용자ID]
C. 예시
$ echo $$
[현재 ProcessID 출력]
$ ps -u [사용자ID]
[현재 동작중인 프로세스들 확인]
$ finger [사용자ID]
[현재 동작중인 프로세스에 대한 세부 정보가 나옴]
2. 프로세스 환경
A. cat 명령어
i. 해당 파일에 대한 내용 보기
ii. $ cat [파일명]
iii. 예시
$ cat [파일명]
[파일 내용이 출력됨]
$ cat [파일명] |pg
[파일 내용이 출력됨. 맨 끝에 (EOF) 라는 기호가 나옴.]
B. ps 명령어
i. ps -u [사용자ID] : 현재 동작중인 프로세스들의 UserID, ProcessID 등의 정보를 출력함
ii. ps -ef |grep [사용자ID] : 프로세스의 모든 정보들을 출력함
iii. 예시
a. ps -u [사용자ID]
b. ps -ef |grep [사용자ID]
3. 셸의 부모-자식 관계
A. ksh : 현재 셸에서 서브 셸(Subshell)을 만드는 명령어
i. [Ctrl]+[d]를 누르면 서브 셸에서 원래 셸로 되돌아온다.
a. 예시
1. 서브 셸 들어 가기 전 상태 : ps -ef |grep [사용자ID] 명령어로 확인한다.
2. echo $$ 명령어로 프로세스 ID를 확인하고, ksh를 입력한 후에 프로세스 ID 확인을 한번 더 확인해본다.
프로세스 ID 번호가 서로 다름을 알 수 있다.
ps -ef |grep [사용자ID] 명령어로 프로세스 상태를 확인해본다.
3. [Ctrl]+[d] 키를 누른 후에 다시 echo $$ 명령어로 프로세스 ID를 확인하고, 프로세스 상태를 확인해본다.
ksh 기록이 없어졌음을 알 수 있다.
4. 변수와 프로세스
A. 현재 셸과 서브 셸 사이에서 변수는 공유되지 않는다.
B. 예시1
i. 변수 x에 4를 넣고, ksh 명령어로 서브 셸에 들어간다.
ii. echo $x 명령어로 변수 x 값을 확인해본다. 아마 값이 아예 안나오거나, 4가 아닌 엉뚱한 값이 나올 것이다.
iii. 서브 셸에서 변수 x에 1을 넣고 [Ctrl]+[d]키를 눌러서 서브 셸을 빠져나온다.
iv. echo $x 명령어로 변수 x 값을 확인해본다. 1이 아닌 4가 나올 것이다.
C. 현재 셸과 서브 셸 사이에 변수를 공유하려면, 변수를 정의할 때, export 를 앞에 붙인다.
D. 예시2
i. 변수 x에 4를 넣되, 변수 앞에 export를 붙이도록 한다.
ii. ksh 명령어로 서브 셸에 들어가서 x 값을 확인해본다. 기존 셸에서 넣었던 4라는 값이 그대로 나올 것이다.
iii. [Ctrl]+[d] 명령어로 서브 셸을 빠져나오고, 다시 x값을 확인해본다. 또 4라는 값이 나올 것이다.
5. 셸 스크립트(Shell Script)
A. 텍스트 파일로 저장한 명령어 모음 파일
B. MS-DOS의 BAT 파일과 비슷한 역할을 한다.
C. 예시1
i. hello라는 파일을 새로 만들기 위해 vi 에디터를 실행시킨다.
ii. echo, pwd, ls 명령어를 활용하여, 아래와 같이 작성하고, :wq! 를 입력하여 저장한다.
iii. sh hello를 입력하여, hello 파일을 실행시켜 본다. 입력했던 명령어들이 그대로 실행될 것이다.
ls -l 명령어로 hello 파일의 권한 상태를 확인한다. 실행권한이 없음을 알 수 있을 것이다.
이처럼 sh [파일명] 명령어는 해당 파일을 강제로 실행할 때 사용하는 명령어다.
iv. hello 파일에 실행 권한을 부여한다. 현재 권한 값이 644인 것을 755로 바꾼다.
v. 다시 ls -l 명령어로 hello 파일의 권한을 확인한다. 실행 권한이 부여되었음을 확인할 수 있다.
vi. 이제 hello 만 입력해도 알아서 미리 입력해둔 명령어들이 실행된다.
vii. ksh hello를 입력하여, 서브 셸에서도 파일이 실행되는지 확인한다. 아주 잘 돌아간다.
D. 예시2
i. set_dir 파일을 만들기 위해 vi 에디터를 실행시킨다.
ii. /tmp를 dir1 변수에 넣고, /usr을 dir2에 넣고, :wq 명령어로 저장시킨다.
iii. . set_dir을 입력하여 set_dir을 실행시켜본다. 별 반응이 없을 것이다.
set_dir 파일의 권한을 744로 조정하고, $dir1과 $dir2에 어떤 변수가 들어가 있는지 확인한다.
그림에는 안 나와 있지만, ls $dir1 혹은 ls $dir2도 실행시켜본다.
6. 반환 코드(exit code)
A. 환경변수 $?는 마지막에 실행한 명령어의 반환 값(exit value)을 갖고 있다.
B. 마지막 실행 명령어를 제대로 수행했을 경우 : $?는 0 값을 가진다.
C. 마지막 실행 명령어를 제대로 수행하지 못했을 경우 : $?는 1~255 사이 값을 가진다.
D. 예시
i. ls 명령어를 한번 수행해보고, $? 결과를 확인한다.
ii. 말도 안되는 명령어를 아무거나 입력하고, 다시 $? 결과를 확인한다.
7. 종합 실습
A. 현 디렉토리의 파일 개수를 출력하는 스크립트 파일 만들기
i. vi 에디터를 이용하여, count_file 이란 이름을 가진 파일 개수를 세는 스크립트 파일을 만들 것이다.
ii. 아래 그림과 같이 스크립트를 작성하고, :wq 를 입력하여 저장한다.
echo "Number of files:" ------ Number of files: 라는 문구를 출력시킴
ls -l | wc -l ---------------- 현 디렉토리의 파일 개수를 출력시켜 주는 명령어
iii. 새로 생성한 파일의 소유자를 현 사용자로 조정하고, 파일 권한에 실행 권한을 추가한다.
count_file을 실행해본다. 사용자가 위치한 현 디렉토리의 파일 개수가 나올 것이다.
B. 현 서버의 사용자 ID 명단과, 사용자 인원 수를 출력하는 스크립트 파일 active 만들기
i. vi 에디터로 active 파일을 만들 것이다.
ii. 아래 내용대로 스크립트를 작성하고, 저장한다.
echo "Active users:" -----Active users: 라는 문구가 그대로 출력됨
who --------------------현 서버의 사용자 ID 명단을 출력하는 명령어
echo "Number of active users:" --- Number of active users: 문구가 그대로 출력됨
who|wc -l --------------현 서버의 사용자 ID 개수를 세서 출력하는 명령어
iii. 새로 생성한 active 파일의 소유자를 현 사용자로, 파일 권한에 실행 권한을 추가시킨다.
iv. active 파일을 실행해본다.
8. 확인문제
A. . 기호를 셸 스크립트에 사용하는 시기
사용자 자신이 정해놓은 변수 값을 사용자 자신의 셸에 적용하고 싶을 때 사용
B. 서브 셸까지 변수를 적용하고자 할 때 사용하는 명령어
export
'UNIX&LINUX > AIX' 카테고리의 다른 글
[AIX Admin.] 1. AIX 6.1 설치 (0) | 2014.02.03 |
---|---|
[AIX BASIC] 9. 셸 변수 활용하기 (0) | 2014.02.03 |
[AIX BASIC] 8. AIX 유틸리티 (0) | 2014.02.03 |
[AIX BASIC] 7. 프로세스 제어 (Controlling Processes) (0) | 2014.02.03 |
[AIX BASIC] 5. 셸(Shell)과 셸 변수 (0) | 2014.02.03 |
[AIX BASIC] 4. vi 에디터 (0) | 2014.02.03 |
[AIX BASIC] 3. 파일 사용, 파일 권한 (0) | 2014.02.03 |
[AIX BASIC] 2. AIX 5L V5.3 Documentation, Files & Directories (0) | 2014.02.03 |