歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux基礎:調查和管理進程

什麼是進程?

進程是被載入內存的一個指令集合

進程ID(Process ID,PID)號碼被用來標記各個進程

UID、GID相關權限和 SElinux決定對文件系統的存取和訪問

通常從執行進程的用戶處繼承

查看進程

使用ps來查看進程信息

僅執行ps,顯示當前終端中的進程

a 選項包括與現行終端的所有進程

x 選項包括不連接終端的進程

u 選項顯示進程所有者的信息

f 選項顯示進程的父進程

o 屬性,…選項顯示定制的信息:

ps  axo  

pid,comm,%cpu,%mem,state,tty,ppid,pri,ni,user,cmd

ps aux  ;  ps -l

搜索進程

最靈活:ps 選項 | 其它命令

ps axo comm,tty | grep ttyS0

按預定義的模式:pgrep

$ pgrep -U uid    sshd

$ pgrep -G gid     sshd

按確切的程序名稱:pidof :找出一個程序的pid

$ pidof bash

Ps選項  

默認顯示當前終端中的進程

-a 選項包括所有終端中的進程

-x 選項包括不連接終端的進程

-u 選項顯示進程所有者的信息

-f 選項顯示進程的父進程

-e選項是現實所有進程

-p pid 顯示些pid的進程信息

-o 屬性,…選項顯示定制的信息:

pid、comm、%cpu、%mem、state、tty、euser、ruser

ps  -e   兩個都是查看所有進程

ps  -ef

ps  axo comm,tty|grep tty

pgrep  -U root ssh

pgrep –G root |more

查找cups進程

產看進程id號

通過一下選項顯示進程的詳細信息

列出進程調用bash的進程號

或者通過pidof 來查看bash進程

信號

最基本的進程間通訊方式

-直接發送給進程,不需要用戶界面

-程序給每個信號關聯動作

-發送信號可以使用名稱或號碼:

 信號15 ,TERM(默認):正常終止

 信號9,KILL:強制立即終止

 信息1,HUP:重讀配置文件

 man 7 signal 顯示了完整列表信息,比較詳細

通過kill -l 來查看信號類型,但是信息沒有那麼詳細

給進程發送信號

按PID:kill [-信號] pid …

按名稱:killall [-信號] bash

按模式:pkill [-信號] 模式

例如查看rsyslogd進程號,然後通過kill重新啟動

通過tail命令查看是否重新啟動

例子1:把SIGHUP命令發送給rsyslogd

#killall -1 rsyslogd

例子2:強制終止httpd進程

#killall -9 httpd

調度優先性

調度優先級priority決定對CPU的使用順序

優先級受進程的nice值(nice value)影響

這個nice值的范圍是-20到19,默認為0

-pri值越小,說明對CPU的使用越優先

使用ps –o comm,nice ;ps axo pid,nice,user

ps -l 命令可以查看

改變調度優先性

nice值可以被改變…

-在啟動進程時:

nice  -n +5     命令名字

nice   -n -10    命令名字

-在啟動後:

  $ renice  +5   PID     ;  renice  -5   PID  

  $ renice  -n +5   PID     ;  renice -n  -5   PID

只有根用戶才能降低nice值(提高優先性)        nice -n -10 vim                      nice -n +10 vim

普通用戶的nice只能是0-19,而且每只能比前一次大

查看comm,和nice

啟動進程時給定nice值:nice –n 5 命令

修改bash的nice值

修改bash的nice值為15 renice –n 15  pid

查看bash的nice值是否發生變化

修改vim的nice值

通過例子可以看到root可以使nice值變小,也可將變小的值提高

查看普通用戶能否修改nice值

交互式進程管理工具

動態查看進程信息的命令行:top

(信息)查看rhce-||調查和管理進程.doc文檔

關於top命令的用法

M:以內存使用為序排列

P:以cpu的使用率排列

h:幫助

q(小寫):退出

圖形化界面:gnome-system-monitor

能力

-顯示實時進程信息

-允許排序、中止運行、和重設nice值

Gnome-system-monitor

作業控制

前台與後台區別

在後台運行進程

-在命令行後添加一個和號(&): firefox&

將進程放到後台中暫時停止:

-使用Ctrl -z 或發送信號 19 (STOP)

管理後台作業或暫停的作業

-列舉作業號碼和名稱:jobs

-在後台恢復運行:bg  [%作業號碼]

-在前台恢復運行:fg   [%作業號碼]

-發送信號:kill  -[信號]  [%作業號碼]

計劃任務與例行任務

一次性作業使用at,重復性作業使用crontab

沒有被重導向的輸出會被郵寄給用戶

根用戶能夠修改其它用戶的作業

*   The  superuser  may  use  these commands in any case.  For other users, permission to use at is determined by the

*   files /etc/at.allow and /etc/at.deny.

*   If the file /etc/at.allow exists, only usernames mentioned in it are allowed to use at.

*   If /etc/at.allow does not exist, /etc/at.deny is checked, every username not mentioned in it is then  allowed  to

