2010.7.16
什麼是進程 ?簡單的理解,一個進程就是載入在內存中的一組程序指令,是一個應用程序的運行實例。通常使用進程號(PID)來對進程進行識別。進程同樣也包含有UID、GID和SELinux安全上下文等一些從執行者那裏繼承過來的權限和屬性。
進程是用戶的代理,用戶對計算機的操作是通過進程來實現的。
ls /proc
進程標識符:1-32767 有符號的16位二進制數 eg.1永遠屬於init
任何子進程都是父進程fork(複製自己)出來的,若父進程不滿足子進程的需要,可以進行修改
①內存管理
②進程管理
③硬件管理
④CPU管理àtime slice時間片
⑤文件系統管理
進程的優先級由數字來區分,數值越小,優先級越高。但是優先級可以調整。
可以通過調整進程的MAX值來動態調整優先級別。
ps查看當前啓動的進程信息
可接受的選項GNU,BSD,UNIX。有可帶“-”的,也有不能帶“-”的(BSD)
進程可分爲用戶進程和守護進程兩類。用戶進程àterminalàshell。守護進程:工作在後臺,與terminal無關的,開機自動啓動的。
a 用來顯示和終端有關的進程
pts/1 當前終端
? 不匹配任何終端,未進入終端之前運行的程序
? 不匹配任何終端,未進入終端之前運行的程序
x 用來顯示和終端無關的進程(後臺的守護進程)
u 以用戶爲導向中心的進程信息(進程的發起者,即進程的屬主)
s 使用一個字符顯示進程狀態(D不可終端的睡眠;R正在運行或可運行的進程;S可終端的睡眠;Z父進程無法結束子進程)
o 自定義需要顯示的信息
f 顯示進程間的父子關係
@# init 是所有進程的父進程
RSS 真實進程
VSZ 虛擬進程
@# init 是所有進程的父進程
RSS 真實進程
VSZ 虛擬進程
ps axo (option)
ps axo comm,tty |grep ttys0
pgrep -U 查看某一個用戶
pgrep -G 查看某一個用戶組
pidof bash 查看某一個程序
ps axo comm,tty |grep ttys0
pgrep -U 查看某一個用戶
pgrep -G 查看某一個用戶組
pidof bash 查看某一個程序
Signals(信號)
signal (15) 正常結束
signal 9 強制結束 產生垃圾(臨時)文件
signal 1 重新讀取配製文件
管理進程
kill [sign]PID 結束一個正在運行的進程
@# service vsftpd reload 重新加載vsftpd
killall httpd 結束某個服務的所有進程
pkill 整合以上兩者。
進程的優先級
①進程優先級的範圍是-20~19 數字越小,優先級越高。
②默認情況下所有進程的優先級都爲0.
③對於一個未運行的程序 a.$ renice -n -5 command
④對於一個正在運行的程序 b.$ renice $5 PID
計劃任務:
signal (15) 正常結束
signal 9 強制結束 產生垃圾(臨時)文件
signal 1 重新讀取配製文件
管理進程
kill [sign]PID 結束一個正在運行的進程
@# service vsftpd reload 重新加載vsftpd
killall httpd 結束某個服務的所有進程
pkill 整合以上兩者。
進程的優先級
①進程優先級的範圍是-20~19 數字越小,優先級越高。
②默認情況下所有進程的優先級都爲0.
③對於一個未運行的程序 a.$ renice -n -5 command
④對於一個正在運行的程序 b.$ renice $5 PID
計劃任務:
at 僅執行一次就從計劃中刪除, 某個待定時刻要做的事情。
crontab
#crontab -e 編輯當前用戶的cron表
#crontab -l 查看當前用戶的cron表
#crontab -r 刪除當前用戶的cron進程
#crontab -u 用戶名 以某用戶的身份來控制cron表
#crontab -e 編輯當前用戶的cron表
#crontab -l 查看當前用戶的cron表
#crontab -r 刪除當前用戶的cron進程
#crontab -u 用戶名 以某用戶的身份來控制cron表
週期
* * * * *
分 時 日 月 周
30 23 1 * * 即每個月的1號23點30分。
* 10,12 1 * * 即每個月的1號10、12時的每一鍾執行。
* * * * *
分 時 日 月 周
30 23 1 * * 即每個月的1號23點30分。
* 10,12 1 * * 即每個月的1號10、12時的每一鍾執行。
第一個*星號代表個小時的第幾分鐘:minute 範圍是從0-59
第二個*星號代表每天的第幾個小時:hour 範圍是從0-23
第三個*星號代表每月的第幾個日:day-of-month 範圍從1-31
第四個*星號代表沒年的第幾個月:month-of-year 範圍從1-12
第五個*星號代表每週的星期幾:day-of-week 範圍從0-6,其中0表示星期日
第二個*星號代表每天的第幾個小時:hour 範圍是從0-23
第三個*星號代表每月的第幾個日:day-of-month 範圍從1-31
第四個*星號代表沒年的第幾個月:month-of-year 範圍從1-12
第五個*星號代表每週的星期幾:day-of-week 範圍從0-6,其中0表示星期日
命令分組:
小括號表示在子shell裏運行的
trap 捕捉信號命令
eg.trap ‘echo “You stop the pingping…” && exit 3’ INT
捕捉Ctrl+c信號,捕捉到後,輸出一句話並返回一個值—3.
PATH用來定義命令搜索路徑
LANG定義默認語言
hash顯示執行過的命令(搜索路徑)
/etc/profile,/etc/profile.d/*,/etc/bashrc 全局設置
~/.bash_profile,~/.bashrc
/etc/profileàlogin shell 只對登陸shell生效