Linux常見疑難問答

Linux常見疑難問答html

1)按a~z順序排列啓動服務進程。java

#exportLC_ALL=C           #英文環境變量設置,主要用於解決亂碼問題node

#chkconfig –list | grep [z-a] : | grepon $ sortmysql

2)顯示運行級別爲5的全部服務。linux

#chkconfig –list | grep 5: on | sortweb

3)如何中止某個(如cups)服務。算法

#chkconfig cups off ; /etc/init.d/cups stopsql

4)修改了/etc/profile文件配置,怎麼當即生效。shell

#source/etc/profile以及「/etc/profile」點後面是空格。數據庫

5)如何使用find工具找到用戶cgweb30天內的文件並備份歸檔。

#find / -user cgweb –ctime -30 –exec tar azvf /home/backup/cgweb -new-files.tgz {} \;

6)如何將分區表信息轉成文件。

#fdisk –l /dev/sda > /etc/config-data/sda-fdisk.txt     #注意:要先創建config-data目錄

如何將硬盤分區表和MBR備份到文件:

#dd if=/dev/sda of=/etc/config-data/sda-boot.img bs=512 count=1

7)如何提升TCP/IP堆棧安全。

一般有個辦法是經過「#echo1>/proc/sys/net/ipv4/tcp_syncookied」來阻止SYNFlood攻擊,其實這並不安全,可靠的作法是發送到/etc/sysctl.conf文件中,須要將下列代碼加到/etc/sysctl.conf中:

net.ipv4.tcp_syncookies=1

net.ipv4.ip_default_ttl=61

net.ipv4.conf.all.accept_redirects=0

net.ipv4.conf.all.send_redirects=0

若是機器多的話能夠將這個配置文件存儲在FTP服務器(如sysctl-add,服務器IP:10.10.10.1),而後從FTP中提取出來,追加到現有的/etc/sysctl.conf文件尾:

wge tftp://10.10.10.1/pub/sysctl-add

catsystl-add >>/etc/sysctl.conf

8)如何把/var目錄下的全部RPM文件找出來並刪除。

#find /var –name "*.rpm" –exec rm {}\;

9)如何使用SSH在遠程主機(10.10.10.1)上創建目錄(upload)並上傳文件。

#ssh root@10.10.10.1 mkdir/var/www/html/upload

#scp *.cfg root@10.10.10.1 : /var/www/html/upload/

10)如何用find命令查找某個文件夾下包含全部指定關鍵字的全部文件。

例如須要查找/etc/tomcat5目錄下,包含JAVA_OPTS關鍵字的全部文件:

#find /etc/tomcat5 -name "*" | xargs grep "JAVA_OPTS"

11)把舊系統上的/etc/passwd/etc/shadows複製到新系統裏,能夠繼續使用嗎。

千萬不要在新的機器上覆制原來的/etc/apsswd,一般在新舊兩個系統之間有不少服務都會產生衝突,若是是同一張盤安裝出來的系統,那麼能夠驗證一下系統的crypt/hash函數是否相同(即密碼採用相同的算法加密的),切忌不要在新系統中的配置文件上覆制整個/etc/的配置文件。

12)如何實時查看日誌文件的信息(排除網絡故障時經常使用,例如DNSDHCP調試問題)。

#tail –f /var/log/messages        #如不用-f選項,默認狀態的tail只能列出文件的最後10

13)如何找到/etc/目錄下全部文件中,內容包括字符串「ip_forward」的文件,並打印到屏幕。

#find /etc/ -exec grep "ip_forward" '{}' \;-print

14)如何搜索當前系統裏文件大小超過1GB的文件(排除磁盤空間方面的故障時經常使用)。

#find / -size +1024000k –exec du –h '{}' \; -print

15)遠程服務器上沒有磁帶機,怎麼對它進行異地備份。

#tar cvf -/home/etc | ssh root@10.101.10.1 "cat > /mnt/backup/remoteserver 1_$
(date+%Y-%m-%d).tar"

SSH對於管理員來講是再熟悉不過了,那麼如何利用它從Linux服務器經過網絡傳輸標準輸出(stdout)到備份服務器呢?以上命令便可,注意date後面有個空格。

16)普通用戶cgweb登陸系統後如何在根用戶才能訪問的位置中新建目錄呢。