*   use at.

*   If neither exists, only the superuser is allowed use of at.

*   An empty /etc/at.deny means that every user is allowed use these commands, this is the default configuration.

與at有關的配置文件,at.allow,at.deny

at.allow優先級比at.deny的高:

1.先看at.allow,有在裡面的用戶可以使用at

at.allow不存在時,則檢查at.deny,裡面的用戶不能使用

2.兩個文件不存在則只有root才可以使用

一般系統默認只有一個空的at.deny,意味著系統裡所有的用戶都可以使用at,

兩個文件裡寫用戶裡一行一個用戶

步驟

1、先service atd start|restart

2、at   時間 

時間:at  now + 20 minutes

at  20:39 2013-4-13

回車後,可以輸入要執行的命令

輸入完成後ctrl+d

atq = at -l   查看

atrm 作業號= at -d   作業號

Crontab文件格式

項目包含五個用空格分隔的字段,然後是要執行的命令

每行一個項目,行的長度沒有限制

字段是:分鐘、小時、日期、月份、星期幾

注釋行以#開頭

詳細參見man 5 crontab的說明書頁

與crontab有關的配置文件:cron.allow、cron.deny

1.先看cron.allow,在裡面的用戶則可以使用crontab

2.沒有cron.allow的,檢查cron.deny,在裡面的不可以使用crontab

3.兩個文件都不存在時只有root可以使用

一般系統默認只有一個空的cron.deny,意味著所有人都可以使用

以上兩個文件一行一個用戶賬號

步驟:

1  /etc/init.d/crond  start|restart或者service crond start|restart

2  crontab -e

3  出現的vi編輯器輸入要執行的命令,一行一個任務,輸入完了:wq保存退出

查看:crontab -l

刪除此用戶所有任務:crontab -r

只想修改,crontab -e

/etc/crontab

系統自動周期性執行

vim /etc/crontab

SHELL=/bin/sh

MAILTO=paul

# run five minutes after midnight, every day

5 4 3 6 *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1

# run at 2:15pm on the first of every month -- output mailed to paul

15 */2  1 *   *     $HOME/bin/monthly

# run at 10 pm on weekdays, annoy Joe

 

0 22 * * 1-5    mail -s "It’s 10pm" joe%Joe,%%Where are your kids?%

23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"      5 4 * * sun     echo "run at 5 after 4 every sunday"

聚集命令

聚集命令概念:把命令寫在一起

有兩種聚集命令的方法:

-復合式:date; who | wc –l

  命令會一個接一個地運行

子shell:(date;who | wc –l)>> /tmp/trace

-所有的輸出都被發送給單個STDOUT和STDER

例子

退出狀態

進程使用退出狀態來報告成功或失敗

-0代表成功,1-255代表失敗

-$? 變量保存上一條的命令退出狀態

-exit [num]:終止,並把狀態設置為num

-Shell腳本可以自定義錯誤信息

例如:

$ ping -c 1 -W 1 station999 &> /dev/null

$ echo $?

正常執行echo $?返回0 ,錯誤的話返回大於零的數字

條件性的執行操作符

根據退出狀態而定,命令可以有條件地運行

&& 代表條件性的AND THEN

&&只有第一條命令只有執行成功後,才能那個執行第二條命令

||  代表條件性的OR ELSE

||只有第一條命令執行失敗後,才能執行第二條命令

例如:

$ grep -q no_such_user /etc/passwd || echo 'No such user'

No such user

$ ping -c1 -W2 station1 &> /dev/null  \

>    && echo "station1 is up" \

>    || (echo 'station1 is unreachable'; exit 1)

station1 is up

test 命令

判斷條件是否成立,以便用在條件性執行中

條件成立,則為真,則返回0

條件不成立,則為假,則返回非0

長格式的例子:

$ test "$A" = = "$B" && echo "Strings are equal"

$ test "$A" -eq "$B" && echo "Integers are equal"

簡寫格式的例子:

$ [   "$A"   ==    "$B"    ] && echo "Strings are equal“

$ [   "$A"   -eq  "$B"   ] && echo "Integers are equal"

查看日志的重要性

日志的作用

解決系統故障

解決網絡服務問題

記錄登陸信息

常見的日志文件

/var/log/secure 記錄用戶登錄系統,只有有要求輸入密碼的就紀錄

/var/log/wtmp 記錄登陸者的信息數據,由於這個文件已編碼,只能使用last命令來查看

/var/log/messages 這個文件相當重要,只是系統的錯誤信息都會記錄在這個文件中

/var/log/boot.log 記錄開機或一些服務啟動和關閉信息

/var/log/maillog 和/var/log/mail/*記錄郵件來往的用戶記錄

/var/log/cron 記錄crontab例行性服務的內容

/var/log/httpd ,/var/log/news /varlog/samba 等記錄網絡服務的文件

本文出自 “無痕” 博客,請務必保留此出處http://hucwuhen.blog.51cto.com/6253667/1275495

Copyright © Linux教程網 All Rights Reserved