Linux 환경에서의 Program 실행
gcc
gcc [option] FILE
- c 컴파일러
-반드시 파일 이름을 .c 로 저장
-컴파일 결과 .out 이 됨
-"-o filename" 실행파일 이름은 filename
Library (archive) file 만들기
- library file 은 . a 로 끝남
- ar 사용
ar rcs libname.a a.o b.o c.o // library file 생성
r // 지정한 아카이브로 모듈 추가. 기존 파일임녀 치환
c // 아카이브(라이브러리파일) 생성
s // 아카이브 index 생성
x // extract
t// print content of archive
Static library (정적 Lib)
- 여러 프로그램에서 사용하는 함수를 포함하는 오브젝트 파일을 하나로 다룰 수 있도록 함.
-.a (archive )
-binding : compile time ( 소스코드로 작성한 파일을 컴파일을 통해 기계어코드로 변환)
-default linking : /lib/libc.a
Static Library 만들기
- lib___.a // lib 이름
-linking
gcc myc -lx ( libx.a for linking)]
-libc.a is default for gcc
#gcc -c a.c b.c c.c
#ar rcs libmy.a a.o b.o c.o // 컴파일 된 후 오브젝트 파일이 됨.
#gcc -o mytest my.c libmy.a // my.c 의 파일 이름은 mytest라고 정하고 libmy.a linking 함
Shared Library (공유 Lib )
- 여러 오브젝트 파일을 하나의 거대한 오브젝트 파일로 만들어 이를 공유할 수 있도록 함.
-.so (shared object)
-binding : run time (컴파일 과정이 끝나면 실행이 될 떄 응용 프로그램이 실행되어지는 때)
Shared Library 만들기
-관리자 (root ) 계정만 가능
#gcc -fPIC -c a.c b.c c.c
#gcc -shared -o libmy.so a.o b.o c.o // shared Lib 생성
#gcc -o mytest my.c libmy.so //linking
프로세스 관리
ps : 현재 동작중인 프로세스 출력
$ps // 현재 창에서 실행한 프로세스 만 출력
$ps -x // 자신이 사용하는 모든 프로세스
$ps -aux // 시스템에서 동작하는 모든 프로세스
-->ps 는 매순간 새로실행. 이전은 종료
kill: 프로세스에게 signal을 보낼 때 사용 (죽이는 COMMAND)
$kill [option] pid
$kill -s signall pid // 프로세스에게 보낼 signal 명시
$kill -KILL pid // 보통의 kill로 죽지 않을때
$kill -HUP pid // 데몬 프로세스를 다시 실행할 때
$vi a
$kill 25132 // a의 pid
--> vi a 강제 종료됨
top: CPU 사용량이 top인 프로세스 출력
$top [-][d delay][q][c][i]
-d delay : 화면 갱신 시간 설정
-c : command list 전체 보여줌
-i : idle 상태와 zombie 프로세스는 무시
top 실행 중 명령
SPACE | 화면 갱신 |
k | kill 명령 |
q | top 종료 |
P | %CPU값으로 정렬(default) |
T | Time 값으로 정렬 |
W | 바꾼 설정을 저장 |
nonhup : 로그아웃 후에도 계속 프로세스가 수행 되도록 함
$nohup 실행파일이름 &
nice : 프로세스를 매우 낮은 우선순위로 수행
$nice 실행파일이름
Shell 내부 명령어 및 제어키
-foreground : 현재 터미널에서 수행
-background : 터미널 이면에서 수행
& :command 뒤에 붙이면 background로 실행
jobs : 현재 shell 아래에서 수행중인 프로세스 보여줌
fg [job_id] : job_id 의 프로세스를 foreground로 전환( 만약 id 입력 안하면 가장 최근 stop시킨 프로세스)
bg[job_id] : `` background로 전환 ( ``)
ctr-c :foreground 프로세스 종료
ctr-z :foreground 프로세스의 stop (fg or bg로 계속 실행 가능)
$jobs
[1]실행중 ./a.out &
[2]실행중 ./a.out &
[3]정지됨 ./a.out
$fg 3
./a.out
^Z
[3]정지됨 ./a.out
$bg 3
[3] .a.out &