# su --c "mkdir /root/cgwebtmp"

17)如何只顯示top裏的幾個進程。

若是隻顯示幾個進程,可在top中輸入要查看進程的PID

#top –p 4300 –p4500

18)如何查看一個命令在執行期間發生了什麼系統調用。

#strace /bin/ping 10.10.10.12 > /tmp/ping_out

在這行命令中,經過在strace命令中運行ping命令並將標準錯誤定向到/tmp/ping_out文件,不少處理消息就會發送到ping_out文件中。若是要查看ping從哪裏得到了它的信息,則將找到全部出現open的地方來查看它打開過哪些文件:

#grep ^open /tmp/ping.out

除此以外,還可讓它跟蹤子進程,例如要跟蹤open系統在上面例子中的調用:

# strace –e trace= open/bin/ping 10.10.10.1

除了打開庫以外,ping命令還打開了配置文件resolv.conf來查找IP地址,進而找出它從何處將域名解析爲IP地址。

19)如何測定X server服務器的性能。

當顯卡驅動裝好後可以使用下列命令來檢測Xserver服務器的性能:

# X11perf –repeat 3 –reps 10 –subs 10 100 –circulate

上述例子的X11perf命令從下至上運行一套窗口。circulate動做將重複3次,第一組有10個窗口,分別運行10次(共100次循環運行),第二組有100個窗口,依然分別循環運行10次(共1000次循環)。在每組的最後,將顯示出重複的總次數和完成整套動做所花費的時間。

還能夠用下列命令來測試性能:

#X11perf –repeat 2 –reps 1000 –ftext

1000個包含80個字符的文本發送給顯示器(-ftext):

#X11perf –repeat2 –reps 500 –copywinwin 500

從一個窗口把500×500平方像素大小的方塊複製到另外一個窗口(-copywinwin500):

#X11perf –repeat2 –reps 800 –scroll 500

垂直滾動500×500平方像素大小的框800次。

20)如何查看安裝的GPG密鑰。

#rpm –qa gpg-pubkey*

gpg-pubkey-0dfb3188-41ed929b

其中gpg-pubkey-0dfb3188-41ed929b表明RedHat公司用於簽名軟件包的共有密鑰。若是想得到有關這種公有密鑰的信息,能夠繼續使用RPM命令:

#rpm –qi gpg -pubkey -0dfb3188-41ed929b|less

在輸出的Summary代碼行中密鑰表示爲適用於OpenEnterpriseServer,最後輸入q退出。

21)如何檢查包的簽名信息。

經過如下命令能夠檢查RPM遭破壞和修改的內容:

# rpm –check sig– vv fedora-logos-1.2.-1.noarch.rpm

22)在Xen下安裝虛擬機。

#virt-install-nvm-mysql-r512-f/vm/vm-mysql.img-s10--nographics-p-lftp://ip/pub/iso

經過上面很簡單的一句代碼就能夠在Xen下安裝虛擬機了。

23)查看當前的TCP鏈接數。

除了使用常規的netstat-na|more等命令之外,還可利用如下命令實現精確統計鏈接數量:

#netstat -n|awk'/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}'

TIME_WAIT29

FIN_WAIT1152

FIN_WAIT22

ESTABLISHED26

SYN_RECV16

24)訪問遠程共享的目錄。

將以下代碼放到/etc/fstab中:

//ip/share1/mnt/dsmbfsdefaults,auto,username=name,password=pass00

其中,IP是遠程機器的IP地址,是共享目錄的共享名,「/mnt/d」是要將該分區mount到本地Linux的目錄,namepass是能夠訪問該共享目錄的用戶名和密碼。

25)如何加大Tomcat鏈接數。

Tomcat配置文件server.xml中,應同時加大maxProcessorsacceptCount這兩個參數的值。

26)如何修改Tomcat的端口數。

編輯/etc/tomcat5/server.xml找到其中的connectorport="8080"maxHttpHeaderSize="8192",這一行更改8080這個值爲其餘1024以上未用端口便可。

27)如何加大Tomcat的內存。

Tomcat默認的內存爲128,在一些大型應用上,顯然不夠用,因此咱們須要手動加大內存:

