Linux技巧集

改變文件或目錄之讀、寫、執行之允許權
====================================
執行格式:chmod [-R] mode name ( name可為文件名或目錄名;mode可為3個8位元之數字,或利用ls -l命令,列出文件或目錄之讀、寫、執行允許權之文字縮寫。)
mode : rwx rwx rwx r:read w:write x:execute(user group other縮寫為: ugo)
Example :
% chmod 755 dir1將目錄dir1,設定成任何使用者,皆有讀取及執行之權利,但只有擁有者可做修改。
% chmod 700 file1將文件file1,設定只有擁有者可以讀、寫和執行。
% chmod o+x file2將文件file2,增加擁有者可以執行之權利。
% chmod g+x file3將文件file3,增加群組使用者可執行之權利。
% chmod or file4將文件file4,除去其它使用者可讀取之權利。
改變文件或目錄之擁有權
======================
執行格式:chown [-R] username name ( name可為文件名或目錄名。)
Example :
% chown user file1將文件file1之擁有權,改為使用者user所有。
% chown -R user dir1將目錄dir1,及其下所有文件和子目錄之擁有權,改為使用者user所有。
檢查自己所屬之群組名稱
======================
執行格式:groups
Example :
% groups
改變文件或目錄之群組擁有權
==========================
執行格式:chgrp [-R] groupname name ( name可為文件名或目錄名)
Example :
% chgrp vlsi file1將文件file1之群組擁有權,改為vlsi群組。
% chgrp -R image dir1將目錄dir1,及其下所有文件和子目錄,改為image群組。
改變文件或目錄之最後修改時間(變為當前時間)
=========================================
執行格式:touch name ( name可為文件或目錄名稱。)
Example :
% touch file1
% touch dir1
文件之連結
==========
同一文件,可擁有一個以上之名稱,可將文件做數個連結。
執行格式:ln oldname newname ( Hard link )
Example :
% ln file1 file2將名稱file2,連結至文件file1。
執行格式:ln -s oldname newname ( Symblick link )
Example :
% ln -s file3 file4將名稱file4,連結至文件file3。
文件之字串找尋
==============
執行格式:grep string file
Example :
% grep abc file1尋找文件file1中,列出字串abc所在之整行文字內容。
找尋文件或命令之路徑
====================
執行格式:whereis command (顯示命令之路徑。)
執行格式:which command (顯示命令之路徑,及使用者所定義之別)
執行格式:whatis command (顯示命令功能之摘要。)
執行格式:find search-path -name filename -print (搜尋指定路徑下,某文件之路徑)
Example :
% find / -name file1 -print (自根目錄下,尋找文件名為file1之路徑)
比較文件或目錄之內容
====================
執行格式:diff [-r] name1 name2 ( name1 name2可同時為文件名,或目錄名稱)
Example :
% diff file1 file2比較文件file1與file2內,各行之不同處。
% diff -r dir1 dir2比較目錄dir1與dir2內,各文件之不同處。
如何實現為一個網卡綁定多個IP地址?
====================================
Linux的網絡設備配置文件存放在/etc/sysconfig/network-scripts裡面,對於以太網的第一個網絡設備,配置文件名一般為ifcfg-eth0如果需要為第一個網絡設備綁定多一個IP地址,只需要在/etc/sysconfig/network-scripts目錄裡面創建一個名為ifcfg-eth0:0的文件,內容樣例為:
DEVICE=”eth0:0″
IPADDR=”211.100.10.119″
NETMASK=”255.255.255.0″
ONBOOT=”yes”
其中的DEVICE為設備的名稱,IPADDR為此設備的IP地址,NETMASK為子網掩碼,ONBOOT表示在系統啟動時自動啟動。
如果需要再綁定多一個IP地址,只需要把文件名和文件內的DEVICE中的eth0:x加一即可。 LINUX最多可以支持255個IP別名。
如何設置login後歡迎信息
====================================
修改/etc/motd,往裡面寫入文本,就能使用戶通過telnet正確登錄後執行shell之前得到相應的提示信息。
motd就是“messages of the day”,也就是當日信息的意思。管理員可以往裡面寫一些需要注意的事項或者通知等來提醒正式用戶。
如何設置login前歡迎界面
====================================
修改/etc/issue或者issue.net,往裡面寫入文本,就能使得用戶在login前得到相應的提示,這將有助於用戶分辨自己正在連接哪裡的主機。
issue的內容是出現在本機登錄的用戶界面上,而issue.net則是在用戶通過網絡telnet的時候出現。
如何在bash下快速執行某個特定歷史命令
====================================
在bash下面按ctrl+r可以查找歷史命令中匹配的命令並執行
如何查看進程繼承關係
====================================
直接在命令行中輸入
pstree
即可,程序會以樹狀結構方式列出系統中正在運行的各進程之間的繼承關係。
如何找出內存佔用最大的進程
====================================
除了可以使用top命令查看內存使用情況之外,還可以使用更快的命令行命令,相關的命令如下:
ps aux | sort +4n
或者
ps aux | sort +5n
如何在Linux下面編輯二進製文件
====================================
到http://freshmeat.net/redir/hexedit/4088/url_tgz/hexedit-1.2.3.src.tgz下載hexedit安裝到系統上,就能用hexedit filename來編輯二進製文件。
如何設置用戶密碼過期時間
====================================
設置某個用戶的密碼過期時間可以用usermod -e來設置,如果要統一設置用戶的密碼過期時間,那麼就要修改/etc/login.defs裡面的PASS_MAX_DAYS,比如修改所有用戶的密碼過期時間是30天:
PASS_MAX_DAYS 30
如果這個值是99999,那麼表示密碼永不過期。
如何修改網卡MAC地址
====================================
首先必須關閉網卡設備,否則會報告系統忙,無法更改。
命令是: /sbin/ifconfig eth0 down
修改MAC地址,這一步較Windows中的修改要簡單。
命令是:/sbin/ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
重新啟用網卡/sbin/ifconfig eht0 up
網卡的MAC地址更改就完成了
如何用Bash糾正錯誤命令
====================================
當你輸入一個命令不知道是否正確的時候,可以使用ctrl+t來糾正到正確的命令。
比如輸入mkdri,然後按ctrl+t,bash會幫你糾正到最接近的命令mkdir。
如何使非root用戶都不能遠程登錄
====================================
建立/etc/nologin文件,這樣所有的非root用戶都不能遠程登錄。
如何不顯示其他用戶的消息
====================================
用戶可以使用mesg n來禁止別人給他發送信息,其實就是禁止別人往自己的終端上面的寫權限。當別人試圖再使用write給他發送信息時,發送者將會看見提示:
write: user has messages disabled on pts/n
如何知道某個命令使用了什麼庫文件
====================================
例如要知道ls使用了什麼庫文件,可以使用:
$ ldd /bin/ls
如何臨時增加交換空間
====================================
產生一個64M的空文件
#dd if=/dev/zero of=/swapfile bs=1024 count=65536
初始化該文件為交換文件:
mkswap /swapfile 65536
sync
激活這個交換文件:
swapon /swapfile
如何使一個用戶進程在用戶退出系統後仍然運行
====================================
使用nohup command &,比如:
nohup wget -c ftp://test.com/test.iso
這樣即使用戶退出系統,wget進程仍然繼續運行直到test.iso下載完成為止
如何限制用戶的最小密碼長度
====================================
修改/etc/login.defs裡面的PASS_MIN_LEN的值。比如限制用戶最小密碼長度是8:
PASS_MIN_LEN 8
這樣用戶設置密碼的時候如果輸入的密碼長度小於8將不能設置
如何限制只有0組(gid=0)的用戶可以su成root
====================================
修改/etc/login.defs裡面的SU_WHEEL_ONLY的值為:
SU_WHEEL_ONLY yes
那麼就只有gid為0的用戶可以su成root。
如何禁用Ctrl+Alt+Del鍵重啟系統
====================================
有時候為了防止誤操作導致系統重新啟動(如機房裡面新來了個習慣用Window$系統的管理員:-D),或者出於安全的原因,需要禁用Ctrl+Alt+Del組合鍵。
只需要註釋掉/etc/inittab文件內的
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
這一行即可。如何註釋?在這一行的行首放一個“#”號即可。
怎麼樣格式化磁盤
====================================
Linux下有一條mkfs命令,相當於format,可以對磁盤進行文件系統製作操作(或者說格式化)。命令的語法為:
mkfs -t文件系統類型/dev/設備名
如要把/dev/sda1格式為reiserfs格式,使用以下命令:
mkfs -t reiserfs /dev/sda1
當然,也可以使用mkfs.fstype命令來格式化磁盤,其中的fstype為文件系統名,如reiserfs文件系統的格式化命令為mkfs.reiserfs。上面那條命令的相應版本為:
mkfs.reiserfs /dev/sda1
如何取消root命令歷史記錄以增加安全性
====================================
為了設置系統不記錄每個人執行過的命令,就在/etc/profile裡設置:
HISTFILESIZE=0
HISTSIZE=0
或者:
ln -s /dev/null ~/.bash_history
這樣就可以了。
如何使用netrc文件進行自動ftp
====================================
在自己的home目錄下建立一個權限600,名為.netrc的文件,內容是:
machine 192.168.0.1 login test password test
這樣以後你每次ftp 192.168.0.1的時候,系統都會幫你以用戶名test,密碼test登錄。
利用這個特徵可以實現自動ftp。
例如你想要每天5:00到192.168.0.1機器上面獲得/test目錄下的文件test.txt,可以這麼做:
建立一個文件ftp_cmd,內容為:
cd test
get test.txt
bye
然後使用crontab -e設置定時任務:
0 5 * * * ftp 192.168.0.1 < ftp_cmd
如何測試硬盤性能
====================================
使用hdparm -t -T /dev/hdX就可以測試硬盤的buffer-cache reads和buffered disk reads兩個數據,可以用來當作硬盤性能的參考。
同時使用hdparm -c3 /dev/hdaX還能設置硬盤以32bit傳輸,以加快數據傳輸的速度。
壓縮和打包文件
====================================
.bz2文件如何解壓縮用tar -I或者bunzip2命令都可以。
.bz2 —使用bzip2命令壓縮的文件,可以使用bzip2 -d filename解包
.gz —使用gzip命令壓縮的文件,可以使用gunzip -d filename解包
.tar —使用tar打包的文件,即tarball文件,可以使用tar xf filename解包
.tbz —使用tar打完包後再以bzip2命令壓縮的文件,可以使用tar jxf filename解包
.tgz —使用tar打完包後再以gzip命令壓縮的文件,可以使用tar zxf filename解包
個人總結:
[.tar]解開:tar xvf *.tar把文件打包不壓縮:tar cvf *.tar DirName
[.tar.gz]解開:tar xzvf *.tar.gz把文件打包並壓縮:tar czvf *.tar.gz DirName
[.bz2]解開:bzip2 -d *.bz2
[.bz]解開:bzip -d *.bz
[.gz]解開:gzip -d *.gz
請參見:【Linux下常用壓縮格式的壓縮與解壓方法】

