하나의 시스템에는 많은 프로세스들이 동시에 실행되는데,
이러한 프로세스들은 우선순위를 부여하여 관리합니다
프로세스 우선순위는 ps -l
명령어를 통해 확인할 수 있습니다
프로세스 우선순위 항목은 PRI(Priority)와 NI(Nice) 두가지 있습니다
PRI는 커널이 사용하는 우선순위 항목으로 값의 범위는 0부터 139까지입니다
값이 작을 수록 프로세스의 우선순위가 높습니다
일반적으로 0~99까지 시스템에 예약된 우선순위 값이고,
User Space Process는 100부터 139사이의 우선순위 값이 할당됩니다
PRI는 인위적으로 조작되지 않으며, 시스템 상황에 따라 적절히 부여됩니다
NI는 값을 root 사용자가 조작하는 우선순위 값으로 -20 ~19까지 설정할 수 있습니다
값이 작을 수록 우선순위가 높고, root만이 값을 변경할 수 있습니다
NI 값을 설정하면 리눅스가 상황에 따라 RPI 값을 변경하여 우선순위를 조정합니다
/proc는 가상 파일 시스템으로 시스템에 동작중인 프로세스의 상태정보와
기타 시스템 및 하드웨어 정보를 확인할 수 있습니다
/proc 디렉토리는 프로세스와 커널의 내부적인 정보를 제공하기 위해 만들어진 영역입니다
사용자가 ps 명령어를 통해 프로세스에 대한 정보를 확인할 때
이 디렉토리에 저장된 정보를 출력합니다
보통 새로운 프로세스가 생성되면 /proc 디렉토리에 PID와 동일한 서브 디렉토리가 생성되고
새로운 프로세스 정보가 저장됩니다
스케줄링은 특정한 시간에 특정한 작업을 수행하는 것으로
리눅스에서 at과 cron을 사용합니다
at과 cron은 모두 데몬으로 실행하고 있어야하고,
대부분의 리눅스는 atd
나 crond
로 동작하고 있습니다
at
은 한번만 실행할 때, cron
은 주기적으로 프로세스를 실행할 때 사용합니다
at은 특정 시간에 원하는 명령/작업을 실행하도록 합니다
보통 한번 실행되는 경우에 사용하며, atd 데몬에 의해 실행됩니다
저장한 작업은 큐에 저장되고, 저장된 작업들은 /var/spool/at
디렉토리 파일로 저장됩니다
at [option] 시간
cron을 통해 주기적으로 실행하는 작업을 설정할 수 있습니다
해당 작업은 크게 시스템 운영에 필요한 작업과 사용자가 필요한 작업으로 나뉩니다
해당 작업은 root 권한으로 /etc/crontab
에 등록해서 주기적으로 수행할 수 있습니다
사용자는 crontab
이라는 명령을 수행해서 등록할 수 있습니다
crontab
은 총 7개의 필드로 구성되어 있습니다
minute hour day_of_month month day_of_week user-name command
사용자가 주기적인 작업을 등록하기 위해 사용하는 명령으로 실행하면 기본 편집기인 vi가 실행됩니다
설정된 작업은 /var/spool/cron/사용자아이디
파일로 저장됩니다
crontab [option]
crontab [option] 파일명
at
과 cron
모두 사용자를 제한하거나 허용할 수 있습니다
각각, /etc/at.allow
, /etc/at.deny
와 /etc/cron.allow
, /etc/cron.deny
파일로 제한하거나 허용할 수 있습니다