#vi /etc/tomcat5/tomcat5.conf

找到「JAVA_OPTS=-Xmin0.1–Xmaxf0.3代碼,Xmin0.1表示初始內存大小,更改爲Xmin256mXmaxf0.3表示最大內存大小,修改成512m,退出重啓便可生效。

28)如何將大的tar包分卷壓縮或合併。

以每卷500MB爲例,tar分卷壓縮:

#tar cvz pf -somedir | split -d -b 500m

-d不是split的選項,是Shell的選項,表示將tar命令的輸出做爲split的輸入。

tar多卷合併:

catx*>mytarfile.tar.gz

29)如何去掉文本中多餘的回車符(尤爲是從Windows複製到Linux的狀況)。

sed's/^M//'test.sh>back.sh

注意「^M」是敲「ctrl+V+M」獲得的。

或者:

dos2unixtest.sh

30)如何改變RedHat的系統語言/字符集。

vi/etc/sysconfig/i18n文件修改爲:LANG="en_US"X-window會顯示英文界面,修改成:LANG="zh_CN.GB18030"X-window會顯示中文界面。

31)查找權限位爲S的文件。

#find . -typef\(-perm-04000-o-perm-02000\)-execls-lg{}\;

32)查找或刪除正在使用某文件的進程。

fuserfilename

fuser-kfilename

33)如何讓用戶的密碼必須具備必定的長度,而且符合複雜度。

vi/etc/login.defs

修改PASS_MIN_LEN

34如何刪除3天之前的全部內容包括目錄名和目錄中的文件)。

1find.-ctime+3-execrm-rf{}\;

2find./-mtime+3-print|xargsrm-f–r

35)如何不改變inode而清空一個文件。

>filename

36Oracle的安裝程序爲何顯示亂碼。

如今Oracle的安裝程序對中文的支持存在問題,建議使用英文界面來安裝,在執行runinstaller以前,執行:

export;exportLC_ALL=C

37Linux下文件和目錄的顏色表明什麼含義。

藍色表示目錄;綠色表示可執行文件;紅色表示壓縮文件;淺藍色表示連接文件;灰色表示其餘文件;紅色閃爍表示連接的文件有問題了;黃色是設備文件,包括blockcharfifo。利用dircolors–p可查看默認的顏色設置,包括各類顏色和「粗體」、下劃線、閃爍等定義。

38)如何查看有多少活動httpd的腳本,每隔3s刷新一次。

編輯以下腳本:

#!/bin/sh

while(true)

do

pstree|grep"*\[httpd\]$"|sed's/.*-\([0-9][0-9]*\)\*\[httpd\]$/\1/'

sleep3

done

39)如何讓cp命令在運行中顯示進度。

cp-r-vdir1dir2

cp-a-d-vdir1dir2

40)編輯/etc/inittab後不重啓電腦,配置直接生效。

initq

41)讓Linux連續執行幾個命令,出錯中止執行。

command1&&command2&&command3

42)屏幕變花時怎麼辦。

當不當心cat了一個並非文本的文件時,屏幕會變花,那麼能夠按兩下「Enter」鍵,以及「Reset」鍵,屏幕就可恢復正常了。

43)在命令行中列出本機IP地址,而不是獲得網卡信息。

#ifconfig | grep "inet"|cut-c0-36|sed-e's/[a-zA-Z:]//g'

hostname–i

44)如何不顯示grep進程自己。

#ps -aux | grep httpd | grep -v grep

grep-vgrep能夠取消顯示所執行的grep自己這個進程,-v參數是不顯示所列出的進程名。

45)刪除目錄中含輸入關鍵字的文件。

#find /mnt/ebook/ -typef -exec grep"輸入關鍵字"{}\;-print-execrm{}\;

46)讓cron中的任務不回饋信息,假設5分鐘檢查一次郵件。

0-59/5****/usr/local/bin/fetchmail>/dev/null2>&1

47)如何開啓多個X-window

startx默認以display0.0開啓第一個X-window,經過傳遞參數給Xserver能夠開啓多個X-window

#startx--:1.0

#startx--:2.0

...

而後利用Ctrl+Alt+F7/F8鍵進行切換。

48)如何產生一個長度固定(例如文件長度爲1MB)的空文件,即每一個字節的值全爲0x00