如何對光驅、軟驅實現AutoMount
====================================
安裝完Redhat Linux之後,運行ntsysv,選中服務後台程序autofs.autofs的兩個配置文件在/etc/auto.misc和/etc/auto.master。
/etc/auto.master定義了mount目錄和mount所需的配置文件名及其空閒時自動umount的時間。下面是默認配置:
[jephe@sh3 /etc]$ more auto.master
/misc /etc/auto.misc –timeout 60
下面是我的/etc/auto.misc配置文件:
[jephe@sh3 /etc]$ more auto.misc
cdrom -fstype=iso9660,ro :/dev/cdrom
floppy -fstype=vfat :/dev/fd0
e2floppy -fstype=ext2 :/dev/fd0
注:
a.確保/dev/cdrom作為符號鏈接指向你的光驅所在的分區,作為我的情況:
[jephe@sh3 /dev]$ ls cdrom -l
lrwxrwxrwx 1 root root 3 Aug 26 08:44 cdrom -> hdd
b.當軟盤為windows 95格化化的vfat分區類型時,設定了安裝目錄/misc/floppy
c.當軟盤為Linux格式化過的ext2分區類型時,設定了安裝目錄/misc/e2floppy
至此,若還未啟動autofs,則運行/etc/rc.d/init.d/autofs start,若對上述兩個文件中做過任何更改,運行/etc/rc.d/init.d/autofs restart即可。
放入一片光盤進入光驅後,不需任何動作,直接進入目錄/misc/cdrom,autofs將自動先為你mount光驅同樣,若放入一張vfat格式的軟盤,你可以cd /misc/floppy ,若是ext2格式的軟盤,則cd /misc/e2floppy。在超過一分鐘未使用它們,且當前目錄不是自動mount目錄/misc/cdrom,/misc/floppy,/misc/e2floppy,系統將自動umount它們。
cron計劃任務
====================================
簡介
crontab-操作每個用戶的守護程序和該執行的時間表。
部分參數說明
crontab file [-u user]-用指定的文件替代目前的crontab。
crontab-[-u user]-用標準輸入替代目前的crontab.
crontab-1[user]-列出用戶目前的crontab.
crontab-e[user]-編輯用戶目前的crontab.
crontab-d[user]-刪除用戶目前的crontab.
crontab-c dir-指定crontab的目錄。
crontab文件的格式:M H D m d cmd.
M:分鐘(0-59)。
H:小時(0-23)。
D:天(1-31)。
m:月(1-12)。
d:一星期內的天(0~6,0為星期天)。
cmd要運行的程序,程序被送入sh執行,這個shell只有USER,HOME,SHELL這三個環境變量。
下面是一個例子文件:
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
#每天早上6點10分
10 6 * * * date
#每兩個小時
0 */2 * * * date
#晚上11點到早上8點之間每兩個小時,早上8點
0 23-7/2,8 * * * date
#每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * mon-wed date
#1月份日早上4點
0 4 1 jan * date
範例
$crontab -l列出用戶目前的crontab.
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
10 6 * * * date
0 */2 * * * date
0 23-7/2,8 * * * date
如何在Linux裡面恢復mbr?
====================================
可以使用下面的命令來恢復:
dd if=/boot/boot.NNNN of=/dev/hda bs=446 count=1
其中bs(buffer size)是指重寫的字節數。為什麼不是512呢?主引導扇區是一個扇區(512字節)呀?答案是因為我們用上面的命令是為了修復可能被病毒修改了的主引導記錄MBR,或者想把LILO卸載掉,而不是恢復整個主引導扇區。所以我們只把主引導扇區的備份文件boot.NNNN的前446個字節重寫入主引導扇區。 boot.NNNN是我們在安裝Linux之前整個主引導分區的備份。如果我們把512個字節全部寫入主引導扇區就可能會把安裝了Linux後改變了的硬盤DPT表也破壞掉。那就壞事了。 🙂
如何列出一個目錄佔用的空間
====================================
du或du -s或du -k
du -S | sort -n可以迅速發現那個目錄是最大的。
用df可以看到已安裝的文件系統的空間大小及剩餘空間大小。
quota -v查看用戶的磁盤空間信息,如果你用quota限制了用戶空間大小的話。
在使用less或more時,如何直接啟動編輯器
====================================
在less或者more中打入v鍵,會立即啟動vi編輯器,可以對文件進行編輯
如何察看你當前使用的Linux內核的版本
====================================
可以使用uname -r來查看當前內核版本。如果使用uname -a可以查看包括內核版本,機器硬件信息、網絡節點名、操作系統名字等信息
如何顯示文件的類型
====================================
用命令file可以使你知道某個文件究竟是ELF格式的可執行文件,還是shell script文件或是其他的什麼格式例如:
#file startx
如何將man page轉成HTML格式
====================================
使用man2html這個指令,就可以將man page轉成HTML格式了。用法是:
man2html filename > htmlfile.html
例子:
man2html /usr/man/man1/man2html.1 > ~/man2html.html
查看文件內容的特殊方法
====================================
相信最基本的cat和less你已經很熟悉了,如果有特殊的要求呢:
如果你只想看文件的前5行,可以使用head命令,如:
head -5 /etc/passwd
如果你想查看文件的後10行,可以使用tail命令,如:
tail -10 /etc/passwd
tail -f /var/log/messages
參數-f使tail不停地去讀最新的內容,這樣有實時監視的效果,當你在ppp撥號的過程中用它豈不是很方便!
查看文件中間一段,你可以使用sed命令,如:
sed -n ‘5,10p’ /etc/passwd
這樣你就可以只查看文件的第5行到第10行。
linux下文件分割與合併
====================================
$dd if=source of=target.1 bs=1M count=10
$dd if=source of=target.2 bs=1M skip=10
source被分為target.1和target.2兩個文件,其中target.1為source的前10M部分;target.2為source的減去10M後的部分。
$cat target.1 target.2 > othersource
source與othersource是同一個文件。
RedHat下如何顯示彩色目錄列表
====================================
打開/etc/bashrc,加入如下一行:
alias ls=”ls –color”
下次啟動bash時就可以像在Slackware裡那樣顯示彩色的目錄列表了,其中顏色的含義如下:
藍色–>目錄
綠色–>可執行文件
紅色–>壓縮文件
淺藍色–>鏈接文件
灰色–>其他文件
什麼是Linux運行級?
====================================
什麼是運行級呢?簡單的說,運行級就是操作系統當前正在運行的功能級別。這個級別從1到6,具有不同的功能。這些級別在/etc/inittab文件裡指定。這個文件是init程序尋找的主要文件,最先運行的服務是那些放在/etc/rc.d目錄下的文件。
不同的運行級定義如下:(可以參考Red Hat Linux裡面的/etc/inittab)
#缺省的運行級,RHS用到的級別如下:
# 0 -停機(千萬不要把initdefault設置為0 )
# 1 -單用戶模式
# 2 -多用戶,但是沒有NFS
# 3 -完全多用戶模式
# 4 -沒有用到
# 5 – X11
# 6 -重新啟動(千萬不要把initdefault設置為6 )
對各個運行級的詳細解釋:
0為停機,機器關閉。
1為單用戶模式,就像Win9x下的安全模式類似。
2為多用戶模式,但是沒有NFS支持。
3為完整的多用戶模式,是標準的運行級。
4一般不用,在一些特殊情況下可以用它來做一些事情。例如在筆記本電腦的電池用盡時,可以切換到這個模式來做一些設置。
5就是X11,進到Xwindow系統了。
6為重啟,運行init 6機器就會重啟。
不同的運行級有不同的用處,也應該根據自己的不同情形來設置。例如,如果丟失了root口令,那麼可以讓機器啟動進入單用戶狀態來設置。在啟動後的lilo提示符下輸入:
init=/bin/sh rw
就可以使機器進入運行級1 ,並把root文件系統掛為讀寫。他會跳過所有系統認證,讓你使用passwd程序來改變root口令,然後啟動到一個新的運行級。

