linux系統服務管理
『壹』 linux服務管理(如何關閉或禁用不需要的服務
在安裝Linux操作系統時,一些不必要的數據包和應用程序會在用戶不注意的情況下自動安裝。在本文中,我們將討論如何將Linux系統中一些不必要的應用程序和服務禁用,以保護你的系統資源。
首先讓我們來看看系統中正在運行哪些服務。使用以下命令:
輸出結果
現在讓我們使用下面的netstat命令快速瀏覽接受連接的進程(埠)。
輸出結果
從上面的輸出結果中,你會發現一些不需要在伺服器上運行的應用程序,如:
1. smbd and nmbd
smbd和nmbd是Samba的後台進程。你真的需要在Windows或其他機器上輸出smb分享嗎?如果不是,為什麼運行這些進程呢?
你可以在下一次機器啟動時關閉開機啟動設置,這樣就能安全地關閉或禁用這些進程。
2. Telnet
你需要通過互聯網或者區域網進行適合文本形式的通訊嗎?如果不是的話,在機器啟動時關閉這個進程吧。
3. rlogin
你需要通過網路登錄到另一個主機嗎?如果不需要的話,那麼在機器啟動時關閉這個進程的開啟啟動功能。
4. rexec
遠程進程執行rexec允許你在遠程計算機上執行shell命令。如果你不需要在遠程機器上執行shell命令,請關閉該進程。
5. FTP
你需要將一個主機上的文件通過網路轉移到另一個主機上嗎?如果不需要,你可以停止FTP服務。
6. automount
你需要自動掛載不同的文件系統,彈出網路文件系統嗎?如果不是,為什麼要運行這個進程,為什麼要讓這個應用程序佔用你的資源呢?關閉它的自動啟動功能吧。
7. named
你需要運行域名伺服器(DNS)嗎?如果不是,你應該關掉這個進程,釋放你的資源。先關閉正在運行的進程,然後關閉開機啟動設置。
8. lpd
lpd是列印機的後台進程。如果你不需要從伺服器列印,該進程會消耗你的系統資源。
9. Inetd
你運行inetd服務嗎?如果你正在運行獨立應用程序,如ssh,ssh會使用其他獨立的應用程序,比如Mysql、Apache等。如果你不需要inetd,最後在下次自動啟動時關閉掉。
10. portmap
Portmap是一個開放網路計算遠程過程調用(ONC RPC),啟用後台進程rpc.portmap和rpcbind。如果這些進行運行,意味著你正在運行NFS伺服器。如果你沒有注意到NFS伺服器運行的話,意味著你的系統資源正在消耗。
如何在Linux系統中殺死一個進程
可以使用「Kill PID」命令殺死一個在Linux中運行的進程。但是在運行Kill命令之前,我們必須了解進程的PID。例如,我想找「cupsd」進程的PID。
那麼「cupsd」進程的PID是1511。運行下面的命令殺死該PID。
如何禁用Linux服務
對於紅帽發行版如Fedora和CentOS,利用「chkconfig」腳本來啟用和禁用Linux系統中運行的服務。
例如,在系統啟動時禁用Apache web伺服器。
對於基於Den的發行版如Ubuntu、Linux Mint和其他Debian發行版,使用一個叫做update-rc.d的腳本。
例如,在系統啟用時使用下面的命令禁用Apache服務。這里「- f」選項代表強制性。
做了這些變更之後,系統下次啟動時不會再運行這些沒有必要的進程,從而為我們節約了系統資源。伺服器將會更實用、快速、安全。
『貳』 如何在Linux系統上管理Systemd服務
(1) 什麼是單元 在RHEL7之前,服務管理是分布式的被SysV init或UpStart通過/etc/rc.d/init.d下的腳本管理。這些腳本是經典的Bash腳本,允許管理員控制服務的狀態。在RHEL7中,這些腳本被服務單元文件替換。 在systemd中,服務、掛載等資源統一被稱為單元,所以systemd中有許多單元類型,服務單元文件的擴展名是.service,同腳本的功能相似。例如有查看、啟動、停止、重啟、啟用或者禁止服務的參數。 systemd單元文件放置位置: /usr/lib/systemd/system/systemd默認單元文件安裝目錄 /run/systemd/systemsystemdsystemd單元運行時創建,這個目錄優先於按照目錄 /etc/systemd/system系統管理員創建和管理的單元目錄,優先順序最高。 (2)systemd的服務管理 使用systemcl命令可以控制服務,service命令和chkconfig命令依然可以使用,但是主要是出於兼容的原因,應該盡量避免使用。 使用systemctl命令的時候,服務名字的擴展名可以寫全,例如: 代碼如下: systemctl stop bluuetooth.service 也可以忽略,例如: 代碼如下: systemctl stop bluetooth systemctl常用命令: 啟動服務 代碼如下: systemctl start name.service 關閉服務 代碼如下: systemctl stop name.service 重啟服務 代碼如下: systemctl restar tname.service 僅當服務運行的時候,重啟服務 代碼如下: systemctl try-restart name.service 重新載入服務配置文件 代碼如下: systemctl relaod name.service 檢查服務運作狀態 代碼如下: systemctl status name.service 或者 代碼如下: systemctl is-active name.service 展示所有服務狀態詳細信息 復制代碼 代碼如下: systemctl list-units--type service --all 允許服務開機啟動 代碼如下: systemctl enable name.service 禁止服務開機啟動 代碼如下: systemclt disable name.service 檢查服務開機啟動狀態 代碼如下: systemctl status name.service 或者 代碼如下: systemctl is-enabled name.service 列出所有服務並且檢查是否開機啟動 代碼如下: systemctl list-unit-files --type service (3)服務詳細信息查看 使用如下命令列出服務: 代碼如下: systemctl list-units --type service 默認只列出處於激活狀態的服務,如果希望看到所有的服務,使用--all或-a參數: 代碼如下: systemctl list-units--type service --all 有時候希望看到所以可以設置開機啟動的服務,使用如下命令: 代碼如下: systemctl list-unit-files --type service 查看服務詳細信息,使用如下命令: 代碼如下: systemctl status name.service 服務信息關鍵詞解釋 Loaded服務已經被載入,顯示單元文件絕對路徑,標志單元文件可用。 Active服務已經被運行,並且有啟動時間信息。 Main PID與進程名字一致的PID,主進程PID。 Status服務的附件信息。 Process相關進程的附件信息。 CGroup進程的CGroup信息。
『叄』 Linux 文件系統管理
3.1Linux 文件系統類型
不同的操作系統使用不同類型的文件系統,為了與其他的操作系統兼容,以相互交換數據,
通常,每種操作系統都支持多種類型的文件系統。
Linux 中保存數據的磁碟分區通常採用EXT2/EXT3 文件系統,而實現虛擬存儲的swap 分區
採用swap 文件系統,同時Linux 內核支持十多種不同的文件系統。
1. EXT2 和EXT3 文件系統
EXT(Extended File System,擴展文件系統)是專為Linux 設計的文件系統。在Linux 發展
早起,起到重要中用,但在穩定性、速度和兼容性方面存在缺陷。
EXT2 是為解決EXT 系統存在的缺陷而設計的可擴展、高性能的文件系統。
EXT3 是EXT2 的增強版本,在EXT2 的基礎上,增加了文件系統的日誌管理功能。
EXT3 文件系統具有的特點:
(1) 高效性:當系統因為異常斷電或系統崩潰,重新啟動時不需要檢查文件系統的一致
性,只需要根據文件系統的日誌,快速檢測並恢復文件系統到正常狀態。
(2) 數據的完整性:可以保持數據域文件系統狀態的高度一致性,避免意外關機對文件
系統造成的破壞。
(3) 數據的存取速度更快:EXT3 文件系統的日誌功能對磁碟驅動器的讀/寫進行優化,
使讀/寫系統的速度更快。
(4) 數據易於轉換
2. swap 文件系統
用於Linux 的交換分區。在Linux 中,使用整個交換分區來提供虛擬內存。
3. VFAT 文件系統
VFAT 是Linux 對DOS、Windows 系統下的FAT 文件系統的統稱。
4. NFS 文件系統
NFS 即網路文件系統,用在UNIX 或Linux 系統間通過網路進行文件共享。
5. SMB 文件系統
SMB 是Samba 的縮寫,是另一種網路文件系統,用於在Windows 和Linux 系統之間共享文
件和列印機。
6. ISO9660 文件系統
CD-ROM使用的標准文件系統。
此外,Linux 支持的文件系統還有minix、msdos、ncpfs、hpfs、umsdos 等。
3.2 Linux 的目錄和文件
1.Linux 系統的目錄結構
Linux 文件系統由文件和目錄組成,文件是專門用來存儲數據的對象,目錄是一種用來組織
文件和其他目錄的容器。Linux 和DOS、Windows 系統一樣,使用樹形目錄結構來組織和管
理文件。
1. / 文件系統的入口,最高一級目錄;
2. /bin 基礎系統所需要的命令位於此目錄,是最小系統所需要的命令,如:ls, cp, mkdir等。
這個目錄中的文件都是可執行的,一般的用戶都可以使用。
3. /boot 包含Linux內核及系統引導程序所需要的文件,比如vmlinuz initrd.img文件都位於這個目錄中。在一般情況下,GRUB或LILO系統引導管理器也位於這個目錄;
4. /dev 設備驅動程序文件存儲目錄,比如音效卡、磁碟等,是Linux文件系統的一個閃亮的特性-所有對象都是文件或目錄。仔細觀察這個目錄你會發現hda1, hda2等,它們代表系統主硬碟的不同分區。
5. /etc 存放系統程序或者一般工具的配置文件。
如安裝了apache2之後,配置文件在/etc/apache2/目錄下。
/etc/init.d這個目錄是用來存放系統或伺服器以System V模式啟動的腳本,這在以System V模式啟動或初始化的系統中常見。
6. /home 普通用戶默認存放目錄Linux是多用戶環境,所以每一個用戶都有一個只有自己可以訪問的目錄(當然管理員也可以訪問)。它們以/home/username的方式存在。這個目錄也保存一些應用對於這個用戶的配置,比如IRC, X等。
7. /lib 庫文件存放目錄這里包含了系統程序所需要的所有共享庫文件,類似於Windows的共享庫DLL文件。
8. /var 這個目錄的內容是經常變動,因為存儲的文件,如資料庫,數據文件大小是在不斷的增大。
/var/log這是用來存放系統日誌的目錄。
/var/www目錄是定義Apache伺服器站點存放目錄;/var/lib用來存放一些庫文件,比如MySQL的,以及MySQL資料庫的的存放地;
/var/log系統日誌存放,分析日誌要看這個目錄的東西;
/var/spool列印機、郵件、代理伺服器等假離線目錄;
9. /lost+found 在ext2或ext3文件系統中,當系統意外崩潰或機器意外關機,而產生一些文件碎片放在這里。當系統啟動的過程中fsck工具會檢查這里,並修復已經損壞的文件系統。 有時系統發生問題,有很多的文件被移到這個目錄中,可能會用手工的方式來修復,或移到文件到原來的位置上。
Linux應該正確的關機。但有時你的系統也可能崩潰掉或突然斷電使系統意外關機。那麼啟動的時候fsck將會進行長時間的文件系統檢查。Fsck會檢測並試圖恢復所發現的'不正確的文件。被恢復的文件會放置在這個目錄中。所恢復的文件也許並不完整或並不合理,但畢竟提供了一些恢復數據的機會。
10. /media 即插即用型存儲設備的掛載點自動在這個目錄下創建,比如USB盤系統自動掛載後,會在這個目錄下產生一個目錄 ;CDROM/DVD自動掛載後,也會在這個目錄中創建一個目錄,類似cdrom的目錄。這個只有在最新的發行套件上才有. 10. /mnt /mnt這個目錄一般是用於存放掛載儲存設備的掛載目錄的,比如有cdrom等目錄。有時我們可以把讓系統開機自動掛載文件系統,把掛載點放在這里也是可以的。比如光碟機可以掛載到/mnt/cdrom。
11. /opt 表示的是可選擇的意思,有些軟體包也會被安裝在這里,也就是自定義軟體包,比如在Fedora Core 5.0中,OpenOffice就是安裝在這里。有些我們自己編譯的軟體包,就可以安裝在這個目錄中;通過源碼包安裝的軟體,可以通過./configure --prefix=/opt/,將軟體安裝到opt目錄。
這個目錄包含所有默認系統安裝之外的軟體和添加的包。
12. /proc 操作系統運行時,進程(正在運行中的程序)信息及內核信息(比如cpu、硬碟分區、內存信息等)存放在這里。/proc目錄是偽裝的文件系統proc的掛載目錄,proc並不是真正的文件系統。
這是系統中極為特殊的一個目錄,實際上任何分區上都不存在這個目錄。它實際是個實時的、駐留在內存中的文件系統。
13. /root Linux超級許可權用戶root的家目錄;
14. /sbin 大多是涉及系統管理的命令的存放,是超級許可權用戶root的可執行命令存放地,普通用戶無許可權執行這個目錄下的命令;
這個目錄和
/usr/sbin;/usr/X11R6/sbin或/usr/local/sbin目錄是相似的; 我們記住就行了,凡是目錄sbin中包含的都是root許可權才能執行的。
15. /tmp 臨時文件目錄,有時用戶運行程序的時候,會產生臨時文件。/tmp就用來存放臨時文件的。/var/tmp目錄和這個目錄相似。
許多程序在這里建立lock文件和存儲臨時數據。有些系統會在啟動或關機時清空此目錄。
16. /usr 這個是系統存放程序的目錄,比如命令、幫助文件等。
這個目錄下有很多的文件和目錄。
當我們安裝一個Linux發行版官方提供的軟體包時,大多安裝在這里。
如果有涉及伺服器配置文件的,會把配置文件安裝在/etc目錄中。
『肆』 LINUX服務管理,系統啟動時如何判斷及開啟服務,系統運行中,如何查詢、關閉、開啟服務
逐個解答。但根據問題間的關系,回答順序和你提問的順序有所不同。
=============================================
「請寫出盡量多的方法,並說明方法的原理。」
---------------------------------------------
我用Everest Linux 0.6是Redhat系列的遠方旁枝。源自Redhat的發行版有類似的服務管理方式。太多的方法沒有用,一種基本方法再加兩三種附加變體方法足矣。
=============================================
「如何關閉服務及如何手動開啟服務」
---------------------------------------------
簡而言之:
service [服務名] start
service [服務名] stop
細節見下。
以我的現狀為例,所有的主要獨立服務都在「/etc/rc.d/init.d」中有對應的控制腳本,能控制服務的啟停、重啟,甚至不重啟而重新載入配置。當然,也可以自己製作自己的控制腳本。我自己製作了Apache、Tomcat、PostgreSQL和花生殼的控制腳本。
[root@TFW-EVL06-LT /]# ls -l /etc/rc.d/init.d/
總計 316
……
-rwxr-xr-x 1 root root 1773 2009-04-20 smb
……
-rwxr-xr-x 1 root root 3340 2008-12-06 sshd
……
lrwxrwxrwx 1 root root 66 2009-08-20 tfw_httpd -> /ext/prog/c/Apache/Httpd.EverestLinux-0.6-tb20090422/tfw/rc_script
lrwxrwxrwx 1 root root 61 2009-08-20 tfw_pgsql -> /ext/prog/m/PostgreSQL.Everest-Linux-0.6-tb0422/tfw_rc_script
lrwxrwxrwx 1 root root 32 2009-08-20 tfw_phlinux -> /usr/local/phlinux/tfw_rc_script
lrwxrwxrwx 1 root root 39 2009-08-20 tfw_tomcat -> /ext/prog/c/Apache/Tomcat/tfw/rc_script
……
-rwxr-xr-x 1 root root 2497 2008-12-06 xinetd
……
[root@TFW-EVL06-LT /]#
以此為例,可以用「service smbd start」來啟動Windows網路鄰居服務;用「service sshd stop」來關閉安全隧道登錄服務;用「service tfw_pgsql reload」不重啟地重新載入PostgreSQL配置;用「service tfw_phlinux restart」重新啟動花生殼。
=============================================
「讀哪個文件判斷是否啟動服務」
---------------------------------------------
沒有簡述,想了解請看完。
在「/etc/rc.d/rc[N].d」目錄里存放著上述腳本的鏈接。「[N]」為0~6間的數字,對應系統運行級別。以運行級別3為例:
[root@TFW-EVL06-LT /]# ls -l /etc/rc.d/rc3.d/
總計 0
……
lrwxrwxrwx 1 root root 20 03-03 13:00 K04tfw_tomcat -> ../init.d/tfw_tomcat
……
lrwxrwxrwx 1 root root 14 2009-08-20 S55sshd -> ../init.d/sshd
……
[root@TFW-EVL06-LT /]#
這些鏈接有的以「K」開頭,有的以「S」開頭。
系統在切換都一個運行級別時,會首先檢查以「K」開頭的鏈接,按其後面兩位數字所標明的順序依次檢查這些鏈接所對應的服務;如果開著就以「stop」參數調用服務控制腳本關閉此服務。
例子中「/etc/rc.d/rc3.d/K04tfw_tomcat」的含義即為「當系統切換到運行級別3時,檢查一下Tomcat是否在運行;如果在運行,就用『service tfw_tomcat stop』關掉Tomcat」。
在關完服務後,系統再根據數字依次檢查以「S」開頭的鏈接,如果對應的服務沒有開啟,就以「start」參數調用服務控制腳本開啟此服務。
例子中「/etc/rc.d/rc3.d/S55sshd」的含義即為「當系統切換到運行級別3時,檢查一下安全登錄遂道是否在運行;如果沒在運行,就用『service sshd start』啟動安全登錄遂道」。
=============================================
「如何查詢已經開啟的服務」
---------------------------------------------
沒有簡述,想了解請看完。
[root@TFW-EVL06-LT /]# service network status
Coppied.
配置設備:
lo eth0 ppp0
當前的活躍設備:
lo eth0 ppp0
[root@TFW-EVL06-LT /]# service tfw_httpd status
Usage: /etc/init.d/tfw_httpd {start|stop|restart}
[root@TFW-EVL06-LT /]#
可以看到,有一些服務控制腳本支持「status」參數,可以用「service [服務名] status」來查看;還有一些服務控制腳本不支持「status」參數,此時就只能憑經驗判斷了。
=============================================
「可以用TELNET、FTP舉例,我的RH系統內有XINETD,也希望講解下」
---------------------------------------------
在Redhat風格的發行版中,Telnet和FTP一版不是獨立服務,而是被「超級伺服器」XINETD託管。
XINETD是一個獨立服務,和前述服務無異。它的控制腳本是「/etc/rc.d/init.d/xinetd」。
=============================================
「讀哪個文件來判斷服務的設置」
---------------------------------------------
不同的獨立服務一般都擁有自己的配置文件。
典型情況下,「/etc/samba/smb.conf」是Windows網路鄰居服務的主要配置文件,「/etc/ssh/sshd_config」是安全隧道伺服器端的主要配置文件。
在我的計算機上,「/ext/prog/c/Apache/Httpd.EverestLinux-0.6-tb20090422/conf/」下的文件就是Apache-Httpd服務的主要配置文件。
在我曾經用過的Redhat系發行版Magic Linux 2.0中,Telnet和FTP等非獨立服務的埠等配置信息出現在XINETD的配置文件中;而我現在所用的發行版Everest Linux 0.6雖然仍是Redhat系,Telnet和FTP的埠信息已經移到其各自的配置文件中。
『伍』 如何在Linux系統上管理Systemd服務
檢查你的Linux系統使是否使用Systemd服...
1
分析引導過程該systemd-analyze命令允...
2
查看UnitsSystemd用Units作為一個單元...
3
管理服務要查看啟用和禁用服務的列表,...
4
該systemctl命令可以啟動,停止或重新...
5
使用systemctl enable命令啟動systemd...
『陸』 如何在Linux系統上管理Systemd服務
方法/步驟
1
檢查你的Linux系統使是否使用Systemd服務
如果你的Linux發行版是否使用systemd還不能確定,打開一個終端窗口,運行以下命令。
這說明在Linux系統上你systemd的版本號:systemd
-version
2
分析引導過程
該systemd-analyze命令允許你查看你的啟動過程中,信息等過了多長時間,哪些服務(和其他進程)增加了最多的時間來啟動進程。
要查看一般啟動過程中的信息,運行以下命令:
systemd-analyze
要查看每個進程所用的時間來啟動,運行以下命令:systemd-analyze
blame
3
查看Units
Systemd用Units作為一個單元,它可以是服務(.service),掛載點(.mount),設備(.device),
同樣systemctl命令管理所有這些類型的單位。要查看系統上所有可用的單元文件:systemctl
list-unit-files
要列出所有正在運行的單位:systemctl
list-units
4
管理服務
要查看啟用和禁用服務的列表,您可以使用相同systemctl命令同上,但是它只列出存在的服務:systemctl
list-unit-files
–type=service
5
該systemctl命令可以啟動,停止或重新啟動服務。
你也可以告訴服務為「刷新」它的配置。
status命令是這里唯一的行動,將列印輸出到終端。
其他命令會悄悄地生效。
systemctl
start
name.service
systemctl
stop
name.service
6
使用systemctl
enable命令啟動systemd自動啟動服務
systemctl
enable
name.service
systemctl
disable
name.service
『柒』 Linux系統systemctl命令
最近用到了systemctl命令,順便分享出來希望對用到的朋友有幫助。
systemctl是一個用於管理系統服務的命令,例如:啟動服務、停止服務、重新服務等。它的用法主要有一下幾種:
systemctl命令(管理系統服務命令)
|_restart:重啟服務
|_start:啟動服務
|_stop:停止服務
|_enable:開啟服務開機自啟
|_disable:關閉服務開機自啟
|_status:查看服務狀態
|_list-units --type=service:查看已啟動服務列表
使用場景演示:查SSH服務是否啟動
『捌』 LINUX系統的內存管理知識詳解
內存是Linux內核所管理的最重要的資源之一。內存管理系統是操作系統中最為重要的部分,因為系統的物理內存總是少於系統所需要的內存數量。虛擬內存就是為了克服這個矛盾而採用的策略。系統的虛擬內存通過在各個進程之間共享內存而使系統看起來有多於實際內存的內存容量。Linux支持虛擬內存, 就是使用磁碟作為RAM的擴展,使可用內存相應地有效擴大。核心把當前不用的內存塊存到硬碟,騰出內存給其他目的。當原來的內容又要使用時,再讀回內存。以下就是我為大家整理到的詳細LINUX系統內存管理的知識,歡迎大家閱讀!!!
LINUX系統教程:內存管理的知識詳解
一、內存使用情況監測
(1)實時監控內存使用情況
在命令行使用「Free」命令可以監控內存使用情況
代碼如下:
#free
total used free shared buffers cached
Mem: 256024 192284 63740 0 10676 101004
-/+ buffers/cache: 80604 175420
Swap: 522072 0 522072
上面給出了一個256兆的RAM和512兆交換空間的系統情況。第三行輸出(Mem:)顯示物理內存。total列不顯示核心使用的物理內存(通常大約1MB)。used列顯示被使用的內存總額(第二行不計緩沖)。 free列顯示全部沒使用的內存。Shared列顯示多個進程共享的內存總額。Buffers列顯示磁碟緩存的當前大小。第五行(Swap:)對對換空間,顯示的信息類似上面。如果這行為全0,那麼沒使用對換空間。在預設的狀態下,free命令以千位元組(也就是1024位元組為單位)來顯示內存使用情況。可以使用—h參數以位元組為單位顯示內存使用情況,或者可以使用—m參數以兆位元組為單位顯示內存使用情況。還可以通過—s參數使用命令來不間斷地監視內存使用情況:
#free –b –s2
這個命令將會在終端窗口中連續不斷地報告內存的使用情況,每2秒鍾更新一次。
(2)組合watch與 free命令用來實時監控內存使用情況:
代碼如下:
#watch -n 2 -d free
Every 2.0s: free Fri Jul 6 06:06:12 2007
total used free shared buffers cached
Mem: 233356 218616 14740 0 5560 64784
-/+ buffers/cache: 148272 85084
Swap: 622584 6656 615928
watch命令會每兩秒執行 free一次,執行前會清除屏幕,在同樣位置顯示數據。因為 watch命令不會卷動屏幕,所以適合出長時間的監測內存使用率。可以使用 -n選項,控制執行的頻率;也可以利用 -d選項,讓命令將每次不同的地方顯示出來。Watch命令會一直執行,直到您按下 [Ctrl]-[C] 為止。
二、虛擬內存的概念
(1)Linux虛擬內存實現機制
Linux虛擬內存的實現需要六種機制的支持:地址映射機制、內存分配回收機制、緩存和刷新機制、請求頁機制、交換機制、內存共享機制。
首先內存管理程序通過映射機制把用戶程序的邏輯地址映射到物理地址,在用戶程序運行時如果發現程序中要用的虛地址沒有對應的物理內存時,就發出了請求頁要求;如果有空閑的內存可供分配,就請求分配內存(於是用到了內存的分配和回收),並把正在使用的物理頁記錄在緩存中(使用了緩存機制)。 如果沒有足夠的內存可供分配,那麼就調用交換機制,騰出一部分內存。另外在地址映射中要通過TLB(翻譯後援存儲器)來尋找物理頁;交換機制中也要用到交換緩存,並且把物理頁內容交換到交換文件中後也要修改頁表來映射文件地址。
(2)虛擬內存容量設定
也許有人告訴你,應該分配2倍於物理內存的虛擬內存,但這是個不固定的規律。如果你的物理保存比較小,可以這樣設定。如果你有1G物理內存或更多的話,可以縮小一下虛擬內存。Linux會把大量的內存用做Cache的,但在資源緊張時回收回.。你只要看到swap為0或者很小就可以放心了,因為內存放著不用才是最大的浪費。
三、使甩vmstat命令監視虛擬內存使用情況
vmstat是Virtual Meomory Statistics(虛擬內存統計)的縮寫,可對操作系統的虛擬內存、進程、CPU活動進行監視。它是對系統的整體情況進行統計,不足之處是無法對某個進程進行深入分析。通常使用vmstat 5 5(表示在5秒時間內進行5次采樣)命令測試。將得到一個數據匯總它可以反映真正的系統情況。
代碼如下:
#vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 62792 3460 9116 88092 6 30 189 89 1061 569 17 28 54 2
0 0 62792 3400 9124 88092 0 0 0 14 884 434 4 14 81 0
0 0 62792 3400 9132 88092 0 0 0 14 877 424 4 15 81 0
1 0 62792 3400 9140 88092 0 0 0 14 868 418 6 20 74 0
1 0 62792 3400 9148 88092 0 0 0 15 847 400 9 25 67 0
vmstat命令輸出分成六個部分:
(1)進程procs:
r:在運行隊列中等待的進程數 。
b:在等待io的進程數 。
(2)內存memoy:
swpd:現時可用的交換內存(單位KB)。
free:空閑的內存(單位KB)。
buff: 緩沖去中的內存數(單位:KB)。
cache:被用來做為高速緩存的內存數(單位:KB)。
(3) swap交換頁面
si: 從磁碟交換到內存的交換頁數量,單位:KB/秒。
so: 從內存交換到磁碟的交換頁數量,單位:KB/秒。
(4) io塊設備:
bi: 發送到塊設備的塊數,單位:塊/秒。
bo: 從塊設備接收到的塊數,單位:塊/秒。
(5)system系統:
in: 每秒的中斷數,包括時鍾中斷。
cs: 每秒的環境(上下文)切換次數。
(6)cpu中央處理器:
cs:用戶進程使用的時間 。以百分比表示。
sy:系統進程使用的時間。 以百分比表示。
id:中央處理器的空閑時間 。以百分比表示。
如果 r經常大於 4 ,且id經常小於40,表示中央處理器的負荷很重。 如果bi,bo 長期不等於0,表示物理內存容量太小。
四、Linux 伺服器的內存泄露和回收內存的方法
1、內存泄漏的定義:
一般我們常說的內存泄漏是指堆內存的泄漏。堆內存是指程序從堆中分配的,大小任意的(內存塊的大小可以在程序運行期決定),使用完後必須顯示釋放的內存。應用程序一般使用malloc,realloc,new等函數從堆中分配到一塊內存,使用完後,程序必須負責相應的調用free或釋放該內存塊,否則,這塊內存就不能被再次使用,我們就說這塊內存泄漏了。
2、內存泄露的危害
從用戶使用程序的角度來看,內存泄漏本身不會產生什麼危害,作為一般的用戶,根本感覺不到內存泄漏的存在。真正有危害的`是內存泄漏的堆積,這會最終消耗盡系統所有的內存。從這個角度來說,一次性內存泄漏並沒有什麼危害,因為它不會堆積,而隱式內存泄漏危害性則非常大,因為較之於常發性和偶發性內存泄漏它更難被檢測到。存在內存泄漏問題的程序除了會佔用更多的內存外,還會使程序的性能急劇下降。對於伺服器而言,如果出現這種情況,即使系統不崩潰,也會嚴重影響使用。
3、內存泄露的檢測和回收
對於內存溢出之類的麻煩可能大家在編寫指針比較多的復雜的程序的時候就會遇到。在 Linux 或者 unix 下,C、C++語言是最使用工具。但是我們的 C++ 程序缺乏相應的手段來檢測內存信息,而只能使用 top 指令觀察進程的動態內存總額。而且程序退出時,我們無法獲知任何內存泄漏信息。
使用kill命令
使用Linux命令回收內存,我們可以使用Ps、Kill兩個命令檢測內存使用情況和進行回收。在使用超級用戶許可權時使用命令「Ps」,它會列出所有正在運行的程序名稱,和對應的進程號(PID)。Kill命令的工作原理是:向Linux操作系統的內核送出一個系統操作信號和程序的進程號(PID)。
應用例子:
為了高效率回收內存可以使用命令ps 參數v:
代碼如下:
[root@www ~]# ps v
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
2542 tty1 Ss+ 0:00 0 8 1627 428 0.1 /sbin/mingetty tty1
2543 tty2 Ss+ 0:00 0 8 1631 428 0.1 /sbin/mingetty tty2
2547 tty3 Ss+ 0:00 0 8 1631 432 0.1 /sbin/mingetty tty3
2548 tty4 Ss+ 0:00 0 8 1627 428 0.1 /sbin/mingetty tty4
2574 tty5 Ss+ 0:00 0 8 1631 432 0.1 /sbin/mingetty tty5
2587 tty6 Ss+ 0:00 0 8 1627 424 0.1 /sbin/mingetty tty6
2657 tty7 Ss+ 1:18 12 1710 29981 7040 3.0 /usr/bin/Xorg :0 -br -a
2670 pts/2 Ss 0:01 2 682 6213 1496 0.6 -bash
3008 pts/4 Ss 0:00 2 682 6221 1472 0.6 /bin/bash
3029 pts/4 S+ 0:00 2 32 1783 548 0.2 ping 192.168.1.12
3030 pts/2 R+ 0:00 2 73 5134 768 0.3 ps v
然後如果想回收Ping命令的內存的話,使用命令:
代碼如下:
# Kill -9 3029
使用工具軟體
Memprof是一個非常具有吸引力且非常易於使用的軟體,它由Red Hat的Owen Talyor創立。這個工具是用於GNOME前端的Boehm-Demers-Weiser垃圾回收器。這個工具直接就可以執行,並且其工作起來無需對源代碼進行任何修改。在程序執行時,這個工具會以圖形化的方式顯示內存的使用情況。
相關介紹:Linux
嚴格來講,Linux這個詞本身只表示Linux內核,但人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU 工程各種工具和資料庫的操作系統。
Linux擁有以下特性:類似於Unix的基本思想,支持完全免費與自由傳播,完全兼容POSIX1.0標准,支持多用戶、多任務、有著良好的界面、支持多種平台。Linux 能運行主要的UNIX工具軟體、應用程序和網路協議。它支持32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。
Linux有著許多不同的版本,但它們都使用了Linux內核。Linux可安裝在各種計算機硬體設備中,比如手機、平板電腦、路由器、視頻游戲控制台、台式計算機、大型機和超級計算機。
『玖』 如何在Linux系統上管理Systemd服務
方法/步驟
檢查你的Linux系統使是否使用Systemd服務
如果你的Linux發行版是否使用systemd還不能確定,打開一個終端窗口,運行以下命令。 這說明在Linux系統上你systemd的版本號:systemd -version
分析引導過程
該systemd-analyze命令允許你查看你的啟動過程中,信息等過了多長時間,哪些服務(和其他進程)增加了最多的時間來啟動進程。
要查看一般啟動過程中的信息,運行以下命令:
systemd-analyze
要查看每個進程所用的時間來啟動,運行以下命令:systemd-analyze blame
查看Units
Systemd用Units作為一個單元,它可以是服務(.service),掛載點(.mount),設備(.device), 同樣systemctl命令管理所有這些類型的單位。要查看系統上所有可用的單元文件:systemctl list-unit-files
要列出所有正在運行的單位:systemctl list-units
管理服務
要查看啟用和禁用服務的列表,您可以使用相同systemctl命令同上,但是它只列出存在的服務:systemctl list-unit-files –type=service
該systemctl命令可以啟動,停止或重新啟動服務。 你也可以告訴服務為「刷新」它的配置。
status命令是這里唯一的行動,將列印輸出到終端。 其他命令會悄悄地生效。
systemctl start name.service
systemctl stop name.service
使用systemctl enable命令啟動systemd自動啟動服務
systemctl enable name.service
systemctl disable name.service
『拾』 《Linux操作系統管理與網路服務教程》pdf下載在線閱讀全文,求百度網盤雲資源
《Linux操作系統管理與網路服務教程》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1BhCR40fn55A0IiWHXlIHSQ
簡介:本書包括4篇,□□篇「linux操作系統基礎」將引導讀者建立linux操作系統,認識linux操作系統的基本使用環境,熟悉linux操作系統的基本操作等;第□篇「linux操作系統的基本管理」將學習重點轉移到操作系統管理操作上,內容包括用戶賬戶管理、文件系統管理、磁碟管理以及系統資源管理等;第3篇「shell基礎」對shell腳本程序設計做了概括性的介紹;第4篇「網路服務基礎」就常見的linux網路伺服器的搭建與基本配置展開討論。書中結合了大量實踐操作案例並輔以操作過程圖示。本書作者在編寫時參考了lpi(linux professional institute)認證考試大綱的要求,涵蓋了lpi 101與lpi 10□考試大綱要求的知識點。
《計算機系列教材:Linux操作系統管理與網路服務教程》既可作為高等院校linux相關課程的專業教材,也可作為讀者參加lpic level 1認證培訓及考試復習的核心學習材料,還可作為專業人士的常用參考書。