커널은 시스템에서 실행 중인 각 프로그램을 프로세스로 간주
커널은 프로세스ID(PID)로 프로세스를 식별한다.
프로세스 시작
- 시스템 부트
프로세스 종료
- 일반적으로 나가기
: 새로운 프로세스(하위 프로세스) 생성
int execl(char path, char arg0, char *arg1, ..., 0)
: 인수가 있는 경로에서 실행 파일을 로드하고 실행함
: 프로세스 상태, 메모리 영역에 대한 포인터, 현재 디렉토리, 파일 디스크립터에 대한 포인터, 수신 신호, 작업의 우선순위 계획
: 지속적으로 업데이트 되는 프로세스 활동을 표시
동시 프로세스에 대한 제어 흐름은 시간이 지남에 따라 물리적으로 분리
두 프로세스의 흐름이 시간적으로 중복되는 경우 두 프로세스가 동시에 실행 (그렇지 않으면 순차적으로 실행)
: 제어흐름은 context switch를 통해 한 프로세스에서 다른 프로세스로 전달된다.
context switch시 커널코드는 이전 프로세스의 PCB를 저장하고 다음 프로세스의 PCB를 복원한다.
-INT(2) : 실행을 중지,Ctrl+C를 누르면 커널에서 정지시킨다.
-TERM(15) : 프로세스를 정상적으로 종료하도록 요청
-KILL(9) : 프로세스 강제 중지
-TSTP(20) : 프로세스 일시정지, Ctrl+Z
-HUP(1) : 로그아웃, 데몬에서 구성 파일을 다시 읽기 위해 사용
-CHLD(17) : 부모 프로세스에 신호를 보냄
데몬은 일반적으로 동작에 영향을 미친다.
대부분의 데몬은 시작할 때만 구성 파일을 읽는다.
top 또는 ps-lㅇ르 보고 PRI열을 보면 현재 우선순위를 볼 수 있다.
nice를 사용하여 우선순위 변경가능
: 활성 작업 목록과 해당 작업 번호 인쇄
: 일회성 명령이이다.
"atq" 명령 : 보류중인 at 명령을 나열한다.
"at -c number" : 환경을 포함하여 해당 번호를 가진 명령어를 보여준다.
"atrm number" : 숫자에 맞는 명령어를 제거합니다.
: 정기적으로 반복하는 명령어이다.
파일에 의해 반복을 정한다.
루트 권한을 가진다.
/etc/cron.d
: 이 디렉토리의 파일은 특정 형식 라인을 포함해야한다.
(언제 명령을 실행하는지, 명령을 실행할 사용자, 실행할 명령)
이러한 파일을 cron table 또는 crontab이라고 부른다.
crontab 형식
1) 빈 줄 무시
2) #로 시작하는 줄은 주석
3) 환경 변수 설정 가능
crontab 날짜 및 시간 지정
1) 분 : 0~59
2) 시 : 0~23
3) 일 : 1~31
4) 월 : 1~12
5) 요일 : 0~7(0과7은 일요일)
-거의 오름차순 정렬 필드
-필드가 일치하면 명령이 실행됨
-별표(*)가 포함된 필드는 항상 일치한다.
User crontabs
: 루트가 아닌 사용자가 cron 작업을 설정해야 할 때 사용
"crontab"으로 조작
"crontab -e"으로 crontab 편집
"crontab -l"으로 crontab 표시
"cron"과 "at"의 권한
/etc/cron.allow에 존재하는 사용자만 crontab을 가질 수 있다.
/etc/cron.deny가 있는 경우에 목록에 없는 사용자도 crontab을 가질 수 있다.
둘 다 없으면 모든 사용자가 crontab을 가질 수 있다.