linux基礎之進程管理與服務

進程的狀態

進程被稱做任務,有4種狀態bash

運行態 運行或準備運行
等待態 
    可中斷(TASK_ITERRUPTIBLE)
    不可中斷(TASK_UNITERRUPTIBLE)
中止態(TASK_STOPPED)
僵死態(TASK_ZOMBIE)
複製代碼

經常使用進程管理命令

# ps 查看靜態的進程統計信息
ps [選項]
    經常使用選項:
    a:顯示當前終端下的全部進程信息
    u:使用以用戶爲主的格式輸出進程信息
    x:顯示當前用戶在全部終端下的進程信息 
root@computer: ~$ ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000    10     9  3  80   0 -  4199 -      tty1     00:00:00 bash
0 R  1000    22    10  0  80   0 -  4271 -      tty1     00:00:00 ps
# 各個字段的意義
S: 進程狀態
    R: 進行
    S: 休眠
    T: 暫停或終止
    Z: 僵死
UID:進程啓動者的用戶ID
C:進程最近使用CPU的估算
PRI:進程的優先級
TIME:進程啓動之後佔用CPU的總時間
CMD:啓動該進程的命令名稱
TTY:進程所在終端的終端號
複製代碼
# 手動啓動進程
前臺啓動:用戶輸入命令,直接執行程序
後臺啓動:在命令行尾加入「&」符號
複製代碼
# Ctrl+Z 將當前進程掛起,即調入後臺並中止執行
# jobs 查看處於後臺的任務列表
# bg 將前臺做業切換到後臺運行,若沒有指定做業號,則將當前做業切換到後臺
# fg 將處於後臺的進程恢復到前臺運行,需指定任務序號
# Ctrl+C 中斷正在執行的命令
複製代碼
# kill killall 終止進程
kill 用於終止指定PID號的進程
killall 並非終止全部進程,用於終止指定名稱的全部進程
    -9 用於強制終止
複製代碼
# pkill 根據特定條件終止相應的進程
    經常使用選項:
    -U:根據進程所屬的用戶名終止相應進程
    -t:根據進程所在的終端終止相應進程
複製代碼
top命令
用途:查看動態的進程排名信息
按P鍵根據CPU佔用狀況對進程列表進行排序 
按M鍵據根內存佔用狀況進行排序
按N鍵根據啓動時間進行排序
按h鍵能夠得到top程序的在線幫助信息
按q鍵能夠正常退出top程序
按k結束進程(9:強制結束進程)
按r修改優先級(NI)
使用空格鍵能夠強制更新進程狀態顯示

經過更改進程的nice值,能夠調整進程的優先級使它所佔有的cpu份額大於或小於其餘進程
Nice值的範圍從-20到20,默認爲0
經過提升nice的值,減小cpu的使用時間下降優先級
只有root用戶能夠下降nice的值,提升優先級
renice和top均可以用於更改正在運行的進程的nice值
nice能夠用於設置進程的nice值
複製代碼

計劃任務管理

# at 在指定的日期、時間點自動執行預先設置的一些命令操做,屬於一次性計劃任務
使用at命令,首先須要啓動/etc/init.d/atd
root@computer: ~$ service atd start
而後纔可使用at命令 at [HH:MM] [yyyy-mm-dd]
root@computer: ~$ at 20:20
at>echo "hello" # crtl+D 提交任務
at><EOF>
複製代碼
# crontab 按照預先設置的時間週期(分鐘、小時、天……)重複執行用戶指定的命令操做,屬於週期性計劃任務
若想使用crontab,須要啓動/etc/init.d/crond
並設置相應配置文件
 全局配置文件,位於文件:/etc/crontab 
 用戶定義的設置,位於文件:/var/spool/cron/用戶名
crontab設置格式: 分鐘 小時 日期 月份 星期 任務

分鐘 取值爲從0到59之間的任意整數
小時 取值爲從0到23之間的任意整數
日期 取值爲從1到31之間的任意整數
月份 取值爲從1到12之間的任意整數
星期 取值爲從0到7之間的任意整數,0或7表明星期日
命令 要執行的命令或程序腳本

時間數值的特殊表示方法
* 表示該範圍內的任意時間
, 表示間隔的多個不連續時間點
- 表示一個連續的時間範圍
/ 指定間隔的時間頻率

例如:
0  17  *  *  1-5        週一到週五天天17:00 
30  8  *  *  1,3,5	每週1、3、五的8點30分
0  8-18/2  *  *  *	8點到18點之間每隔2小時
0  0  */3  *  *		每隔3天

# 編輯計劃任務
crontab -e [-u 用戶名]

假設root用戶,須要完成如下任務
天天早上7:50自動開啓sshd服務,22點50時關閉
每隔5天清空一次FTP服務器公共目錄/var/ftp/pub(若是目錄不存在,能夠安裝vsftpd,或者本身建立目錄)
每週六的7:30時,從新啓動httpd服務
每週1、3、五的17:30時,打包備份/etc/httpd目錄

root@computer: ~# crontab -e
50 7 * * * /usr/bin/systemctl start sshd
50 22 * * * /usr/bin/systemctl stop sshd
0 0 */5 * * /usr/bin/rm -rf /var/ftp/pub/*
30 7 * * 6 /usr/bin/systemctl restart httpd
30 17 * * 1,3,5 /usr/bin/tar czvf httpdconf.tar.bz2 /etc/httpd 
注意:執行命令須要絕對路徑,能夠經過whereis來查找絕對路徑

# 查看計劃任務
crontab l [-u 用戶名]
root@computer: ~# crontab -l # 查看本身的計劃任務
root@computer: ~# crontab -l -u jerry # 查看jerry的計劃任務

# 刪除計劃任務
crontab -r [-u 用戶名]
root@computer: ~# crontab -r -u jerry # 刪除jerry的計劃任務
複製代碼

服務管理

服務的分類

系統服務:某些服務的服務對象是Red Hat Enterprise Linux系統自己,或者Red Hat Enterprise Linux系統的用戶,這類服務稱爲系統服務。好比負責用來監控軟件磁盤陣列狀態的mdmonitor服務,就是一個系統服務。服務器

網絡服務:另外有許多服務,提供給網絡中的其餘客戶端調用,這類服務統稱爲網絡服務。例如網站服務(Web Service)、網絡文件系統服務(Networking File System Service)等,都屬於網絡服務。網絡

經常使用命令

運行一個服務
systemctl start foo.service
關閉一個服務
systemctl stop foo.service
重啓一個服務
systemctl restart foo.service
顯示一個服務的狀態
systemctl status foo.service
開機啓動一個服務
systemctl enable foo.service
開機禁用一個服務
systemctl disable foo.service
查看安裝哪些服務
systemctl list-unit-file
複製代碼
相關文章
相關標籤/搜索