FreeBSD程式管理(轉)
在系統shell提示下,使用者可以輸入各種命令來執行相應的工作。每個命令通常從終端鍵盤中獲取輸入,將輸出列印到終端螢幕上,Unix使用標準輸入stdio和標準輸出stdout,來表示每個命令的輸入和輸出,還使用一個標準錯誤輸出stderr用於輸出錯誤資訊。這三個標準輸入輸出系統預設與終端裝置相聯絡在一起,但是也可以使用管道的概念將它們重新定向,從一個檔案或另一個命令中獲取輸入,輸出到另外的檔案中或作為另一個命令的輸入等。 $ ls > ls.out$ cat < ls.out$ ls -l | grep mbox
FreeBSD可以同時執行多個程式,在shell下直接輸入命令十,shell將程式放到前臺執行。如果要將程式放到後臺執行,需要在命令列的結尾加上一個 “&” 符號。下面的命令從後臺執行,從ftp.isc. org下載檔案。
$ wget ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz &
當程式已經在前臺執行的時候,可以使用^Z將這個程式掛起,暫停執行。然後可以使用bg命令將這個掛起的程式放到後臺執行,或者使用fg將某個在後臺或掛起的程式放到前臺執行。
當在後臺執行了程式的時候,可以用jobs命令來檢視後臺作業的狀態。在有多個後臺程式時,要使用來引數的fg 命令將不同序號的後臺作業切換到前臺上執行。
$ jobs[1]+ Running wget ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz &$ fg %1wget ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz
在啟動了多個程式之後,可以使用ps命令來檢視這些程式及其狀態。
$ ps PID TT STAT TIME COMMAND 501 p2 Ss 0:00.24 -bash (bash) 988 p2 R+ 0:00.00 ps 765 p3 Is+ 0:00.28 -bash (bash) 230 v0 Is+ 0:00.14 -bash (bash)
顯示的結果包括程式的標識號PID,控制終端TT(p0表示控制終端為ttyp0),程式的狀態STAT,程式使用的處理器時間TIME和具體的命令。
可以給ps命令加上引數,來獲得更多的輸出內容,以下命令將輸出系統中所有的程式:
$ ps wauxUSER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMANDwb 989 0.0 0.4 400 236 p2 R+ 5:48PM 0:00.00 ps -auxroot 1 0.0 0.1 496 72 ?? Is 10:12PM 0:00.02 /sbin/init --root 2 0.0 0.0 0 0 ?? DL 10:12PM 0:07.05 (pagedaemon)root 3 0.0 0.0 0 0 ?? DL 10:12PM 0:00.20 (vmdaemon)root 4 0.0 0.0 0 0 ?? DL 10:12PM 0:04.27 (syncer)root 27 0.0 0.0 204 0 ?? IWs - 0:00.00 (adjkerntz)root 91 0.0 0.5 820 328 ?? Is 2:12PM 0:00.82 syslogddaemon 100 0.0 0.0 792 0 ?? IWs - 0:00.00 (portmap)root 131 0.0 0.3 864 164 ?? Is 2:12PM 0:00.06 inetdroot 134 0.0 0.3 980 192 ?? Is 2:12PM 0:00.11 cronroot 138 0.0 0.6 1252 380 ?? Is 2:12PM 0:00.11 sendmail: acceptiwb 230 0.0 1.1 1540 668 v0 Is+ 2:12PM 0:00.14 -bash (bash)root 231 0.0 0.0 824 0 v1 IWs+ - 0:00.00 (getty)root 232 0.0 0.0 824 0 v2 IWs+ - 0:00.00 (getty)root 500 0.0 0.9 876 524 ?? Ss 4:19PM 0:01.78 telnetdwb 501 0.0 1.4 1540 888 p2 Ss 4:19PM 0:00.24 -bash (bash)root 698 0.0 1.5 1644 900 ?? Is 4:49PM 0:00.02 /usr/local/sbin/sroot 700 0.0 1.2 1308 748 ?? Ss 4:49PM 0:00.22 /usr/local/sbin/nroot 702 0.0 3.4 2900 2112 ?? S 4:49PM 0:00.32 /usr/local/sbin/sroot 764 0.0 0.9 880 540 ?? Is 5:10PM 0:00.22 telnetdwb 765 0.0 1.7 1536 1052 p3 Is+ 5:10PM 0:00.28 -bash (bash)root 0 0.0 0.0 0 0 ?? DLs 10:12PM 0:00.02 (swapper)
當使用者啟動一個程式的時候,這個程式是執行在前臺,使用與相應控制終端相聯絡的標準輸入、輸出進行輸入和輸出。即使將程式的輸入輸出重定向,並將程式放在後臺執行,程式仍然和當前終端裝置有關係。正因為如此,在當前的登入會話結束時,控制終端裝置將和登入程式相脫離,那麼系統就向所有與這個終端相聯絡的程式傳送SIGHUP的訊號,通知程式線路已經掛起了,如果程式沒有接管這個訊號的處理,那麼預設的反應是程式結束。因此普通的程式並不能真正脫離登入會話而執行程式,為了使得在系統登入後還可以正常執行,只有使用命令nohup來啟動相應程式。
從上面的ps的輸出結果可以看出,有些程式沒有控制終端,這些程式通常是一些後臺程式。使用命令nohup當然可以啟動這樣的程式,但nohup啟動的程式在程式執行完畢就退出,而常見的一些服務程式通常永久的執行在後臺,不向螢幕輸出結果。在Unix中這些永久的後臺程式稱為守護程式(daemon)。守護程式通常從系統啟動時自動開始執行,系統關閉時才停止。如果偶然某個守護程式消失了,那麼它提供的服務將不再能被使用。
在守護程式中,最重要的一個是超級守護程式inetd,這個程式接管了大部分網路服務,但並不是對每個服務都自己進行處理,而是依據連線請求,啟動不同的服務程式與客戶機打交道。inetd支援網路服務種類在它的設定檔案 /etc/inet.conf中定義。inet.conf檔案中的每一行就對應一個埠地址,當inetd接受到連線這個埠的連線請求時,就啟動相應的程式進行處理。使用inetd的好處是系統不必啟動很多守護程式,從而節約了系統資源,然而使用inetd啟動守護程式相應反應會遲緩一些,不適合用於被密集訪問的服務程式。
當使用者希望要停止一個程式時,如果程式在前臺執行並接收輸入的條件下,可以輸入^D,告訴程式輸入結束,通常這意味著需要程式進行的處理要結束了,從而通知程式結束。對於有些不以檔案輸入結束作為結束標誌的程式,那麼就可以使用^C來向程式傳送訊號中斷程式。
如果上述方式均無效,或者程式執行在後臺或者是一個守護程式,則需要手工向程式傳送訊號,這可以透過kill 命令來做到。使用 “kill PID” 來向程式傳送終止訊號SIGTERM,這個訊號告訴程式需要退出。但是這些傳送的訊號都能被程式透過程式設計的手段捕獲並對其進行處理,一旦程式在這個處理過程中沒有退出,而是忽略這個訊號的情況下,就無法殺死程式。這時只能使用 “kill -9 PID” 向PID代表的程式傳送SIGKILL訊號,這個訊號不能被程式本身捕獲,從而無條件殺死程式。但是最好先首先傳送SIGTERM訊號終止程式。而很多守護程式能夠捕獲 SIGHUP掛線訊號,會根據這個訊號進行處理,例如重新讀入配置檔案,重新重新整理程式本身等,因此可以再更改程式的配置檔案之後,使用 “kill -HUP pid” 重新整理程式的配置。
kill命令需要使用程式的標識號PID,因此需要首先執行ps以得到這個標識號。而FreeBSD下可以使用程式的名字來給程式傳送訊號,這個命令為killall,對於大部分情況,它使用起來更為方便。
-
檢視系統狀態
FreeBSD下提供了相當豐富的工具可以用來檢視系統的狀態,使用者可以透過它們來了解系統狀態,從而最佳化系統效能。這些工具通常讀取/dev/mem、/dev/kmem來獲得記憶體中的系統資訊,使用/kernel將這些資訊中的變數轉換為名字。最基本的檢視系統狀態的命令為ps,用於報告當前系統中執行的程式的狀態。
pstat能顯示系統中開啟的檔案數量、交換裝置的使用率等系統資訊。pstat預設使用/dev/mem裝置檔案,從系統記憶體中讀取這些資料,或者可以指定一個core檔案,那麼pstat從這個檔案中讀取資料。還需要給pstat 一個引數來告訴pstat應該顯示那種系統資訊,通常使用 “pstat -f” 顯示出當前開啟檔案的列表, “pstat -s” 顯示交換裝置的當前狀態, “pstat -t” 顯示當前使用的終端裝置檔案的狀態, “pstat -v” 顯示啟用的v節點的當前狀態。 “pstat -T” 顯示這幾個系統表的狀態,包括當前使用的和可以利用的系統表空間,因此可以用來檢查系統在當前負載下是使用多大的系統表,幫助進行最佳化系統效能。
$ pstat -T69/8232 files4M/137M swap space
vmstat報告核心的統計資訊,包括程式、虛存、處理器、磁碟等。可以使用 “-w” 引數指定每隔幾秒時間,報告一次系統狀態。
$ vmstatprocs memory page disks faults cpur b w avm fre flt re pi po fr sr wd0 wd1 fd0 in sy cs us sy id0 0 0 3752 30476 643 0 0 0 19 43 0 0 0 262 2599 85 56 3 41
其他與vmstat類似的命令還有,fstat報告系統中開啟檔案的資訊,可以使用檔名、程式號、使用者名稱,以及指定檔案所在的檔案系統來限制要顯示的檔案。iostat報告核心的輸入輸出統計資訊,包括磁碟、終端等裝置的I/O 狀態。netstat報告網路的有關統計資訊。nfsstat顯示NFS的統計資訊。
除此之外,systat以全螢幕方式顯示各種系統統計資訊,預設情況下systat是報告處理器的使用率,包括總利用狀態、空閒使用率和各個程式的使用率。透過指定引數,systat也能進行I/O的統計、虛存的統計、網路的統計等,這些引數包括-iostat, -vmstat, -mbufs, -netstat, -ip, -icmp, -tcp, -swap等。
/0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /10 Load Average || /0 /10 /20 /30 /40 /50 /60 /70 /80 /90 /100 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXroot XF86_S3.cx XXXXXXXwb kpanel XXXwb kfm XXwb kbgndwm XXwb kblankscrnwb krootwmwb kwm
除了這些系統提供的命令之外,FreeBSD也提供多種有效的系統工具,如綜合ps、systat和vmst at功能的top等。這些軟體通常可以在多種Unix系統中使用,也是十分常用的工具。也可以在FreeBSD系統中安裝網路管理代理snmpd,然後使用網路管理系統透過網路來獲得FreeBSD主機的各種系統資訊。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-944759/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- FreeBSD on Raspberry PI root, freebsd account password
- FreeBSD Timeline
- TeX/LaTeX on FreeBSD
- FreeBSD Transmission 403 ForbiddenORB
- Freebsd P怎麼安裝?Freebsd PF 安裝使用詳解
- FreeBSD 14.1 ISO 下載
- 在FreeBSD上使用DockerDocker
- FreeBSD系統怎麼新增硬碟?FreeBSD系統新增硬碟的方法教程硬碟
- FreeBSD啟用ZFS快照功能
- FreeBSD系統上如何安裝Bugzilla?FreeBSD系統安裝Bugzilla的方法教程
- FreeBSD系統使用方法詳解
- 在FreeBSD中安裝MySQL資料庫MySql資料庫
- FreeBSD 物理機下顯示卡的配置
- 如何在FreeBSD中安裝Nginx,MySQL,PHP(FEMP)NginxMySqlPHP
- FreeBSD虛擬機器 VMware Tools 安裝教程虛擬機
- MidnightBSD:或許是你通往 FreeBSD 的大門
- FreeBSD 10.0 Beta 1已經可以下載測試
- 新計劃:明年7月將釋出FreeBSD 14.0
- 如何在FreeBSD 13中安裝MySQL資料庫MySql資料庫
- Supervisor管理Laravels,Laravels程式管理Laravel
- FreeBSD on Raspberry PI,首次執行pkg update出現bootstrap errorbootError
- FreeBSD使用deamon將frpc新增到開始啟動項FRPRPC
- FreeBSD系統打造安全可靠的ZFS儲存池
- FreeBSD系統下如何使GraphicsMagick支援中文字型?
- FreeBSD系統下安裝字型的步驟詳解
- Linux 程式管理Linux
- Linux程式管理Linux
- Linux:程式模型和程式管理Linux模型
- Linux系統管理之程式管理Linux
- vps管理系統 批次管理程式
- FreeBSD10系統安裝核心原始碼方法講解原始碼
- Linux系統管理命令二(轉)Linux
- hhdesk程式組管理
- Linux-程式管理Linux
- golang程式版本管理Golang
- 三十而立,作為程式設計師的我,該轉型嗎?技術or管理程式設計師
- 程式設計師如何提升管理思維,從個人到團隊的轉變?程式設計師
- ravynOS 0.5.1 - 基於 FreeBSD 的 macOS 相容開源作業系統Mac作業系統
- FreeBSD系統下zfs: failed with error 6錯誤的解決方法AIError