#dd if=/dev/zero of=/tmp/zero_file bs=1024 count=1024

49)查找當前目錄下的文件並更改擴展名。

例如將當前目錄下的全部擴展名爲.cf的文件更改成.conf

#find ./ -name "*.cf"-execrename.conf'{}'\;

50)如何刪除RPM-e刪除不了的包。

若是在刪除包以前刪除了包的目錄,執行如下代碼:

#rpm -e --noscripts

若是系統裏一個包被裝兩次(因爲某些異常引發的),則執行如下代碼:

#rpm -emulti-installed-pkgs–allmatches

51)如何防止某個關鍵文件被修改。

Linux下,有些配置文件是不容許任何人(包括root)修改的。爲了防止被誤刪或修改,能夠設定該文件的「不可修改位(Immutable)」。命令以下:

#chattr+i/etc/fstab

若是須要修改文件則採用下面的命令:

#chattr-i/etc/fstab

52)怎樣限制一個用戶能夠啓動的進程數。

先肯定一下/etc/pam.d/login文件中以下一行代碼是否存在:

sessionrequired/lib/security/pam_limits.so

而後編輯/etc/security/limits.conf,在其中能夠設置限制用戶的進程數、CPU佔用率和內存使用率等,如hardnproc30就是指限制30個進程。

53)如何限制Shell命令記錄的大小。

在默認狀況下,bash會在文件$HOME/.bash_history中存放多達500條命令記錄。有時根據具體的系統不一樣,默認記錄條數也不一樣。系統中每一個用戶的主目錄下都有一個這樣的文件。爲了系統的安全,在此強烈建議用戶限制該文件的大小,若是是root用戶,更應該減少這個條目數。用戶能夠編輯/etc/profile文件,修改其中的選項以下:HISTFILESIZE=5HISTSIZE=5,這樣就將記錄的命令條數減小到5條。

54)使用RPM命令時沒有任何響應,怎麼辦。

#rm -rf /var/lib/rpm/__db.*

55)如何防止用戶修改某文件。

對系統中的一些關鍵文件和我的重要資料,能夠經過文件權限來保護,例如將文件屬性設爲600。另外,若是Linux使用的是ext2ext3文件系統,還可使用chattr命令,給文件加上i屬性,即便root用戶也不能直接修改或刪除這類文件,以有效防止意外修改狀況的發生。具體命令以下:

#chattr +i passwd

可以使用以下命令去除i屬性:

#chattr –i passwd

56)解決WebLogicLinux下啓動關閉很慢的問題。

啓動、關閉WebLogic時,時間很是長,其緣由是JDK中存在一個Bug,解決辦法是在WebLogic啓動腳本里setDomainEnv.sh加入如下內容:

JAVA_OPTIONS="${JAVA_OPTIONS}-Djava.security.egd=file:/dev/./urandom"

exportJAVA_OPTIONS

建議操做前先將setDomainEnv.sh進行備份。

57)如何實時查看某一進程的資源消耗狀況。

首先查看這個進程的PID,假設PID500。利用「top-p500命令,就能夠實時查看這個進程的資源消耗狀況了。

58)如何刪除一類進程。

#ps -efww|grepLOCAL=NO|grep-vgrep|cut-c9-15|xargskill-9

59)如何手動修改IP

編輯/etc/sysconfig/network-scripts/ifcfg-eth0文件,而後執行以下命令:

ifdowneth0;ifupeth0

60)如何查看22端口如今運行什麼程序。

#lsof -i :22

61)如何開啓IP轉發。

編輯/etc/sysctl.conf,例如:

net.ipv4.ip_forward=0

將其修改成:

net.ipv4.ip_forward=1

重啓後生效,利用「sysctl-a」查看可知已開啓IP轉發。

62)如何容許/禁止root經過SSH登陸系統。

經過修改「sshd_config:PermitRootLoginno|yes」便可實現。

63)如何讓Linux自動同步時間。

#vi /etc/crontab

添加如下代碼

0001**rootrdate-stime.nist.gov

64)如何讓SSH登陸系統永久不斷開。

修改本身HOME目錄下的.bash_profile文件,加上exportTMOUT=1000000(以s爲單位),而後運行source.bash_profile