系統平均負載(Load average)釋疑
====================================
在Linux系統中,uptime、w、top等命令都會有系統平均負載load average的輸出,那麼什麼是系統平均負載呢?
系統平均負載被定義為在特定時間間隔內運行隊列中的平均進程樹。如果一個進程滿足以下條件則其就會位於運行隊列中:
-它沒有在等待I/O操作的結果
-它沒有主動進入等待狀態(也就是沒有調用’wait’)
-沒有被停止(例如:等待終止)
例如:
[root@www2 init.d]# uptime
7:51pm up 2 days, 5:43, 2 users, load average: 8.13, 5.90, 4.94
命令輸出的最後內容表示在過去的1、5、15分鐘內運行隊列中的平均進程數量。
一般來說只要每個CPU的當前活動進程數不大於3那麼系統的性能就是良好的,如果每個CPU的任務數大於5,那麼就表示這台機器的性能有嚴重問題。對於上面的例子來說,假設系統有兩個CPU,那麼其每個CPU的當前任務數為:8.13/2=4.065。這表示該系統的性能是可以接受的。
如何以樹狀結構顯示系統當前的任務
====================================
運行ps時指定—forest選項,當前運行的進程將會以樹狀格式顯示出來。比如:所有由xserver運行的程序,將會以xserver做為它們的“根”顯示出來。
命令格式:
ps afx
其中’a’表示列出所有運行的進程;’x’列出所有的後台進程;’f’是’-forest’的縮寫。輸出的格式如下:
329 ? SW 0:00 [wdm]
342 ? R 9:57 _ /usr/X11R6/bin/X :0 vt7 -fbbpp 16 -auth /usr/etc/
343 ? SW 0:00 _ [wdm]
364 ? S 0:45 _ /usr/bin/enlightenment
399 ? S 0:00 _ /usr/bin/ssh-agent sh /home/tuneup/.xse
404 ? S 2:28 _ gkrellm -wm
787 ? S 0:05 _ aterm -fg white -tr
788 ttyp0 SW 0:00 _ [bash]
792 ttyp0 S 0:00 _ vim todo
注:另外一種得到格式化輸出結果的方法是:pstree -pu
列目錄時如何顯示中文文件名
====================================
我們可以使用–show-control-chars命令選項來顯示。
例如:
$ls –show-control-chars
如果使用的是一個比較常用的windows的分區,那麼可以通過修改fstab來實現,在fstab中加入類似內容:
/dev/hda1 /mnt/c vfat defaults,codepage=936,iocharset=cp936 0 0
那麼以後進入系統後都可以方便地使用/mnt/c訪問windows的這個目錄並正確顯示目錄名和文件名。
如何使用iso文件?
====================================
許多Linux發行版本都有.iso的光盤鏡像文件,可以用來刻錄光盤。我們也可以在Linux系統下直接使用。
#mount -t iso9660 -o loop xxxxx.iso /any/path/if/u/like
查詢你的CPU等級
====================================
cat /proc/cpuinfo
如何使用戶沒有telnet和ftp權限
====================================
若只希望用戶沒telnet權限,則需要修改/etc/passwd中對應該用戶的shell為/bin/true。
若只希望用戶沒有telnet和ftp權限,則需要修改/etc/passwd中對應該用戶的shell為/bin/false。
如何連續執行一個命令
====================================
使用watch命令,可以反复執行命令,如果和ls配合,可以達到觀察某文件大小變化的效果。例如:
$watch ls -l file.name
如何防止某個關鍵文件被修改
====================================
在linux下,有些配置文件是不允許任何人包括root修改的,為了防止被誤刪除或修改,可以設定該文件的”不可修改位(immutable)”。
例如:
chattr +i /etc/fstab
如果需要修改文件則:
chattr -i /etc/fstab
以後再修改文件。
linux環境下如何undelete
====================================
先在自己的主目錄下創建一個名為.trash的子目錄,然後在bashrc加入以下指令:
alias rm ‘mv -f !* ~/.trash’
alias undel ‘mv ~/.trash/!* ./!*’
alias cleantrash ‘/bin/rm -rf ~/.trash; mkdir ~/.trash;sync’
alias lrm ‘ls ~/.trash’
若文檔是直接用rm命令刪除的,理論上ext2內rm掉的檔案還是可以用debugfs , ext2ed救回來的.當然…被overwrite掉就沒救了。
如何找出磁盤中某個大小範圍內的文件
====================================
比如要查找磁盤中大於3M的文件:
find . -size +3000k -exec ls -ld {} ;
如何快速重新執行已經執行過的命令
====================================
使用!可以實現該功能,例如你前面執行了很多命令,現在突然想執行上一次執行的./configure命令,則只需要輸入“!./con”即可而無需使用上下鍵來滾動查找。
而!!則能代替前面一個命令。比如剛執行過一次ifconfig,輸入“!!”則等於再執行一次ifconfig。
而且這兩個用法可以和其他命令組合,比如你剛執行過ifconfig,然後執行man !!,就等於執行man ifconfig。
當終端出現混亂時,如何讓它恢復正常
====================================
當使用stty命令而出現一些混亂或者更糟的是,使用一個程序而使終端設置完全混亂了時怎麼辦?要回到“現實”,試試下面的命令:
stty sane
如果擊鍵變得混亂時,試著用<CTRL+j>來把命令括起來,輸入<CTRL+j>的順序是先按下CTRL再鍵入j鍵。
<ctrl+j>ctty sane <ctrl+j>
這個命令不會回到先前的設置,但卻可以去除一些稀奇古怪的設置。而真正會出現什麼設置要依賴於所使用的系統,但它至少會讓你能輸入字符,並見到結果。從這裡開始,你可以把一些組合鍵設置為你所喜歡的方式。
如何將.gz文件分割為數個1.44mb
====================================
把一個文件分割到軟盤:
tar cfvm /dev/fd0 file.tar.gz
把軟盤上的文件合併到硬盤:
tar xvfm /dev/fd0
如何一次處理一整個目錄
====================================
Linux/UNIX的很多常用命令如rm , cp等都有一個參數—- -r ,是遞歸的意思,命令裡加了參數-r就可以對目標目錄及其下所有子目錄進行操作,如:
rm -rf /test (f是force意為強行)
該命令完全刪除根目錄下的子目錄test ,作用類似於dos下的deltree ,當然使用這個命令時要特別小心。再如:
cp -r /test /test1
有類似dos下xcopy /s的作用。
redhat下如何允許root通過telnet登錄?
====================================
方法1:/etc/securetty (加入pts/0 、pts/1、…)
# echo “pts/0” >> /etc/securetty
方法2:為了在redhat linux系統中激活遠程登陸,從文件/etc/pam.d/login中移去下面這一行:
auth required /lib/security/pam_security.so
將/etc/securetty這個文件改名就行啦,該文件是定義root只能在tty1~tty6的終端上登錄的,詳細的信息可以”man login”。
Linux正常重新啟動的方法有很多種,下面介紹幾種常用的重新啟動方法:
====================================
Ctrl+Alt+Del
#init 6
#shutdown -r now
#reboot
為什麼我的linux不允許普通用戶登錄?
====================================
以root的身份登錄系統,檢查是不是有/etc/nologin這個文件,刪除這個文件,然後再以普通用戶的身份登錄。相信問題已經解決。
出現這種問題一般是因為系統在關閉的過程中意外中斷了操作,如斷線或者是插頭被拔了之類的意外。而係統在關閉的過程中會自動的產生這個文件,以便通知用戶系統正在關閉這就造成普通用戶無法登錄了。
另外一種原因是系統管理員在對系統進行維護,為了維護的過程中不受其他用戶的影響,需要生成這個文件來禁止其他用戶登錄。但很不幸系統管理維護完以後忘記刪除這個文件了。
如何改變當前路徑下所有目錄和文件的所有權
====================================
改變所有子目錄及文件的所有權
#chown -R owner[.group] *
也可以用find命令來實現:
#find . -exec chown owner[.group] {} ;
改變所有子目錄及文件的屬性
在你要改變屬性的目錄下,輸入命令:
#chmod -R 777 *
就可以改變下面所有子目錄及文件的屬性,不過使用這個命令的時候要特別小心,要是在根目錄下打入這個命令,你所有文件的屬性都將改變,這就會引起很大的安全性問題。
如何快速查找文件
====================================
查找文件可以用find,但最好是用locate,速度快,參數少。
$locate filename
它是在一個數據庫裡面查找,所以,要記得經常用updatedb命令更新數據庫。一般地,在crontab中的cron.daily腳本會執行/usr/sbin/logrotate /etc/logrotate.conf命令,讓機子在每天深夜更新數據庫。
如何將Linux或FreeBSD複製到另一顆硬盤?
====================================
Linux上的系統複製很簡單,使用cp -ax將partition資料複製過去,重開機後設定lilo就可以了。
FreeBSD也可以用cp來複製文檔,但是對於復制整個文檔系統並不是好方法。
這裡介紹使用dump和restore來做:
創建新的文檔系統
假如你的新硬盤為ad1,而將來的根分區將是ad1s1a,你可以先創建文檔系統:
newfs /dev/ad1s1a
mount /dev/ad1s1a /mnt
cd /mnt
複製:
dump -f- / | restore -f- -r
這是把老的根文檔系統複製輸出到管道,restore從管道裡讀數據,寫入當前目錄所在的文檔系統。
按部就班複製其他文檔系統
複製完後,也許要修改新硬盤下的/etc/fstab,安裝上新的分區,摘下老硬盤就可以了。
再補充一點,如果你要復制的是另外一台機器,可以用rsh,這樣就可以通過網絡把一個分區數據傳送到另外一台機器,不需要NFS,不需SAMBA等就可以解決問題,而cp就很難作到了。
newfs /dev/ad1s1a
mount /dev/ad1s1a /mnt
cd /mnt
rsh -l yourname thathost ‘dump -f- /’ | restore -f- -r
linux怎麼給一個普通用戶reboot權限?
====================================
分四種情況討論:
1.讓任何人(包括根本不擁有系統帳號的人)都可以通過控制台reboot
在/etc/inittab文件中保留ca::ctrlaltdel:/sbin/shutdown -t3 -r now
這一行。這樣全國人民都可以reboot你的機器,只要你把控制台交出來。
2.讓所有系統用戶都可以reboot
執行# > /etc/security/console.apps/reboot即可。這就在console.apps目錄下生成了一個空文件,文件名就是授權的application。以上路徑是針對Mandrake系統而言的,其他系統我不清楚。不過,真正高雅的Mandraker或許根本就不會去靠“>”來生成這個文件——他們會使用msec來進行控制的。
3.讓指定的用戶才可以reboot
假設我們要讓用戶zhizunbao擁有reboot的權限,我們靠uid/gid來完成控制:
# groupadd reboot
# cd /usr/local
# mkdir reboot
# chown root:reboot reboot/
# chmod 750 reboot/
# cd reboot
# cp /sbin/reboot .
# chmod 4755 reboot
# usermod -G reboot zhizunbao
現在,zhizunbao就可以運行/usr/local/reboot/reboot來重啟動機器。
4.在一台不設普通用戶的機器上啟用口令驗證reboot
這實際上是靠添加一個關機帳號來實現的,該帳號的shell就是加了s位的/sbin/halt,並且口令只有少數維護人員知道。我們這裡採用的就是第4套方案。
怎樣知道自己的機器上有哪些服務在運行
====================================
若一台機器運行有很多不需要的服務,那麼被攻擊者入侵的可能性就會大大加大,因此作為管理員就應該經常查看系統運行有哪些服務。
首先查看系統運行的進程
若需要查看系統當前運行的所有進程,就需要用如下命令:
# ps auxw
其中參數a表示顯示系統中所有用戶的的進程;u表示輸出進程用戶所屬信息;x表示也顯示沒有控制台的進程;若顯示行太長而被截斷則可以使用f參數;
查看系統監聽的服務
# netstat -ln
l表示顯示當前系統監聽的端口信息;n表示端口按照端口號來顯示,而不轉換為service文件中定義的端口名;若希望了解各個端口都是由哪些進程監聽則可以使用p參數。
若發現不需要的服務,可以使用linuxconf或ntsysv命令來關閉這些服務在系統啟動時自啟動,然後重新啟動系統則這些服務將在運行。
有些服務是由inetd超級服務器來監控的,則需要標記/etc/inetd.conf來關閉這些服務。
查詢端口對應的服務
====================================
# lsof -i :端口號
查詢此端口對應的服務。
vi中設置自動縮進
====================================
:set autoindent
:set ai
取消
:set noautoindent
:set noai
如何使linux系統對ping不反應
====================================
在linux裡,如果要想使ping沒反應也就是用來忽略icmp包。可以用:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
若想恢復就用:
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
如何實現多網卡bondin
====================================
使用多塊網卡虛擬成為一塊網卡,具有相同的IP地址。這項技術其實在sun和cisco中已經存在,分別稱為Trunking和etherchannel技術,在Linux中,這種技術稱為bonding。
因為bonding在內核2.4.x中已經包含了,只需要在編譯的時候把網絡設備選項中的Bonding driver support選中就可以了。
然後,重新編譯核心,重新起動計算機,執行如下命令:
ismod bonding
ifconfig eth0 down
ifconfig eth1 down
ifconfig bond0 ipaddress
ifenslave bond0 eth0
ifenslave bond0 eth1
現在兩塊網卡已經像一塊一樣工作了.這樣可以提高集群節點間的數據傳輸.
你最好把這幾句寫成一個腳本,再由/etc/rc.d/rc.local調用,以便一開機就生效.
bonding對於服務器來是個比較好的選擇,在沒有千兆網卡時,用兩三塊100兆網卡作bonding,可大大提高服務器到交換機之間的帶寬.但是需要在交換機上設置連接bonding網卡的兩個口子映射為同一個虛擬接口。

This entry was posted in Linux.

发表评论

邮箱地址不会被公开。 必填项已用*标注


*

在线客服系统