linux常見問題2

linux常見問題2(轉貼)

By 人生百味 發表於 2006-11-7 12:26:00

login  如何設置login前歡迎界面
login  ====================================
login  修改/etc/issue或者issue.net,往裏面寫入文本,就能使得用戶在login前得到相應的提示,這將有助於用戶分辨自己正在連接哪裏的主機。
login  issue的內容是出現在本機登錄的用戶界面上,而issue.net則是在用戶通過網絡telnet的時候出現。

bash  如何在bash下快速執行某個特定歷史命令
bash  ====================================
bash  在bash下面按ctrl+r可以查找歷史命令中匹配的命令並執行

如何查看進程繼承關係
====================================
直接在命令行中輸入
pstree
即可,程序會以樹狀結構方式列出系統中正在運行的各進程之間的繼承關係。

ps  如何找出內存佔用最大的進程
====================================
除了可以使用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  如何修改網卡MAC地址
====================================
首先必須關閉網卡設備,否則會報告系統忙,無法更改。
命令是: /sbin/ifconfig eth0 down
修改 MAC 地址,這一步較 Windows 中的修改要簡單。
命令是:/sbin/ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
重新啓用網卡 /sbin/ifconfig eth0 up
網卡的 MAC 地址更改就完成了

bash  如何用Bash糾正錯誤命令
====================================
當你輸入一個命令不知道是否正確的時候,可以使用ctrl+t來糾正到正確的命令。
比如輸入mkdri,然後按ctrl+t,bash會幫你糾正到最接近的命令mkdir。

login  如何使非root用戶都不能遠程登錄
====================================
建立/etc/nologin文件,這樣所有的非root用戶都不能遠程登錄。

mesg  如何不顯示其他用戶的消息
====================================
用戶可以使用mesg n來禁止別人給他發送信息,其實就是禁止別人往自己的終端上面的寫權限。當別人試圖再使用write給他發送信息時,發送者將會看見提示:
mesg  write: user has messages disabled on pts/n

如何知道某個命令使用了什麼庫文件
====================================
例如要知道ls使用了什麼庫文件,可以使用:
$ ldd /bin/ls

swap  如何臨時增加交換空間
swap  ====================================
swap  產生一個64M的空文件
swap  #dd if=/dev/zero of=/swapfile bs=1024 count=65536

swap  初始化該文件爲交換文件:
swap  mkswap /swapfile 65536
swap  sync

swap  激活這個交換文件:
swap  swapon /swapfile

nohup  如何使一個用戶進程在用戶退出系統後仍然運行
====================================
使用nohup command &,比如:
nohup wget -c ftp://test.com/test.iso
這樣即使用戶退出系統,wget進程仍然繼續運行直到test.iso下載完成爲止

login  如何限制用戶的最小密碼長度
====================================
修改/etc/login.defs裏面的PASS_MIN_LEN的值。比如限制用戶最小密碼長度是8:
PASS_MIN_LEN 8
這樣用戶設置密碼的時候如果輸入的密碼長度小於8將不能設置

login  如何限制只有0組(gid=0)的用戶可以su成root
====================================
修改/etc/login.defs裏面的SU_WHEEL_ONLY的值爲:
SU_WHEEL_ONLY yes
那麼就只有gid爲0的用戶可以su成root。

ctrlaltdel  如何禁用Ctrl+Alt+Del鍵重啓系統
====================================
有時候爲了防止誤操作導致系統重新啓動(如機房裏面新來了個習慣用Window$系統的管理員:-D),或者出於安全的原因,需要禁用Ctrl+Alt+Del組合鍵。
只需要註釋掉/etc/inittab文件內的
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
這一行即可。如何註釋?在這一行的行首放一個“#”號即可。

format  怎麼樣格式化磁盤
====================================
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
  這樣就可以了。

ftp  如何使用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傳輸,以加快數據傳輸的速度。

tar  壓縮和打包文件
====================================
.bz2 文件如何解壓縮 用tar -j 或者bunzip2 命令都可以。
.bz2 ????使用bzip2命令壓縮的文件,可以使用bzip2 -d filename 解包
.gz ????使用gzip命令壓縮的文件,可以使用gunzip -d filename 解包
.tar ????使用tar打包的文件,即tarball文件,可以使用tar xf filename 解包 ,tar cf path/name name 打包
.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下常用壓縮格式的壓縮與解壓方法 】


mount  如何對光驅、軟驅實現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


mount  floppy -fstype=vfat :/dev/fd0
mount  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即可。

mount   放入一片光盤進入光驅後,不需任何動作,直接進入目錄/misc/cdrom,autofs 將自動先爲你mount光驅同樣,若放入一張vfat格式的軟盤,你可以cd /misc/floppy,若是ext2格式的軟盤,則cd /misc/e2floppy。
mount  在超過一分鐘未使用它們,且當前目錄不是自動mount目錄/misc/cdrom,/misc/floppy,/misc/e2floppy,系統將自動umount它們。

rename  批量重命名
rename  =================================
rename  for i in /root/mud/*.C; do mv $i ${i%.C}.c; done

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是同一個文件。

color  RedHat下如何顯示彩色目錄列表
color  ====================================
color  打開/etc/bashrc, 加入如下一行:
color  alias ls="ls --color"
color  下次啓動bash時就可以像在Slackware裏那樣顯示彩色的目錄列表了, 其中顏色的color含義如下:
color  藍色-->目錄
color  綠色-->可執行文件
color  紅色-->壓縮文件
color  淺藍色-->鏈接文件
color  灰色-->其他文件

什麼是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 如何以樹狀結構顯示系統當前的任務
ps ====================================
ps   運行ps時指定-forest選項,當前運行的進程將會以樹狀格式顯示出來。比如:所有由xserver運行的程序,將會以xserver做爲它們的“根”顯示出ps 來。
ps 命令格式:
ps   ps afx
ps   其中’a’表示列出所有運行的進程;’x’列出所有的後臺進程;’f’是’-forest’的縮寫。輸出的格式如下:
ps   329 ? SW 0:00 [wdm]
ps   342 ? R 9:57 /_ /usr/X11R6/bin/X :0 vt7 -fbbpp 16 -auth /usr/etc/
ps   343 ? SW 0:00 /_ [wdm]
ps   364 ? S 0:45 /_ /usr/bin/enlightenment
ps   399 ? S 0:00 /_ /usr/bin/ssh-agent sh /home/tuneup/.xse
ps   404 ? S 2:28 /_ gkrellm -wm
ps   787 ? S 0:05 /_ aterm -fg white -tr
ps   788 ttyp0 SW 0:00 /_ [bash]
ps   792 ttyp0 S 0:00 /_ vim todo

ps  注:另外一種得到格式化輸出結果的方法是:pstree -pu

列目錄時如何顯示中文文件名
====================================
  我們可以使用--show-control-chars命令選項來顯示。
  例如:
  $ls --show-control-chars
  以通過修改fstab來實現,在fstab中加入類似內容:
fstab  /dev/hda1 /mnt/c vfat defaults,codepage=936,iocharset=cp936 0 0

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章