65)防止任何人使用su命令成爲root

vi/etc/pam.d/su中加入如下代碼:

authsufficient/lib/security/pam_rootok.sodebug

authrequired/lib/security/pam_wheel.sogroup=wheel

/etc/pam.d/su配置文件中定義wheel組。

66)如何給一塊網卡綁定多個IP

Linux系統中的一塊網卡,最多支持256IP,執行如下代碼:

#cd /etc/sysconfig/network-scripts

#cp ifcfg-eth0 ifcfg-eth0:1

#vi ifcfg-eth0:1

修改IP和設備名便可。

67Linux下清空ARP表的命令。

#arp-d-a (適用於BSD)

forHOSTinarp|sed'/Address/d'|awk'{print$1}';doarp-d$HOST;done

68)如何使Linux支持NAT

#echo1>/proc/sys/net/ipv4/ip_forward

#iptables-tnat-IPOSTROUTING-jMASQUERADE

69)臨時修改網卡MAC地址的方法。

l關閉網卡:/sbin/ifconfig eth0 down

l修改地址:/sbin/ifconfig eth0 hwether 00:AA:BB:CCD:EE

l啓動網卡:/sbin/ifconfig eth0 up

70)更改eth0爲混雜模式。

打開網卡eth0,改爲混雜模式:

#ifconfig eth0 promisc

關閉混雜模式:

#ifconfig eth0 –promisc

71)如何讓SSH只容許指定的用戶登陸。

/etc/pam.d/sshd文件中加入:

authrequiredpam_listfile.soitem=usersense=allowfile=/etc/sshusersonerr=fail

而後在/etc下創建sshusers文件,編輯這個文件,加入容許使用SSH服務的用戶名,從新啓動SSHD服務便可。

72)在Linux下如何綁定IP地址和硬件地址。

能夠編輯一個地址對應文件,裏面記錄了IP地址和硬件地址的對應關係,而後執行「arp–f地址對應文件」。若是沒有指定地址對應文件,則一般狀況下以默認文件/etc/ethers爲準。地址對應文件的格式以下:

192.168.12.100:0D:61:27:58:E3

192.168.12.200:40:F4:2A:2E:DC

192.168.12.300:0A:EB:5E:BA:AE

73)已知網絡中一個機器的硬件地址,如何知道它所對應的IP地址。

Linux下,假定要查「00:0A:EB:27:17:B9這樣一個硬件地址所對應的IP地址,可使用如下命令:

#cat /proc/net/arp|grep00:0A:EB:27:17:B9

192.168.2.540x10x600:0A:EB:27:17:B9*eth2

另外,還能夠利用「arp-a」命令查詢:

#arp–a|grep00:0A:EB:27:17:B9

192.168.2.54at00:0A:EB:27:17:B9[ether]oneth2

74)基於ApacheHTTPDSendmail服務在啓動時被掛起了,如何解決此問題。

遇到此類問題,請確認/etc/hosts文件中是否包含以下一行:

127.0.0.1localhost.localdomainlocalhost

注意:127.0.0.1是網絡的迴路地址

75)如何使Linux系統對ping不迴應。

要使Linuxping沒反應,也就是使Linux系統忽略ICMP包,可用以下命令實現:

#echo1>/proc/sys/net/ipv4/icmp-echo-ignore-all

若想恢復,可用以下命令實現:

#echo 0>/proc/sys/net/ipv4/icmp-echo-ignore-all

76rsync同步壓縮傳輸文件或目錄。

rsync-azessh--deletesample_dir/remote_host:remote_dir/sample_dir/

77)無須輸入密碼使用SSH密鑰登陸。

ssh-keygen-b1024-trsa

sshserver"mkdir.ssh;chmod0700.ssh"

scp~/.ssh/id_rsa.pubserver:~/.ssh/authorized_keys

這樣就再也不提示輸入密碼,直接能夠登陸Server了,對文件複製、同步等操做都比較方便。

78)命令行下發送帶附件的郵件。

#cat<mailcontent.txt>|mutt-s"title"-a<attachfile>mail@address

這裏:<mailcontent.txt>表明郵件正文內容。<attachfile>表明本地須要做爲附件的文件名。

79)如何增長httpd動態模塊,而不從新編譯Apache(以deflate模塊爲例)。

進入httpd源代碼目錄:

#cd /usr/local/src/httpd-2.2.6

執行httpd安裝後目錄中的bin/apxs文件:

/usr/local/apache2/bin/apxs-ciamodules/metadata/mod_deflate.c

從新啓動httpd

#service httpd restart

80)如何變動sendmail郵件的默認存儲位置。

若是sendmail使用Procmail做爲MDA(郵件投遞代理)的話,可使用Procmail來指定接收郵件的默認存儲位置。方法以下:

創建/etc/procmailrc文件。

編輯/etc/procmailrc文件,指定環境變量MAIL的路徑,如設爲「$HOME/mbox」等。

81)新編譯生成的GCC,使用的標準鏈接庫都位於/usr/local/lib下,但使用的默認鏈接路徑是/usr/lib,怎樣添加。

exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

將其寫到「~/.bash_profile」裏面便可。

82)爲何編寫的Shell腳本沒法運行。

腳本權限要爲可執行「#chmod+xtest.sh」。且腳本所在的目錄在環境變量PATH中,或者直接執行「#./test.sh」。

83MySQL的數據庫存放在什麼地方。

若是使用RPM包安裝,應該位於/var/lib/mysql目錄下,以數據庫名爲目錄名。

若是源碼安裝在/usr/local/mysql中,應該位於/usr/local/mysql/var中,以數據庫名爲目錄名。

84)忘記了MySQLroot口令怎麼辦。

#service mysql stop

#mysqld_safe--skip-grant-tables&

#mysqladmin -u user password'newpassword''

#mysqladminflush -privileges

85)讓MySQL以大內存方式啓動。

/usr/share/mysql下的某個「mysql-*.cnf」(如1GB內存時爲mysql-huge.cnf)複製爲「/etc/mysql.cnf」文件,並重啓MySQL

86)經過SSH掛載遠程主機上的文件夾。

sshfsname@server:/path/to/folder/path/to/mount/point

87)顯示消耗內存最多的10個運行中的進程,之內存使用量排序。

#ps aux |sort -nk +4 | tail

88)利用Shell郵件通知。

#echo "Testmail" | mail -s「主題測試root@sampl.com

注意:主機的SMTP服務須要啓用。

89)如何在OracleRAC環境中找出因爲系統程序崩潰而產生的core文件。

因爲系統程序發生崩潰時,內核會把當前內存映射到core文件中,咱們以X86環境爲例,使用下面命令找到core的位置,還能看出是由哪一個文件引發的。

#find /u01 -name core.* -exec ls -l thr {}\; | awk'{print$9}' | xargs file

/u01/oracle/product/crs/log/rac1/crsd/core.4107:ELF32-bitLSBcorefileIntel80386,version1(SYSV),SVR4-style,from'crsd.bin'

由上面這條命令,能夠看出core.4107的產生,是由「crsd.bin」文件引發的。

90)如何快速掃描出某網段(例如:192.168.150.0/24)內開機的服務器。

第一種簡單方法:

#nmap –sP 192.168.150.*

第二種簡單方法,使用一行Shell腳本:

for((i=1;i<=254;i++)); do ping 192.168.150.$i;done

91)如何禁止某個進程的網絡鏈接。

咱們能夠先根據進程找到端口號,而後把發出去的包直接丟掉,或者使用owner功能。

#iptables –m owner –pid -owner <processid> -j REJECT

92)如何快速關閉SELinux

#/usr/sbin/setenforce0馬上關閉SELinux

#/usr/sbin/setenforce1馬上啓用SELinux

也能夠編輯配置文件達到一樣的目的:

#vi /etc/selinux/conf

setSELINUX=disabled

93)如何監聽80端口發給client-A或從client-A發送過來的數據包

#tcpdump –i eth0 host client-A and port80

若是你的計算機有多個網卡,請在-i後面指定好網卡。

(94)如何實現系統某用戶登錄後不顯示用戶名稱?咱們將系統用戶的shell環境變量中/sbin/bash改爲/sbin/nologin便可,注意不能將root用戶,改爲/sbin/nologin,不然沒法登錄。nologin的做用還能夠限制某些用戶經過ssh登錄到shell上

相關文章
相關標籤/搜索