希望得到大家的幫助,有錯誤的話.提出來,我會很感謝您的 linux 內核(kernel) shell是現在流行的linux的語言,最開始是一個叫bcpc的語言--->B(語言)-->C(語言) Unix是一個商標。現在主流的有IBM的AiX,HP的ux,sun的soaris等。 最開始的起源-->1972(C語言)-->1973(BSD)-->sys V 系統 |opengroup 1973年由於壟斷法的原因unix分出來,被朗訊用到-->Nover|unixware 之後sco打專利的案件。如果感興趣的話,具體的可以去網上找一找相關的資料。 |dos linux的起源 | |minix (大學教授的一個教學系統) 感覺這兩個系統都不怎麼好,在原有的minix里改寫程序,最開始是發布在大學的校園網。供大家一起來學習,之後有很多 | 人覺得這是個很好的系統,之後大家一起來進來修改,在1992前發布了 GUN--創史人(RMS)---FSF 最開始是在實驗室里進行開發,unix進行商業之後,一個很好的系統應該是一個開放的,這樣長會長久。就開始了編寫軟體 linux是一個內核。之後加入GUN組織,現在的linux 叫GUN/linux Block-512-8M _____ |446|-->MBR |64 |-->DPT |2 |-->16位的機器編 ----- ------------------------ | 推薦的書 | |APUE的內枋編程 | |TCP/IP | |--這兩本書是同一個人| steven ------------------------ 註:以下代有 @#為root提示 @@為普通用戶 常用命令: ls 顯示目錄內容 touch 建立空文件 rm 刪除文件,默認的參數是 「-i「 如果確定刪除可以用 -->rm -rf filename mkdir 建立目錄 rmdir 刪除目錄,如果目錄里不為空不能刪除 more 翻頁查看(只可以一屏一屏,不可以向上看在看) less 查看(可以向上,向下) cat 從上向下查看文件。 tac 從下向上查看文件。 du -h /home 查看/home的使用情況 df -h 查看磁碟空間 tail 查看文件末尾,默認為10行。可以加上 {-n 參數} 來看更多 tail -f 文件名 可以看到變化的文件 type 顯示命令 例如 type cd 可以看到 cd 是一個內部命令。 type passwd 是一個外面命令 man 幫助命令 系統管理員主要看 1、5、8頁 例如 man 5 passwd 程序可以根據自己開發自己選擇。 -f可以看一下命令幫助有幾頁 例如: man -f passwd 如果看查看一下哪些文件有pdf這個程序,可以 man -k pdf info 和man相似。它會顯示一些菜單選項,進入按回車鍵進入相應的幫助。返回上一頁按 u elinks 文件方式訪問網頁 type echo 會看到這個是內建命令 shell---->外殼 @#echo $SHELL ---> 輸出當前工作shell PATH 系統命令查找的路徑 [root@www ~]# which useradd [root@www ~]# mv /usr/sbin/useradd /tmp [root@www ~]# useradd -bash: useradd: command not found [root@www ~]# mv /tmp/useradd /usr/sbin/useradd [root@www ~]# useradd usage: useradd [-u uid [-o]] [-g group] [-G group,...] [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-M] [-n] [-r] name useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ] 如果是自己編譯的軟體,想和命令一樣方便輸出來。可以這樣做 @#PATH=PATH:/usr/loca/tmp/myplay(這個只是舉一個例子,根據你實際安裝的情況加) {( [root@www ~]# type iptables iptables is /sbin/iptables [root@www ~]# type useradd useradd is hashed (/usr/sbin/useradd) [root@www ~]# type if if is a shell keyword [root@www ~]# type ls ls is aliased to `ls --color=tty' [root@www ~]# type alias alias is a shell builtin) 以上是命令的形式,具體的請查看幫助 } useradd --->增加用戶 hostname --->主機名,也可以直接更改,重新啟動機器不會成效。 配置文件在 /etc/sysconfig/network uname --->查看內核 -a ---->顯示內核具體信息 id --->顯示當前用戶ID 管理員的ID是0 date --->查看當前日期 +%A +%a +%B +%b +%C +%c +%D +%d cal --->查看當前月 例如 cal 80 2008 su --->切換用戶 su - user 記得「-」 會把當前的PATH加上的。 ssh --->支持加密數據傳輸。默認以當前用戶登陸。例如 ssh tengfei@192.168.1.119 telnet --->默認不能使用root。 telnet是明文傳輸密碼,對於伺服器來說不安全。 exit --->退出 logout --->登出 例如 @#ksh @#logout @#logout 實驗看一下就知道了 pstree --->以當前的進程顯示樹形 關機命令 shutdown -h now 馬上關機 有提示 shutdown -h 12 12分鐘后關機,可以ctrl+c取消 init 0 先殺進程,再關機。不提示 halt -p -f 直接把電關掉 poweroff 重啟計算機 shutdown -r now init 6 reboot 磁碟 df -h 查看單位是1000 df -H 查看單位是1024 du -sh 文件名 和ls -alh一樣 掛載 mount -t iso9660 /dev/cdrom /mnt mount -t vfat /dev/sda1 /mnt 默認redhat 不支持 ntfs 用戶和組管理 useradd 增加用戶 對應文件 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 用戶:密碼:用戶ID:組ID:註譯:主目錄:shell 對應文件 /etc/shadow root:$1$iiPrrQSB$Xp5p6m1tVVou2H8udwP2s.:13605:0:99999:7::: bin:*:13605:0:99999:7::: 用戶:md5加密碼(實際是一個hash 演算法):日期(相對1970年1月1日有多少天):密碼過期時間:密碼過期提示時間:保留以後用 對應文件 /etc/group root:x:0:root bin:x:1:root,bin,daemon 用戶名:密碼:ID:用戶 對應文件 /etc/shadow change 改變用戶的相關信息 例如: change -E 2008-08-08 tengfei 對應的/etc/shadow就會改變 /etc/login.defs --> 用戶的郵箱位置 目前可以創建的用戶是2^32--->4G useradd --->對應著五個文件一個配置 /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/login.defs /etc/skell(配置) passwd 更改密碼 usermod 改用戶 groupadd 增加組 還有一些相關的命令 groupmod groupdel 文 件 類 型 ls -al -表示普通文件 b表示塊設置文件 c表示字元設置文件 d表示目錄文件 l表示鏈接文件 s表示unix的網路文件(socket) p表示管理文件 修 改 權 限 -------------------------------------------------------- | user | 運算符 mode filename | | u | + rwx | | chmod g | - rwx /etc/tengfei.txt | | o | = rwx | | a | rwx | | | | --------------------------------------------------------- r(4)讀來信 w(2)寫 x(1)執行 例如 @#chmod 744 /etc/tengfei.txt 這個文件的用戶有全部權力。組和其它s可以讀 注意:文件夾必須有x許可權,否則是進不去的。 chown 文件的擁有者 chown [-R] user 文件名 chgrp 文件擁有組 chgrp [-R] groupname 文件名 或者 chown :groupname 文件名 ln 建立鏈接 硬鏈接 @#ln file1 file2 硬鏈接的特點: 1,不能跨分區,2,不能給目錄作硬鏈接3,刪除鏈接原始文件 lsof 列出正在運行的進程 例如 lsof -i :80 會找到httpd服務的進程(包括 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME) 查看某個文件被哪些進程在讀寫(bjweiqiong) lsof 文件名 查看某個進程打開了哪些文件(bjweiqiong) lsof ?c 進程名 lsof ?p 進程號 lsof abc.txt 顯示開啟文件abc.txt的進程 lsof -i :22 知道22埠現在運行什麼程序 lsof -c nsd 顯示nsd進程現在打開的文件 lsof -g gid 顯示歸屬gid的進程情況 lsof +d /usr/local/ 顯示目錄下被進程開啟的文件 lsof +D /usr/local/ 同上,但是會搜索目錄下的目錄,時間較長 lsof -d 4 顯示使用fd為4的進程 lsof -i 用以顯示符合條件的進程情況 查找命令 which --->找一個可執行文件(在$PATH裡面找) whereis --->命令、配置文件 locate ---> 是slocate的一個軟連接。 updatedb是slocate的資料庫,每天凌晨4點進行數據的更新 find 查找命令,比上面的要強大一些。速度也是慢了很多。 重要的是看療效啊! find / -name passwd 查找文件名是passwd find / type -f passwd 查找 -type c File is of type c: b block (buffered) special c character (unbuffered) special d directory p named pipe (FIFO) f regular file l symbolic link s socket D door (Solaris) find /etc --size -4k 文件小於4k find /etc --size -4k 文件大於4k find /bin -perm 777 查找許可權為777 find /bin -perm -4000 |xargs ls -al 查看文件用UID的.具體的 setUID,setGID要網上可以查找到。主要是針對於安全 find /bin -mtime -7 ( 在七天以內變化) 更多的find 的資料請查看 find,xargs詳述 已經發在論壇里了 stat -->顯示某個文件的詳細信息 grep -R '\' /etc/ 查找關鍵字為tengfei gzip 文件名 --->壓縮文件 gzip -d 文件名.gz --解壓縮 如果一個文件是.gz被移動后沒有後綴的話,可以用 gzid -d <文件名>network bzip2和zip 用法和gzip一樣。 tar 命令 壓縮 tar cvf /tmp/tengfei.tar /home/tengfei /tmp/tengfei 創建 tar包 tar cvfz /tmp/tengfei.tar.gz /home/tenfei tar cvfj /tmp/tengfei.tar.bz2 /home/tengfei /tmp/tengfei 創建 tar包 tar rvf /tmp/tengfei.tar /etc/hosts 把一個文件添加到壓縮包里 解壓 tar xvf /tmp/tengfei.tar -C /tmp tar xvfj /tmp/tengfei.tar.bz2 /tmp tar xvfz /tmp/tengfei.tar.gz /tmp 查看tar文件 tar -tvf *.tar 或 tar -tvfz *.tar.gz 把一個文件添加到tar 壓縮包里 tar -rvf /tmp/tengfei.tar /etc/hosts 正規表達式 grep grep '^root' /etc/passwd 「^」 表示開頭 grep 'a\{100,120\}' /etc/tmp -->a 重複出現100-120次 grep '.\{40,\}' /usr/share/dict/words -->單詞數在40個字母以上 grep '^i.\{18\}n$' /usr/share/dict/words -->開頭是"i" ,結尾是"n" 中間單詞個數為18個 grep '^i.\{18,20\}n$' /usr/share/dict/words -->開頭是"i",結尾是"n" 單詞個數為18個到20個之間 grep -v '^#' /etc/squid/squid.conf|grep -v '^$' --> 去除"#"註譯和為空行。 grep '\<07:19:..\>' /var/log/httpd/access_log ---> 查看 07時19分訪問的記錄 grep '\<07:..:..\>' /var/log/httpd/access_log ---> 查看 07時訪問的記錄 grep -B2 tengfei /etc/passwd grep -B2 -A2 tengfei /etc/passwd -A NUM, --after-context=NUM Print NUM lines of trailing context after matching lines. Places a line containing -- between contiguous groups of matches. -B NUM, --before-context=NUM Print NUM lines of leading context before matching lines. Places a line containing -- between contiguous groups of matches. sort -n -t: +2 -r /etc/passwd -n按照字元排序 -t設置插入行號,它是從0開始的 -r 比較一下相反結果 [tengfei]#sort -n -t: +2 -r /etc/passwd|head -n 5 |cut -d: -f1 提出5個用戶名 [tengfei]#cut -d: -f1 /etc/httpd/conf/httpd.conf |sed '/^$/d' |less -->去掉空白行 [tengfei]# cat /etc/passwd|sed 's/root/roottengfei/;s/tengfei/tmpname'; -->多次修改 [tengfei]#sed -e '/root/d' /etc/passwd -->刪除帶root行 [tengfei]#sed -e '1,5d' /etc/passwd -->刪除1到5行 [tengfei]#sed -e '1,5d' /etc/passwd -->刪除1到5行 awk [tengfei]# /sbin/chkconfig --list|grep 6|awk '{if ($5 =="3:on" ) print $1}' 具體的一些使用請參考相關資料 過濾器編輯器 tr [tengfei]# tr "a-z" "A-Z" -->輸入字母自動變成大寫,ctrl+d結束 [tengfei]# tr "a-z" "A-Z" ps 查看進程命令 大多數使用 [tengfei]# ps -ef [tengfei]# ps -aux關 pstree 進程樹 自己做proc [tengfei]# mkdir /tengfei [tengfei]# mount -t proc noe /tengfei [tengfei]# ls /tengfei /proc/cupinfo cpu 信息 /proc/menifo 內存信息 如須其它的信息,請網上查找 top 動態系統信息 進入后參數 -r 可以調整優先順序 -M 內存排序 nice 程序運行優先順序別 kill kill -1 PID 有時候殺不掉就可以用下面的參數 kill -9 PID skill -9 tty1 skill -9 sts/1 pkill -9 -u tengfei killall -9 程序名 有一些是殺不了的。如 aio是內核。 了解更多的相關信息 man signal 配置網路命令 ifconfig ---> [tengfei]# ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up netconfig --->一種圖形化操作 setup --->配置機器相關的信息 網卡配置文件 /etc/sysconfig/network-script/ifcfg-eth0 查看當前活動網卡 mii-tool 工作模式 一個程序ctrl+z停止到後台去 fg 停止到前台 字元串處理 wc -l 文件名 cut -d f7 /etc/passwd sort /etc/passwd >passwd_sort uniq -c passwd_sort >uniq.passwd_sort 看有多少相同的行 系統狀況檢測 在tty1上 [tengfei@www ~]$ (while true; do echo -n tengfei>>log;sleep 1;done) 在tty2上 [tengfei@www ~]$ tail -f log -->看變化 在tty1 ctrl+z 在tty2里看變化。jobs看有幾個進程在工作。把停止的進程重新進行的話 在 tty1用fg,之後在tty2看變化 bash快捷鍵 Tab:自動補完命令行與文件名 Tab鍵雙擊可以列出所有匹配的選擇 ctrl+c 結束當前的任務 ctrl+z 當前任務暫停,並放在後台 ctrl+s 停止屏幕輸出 ctrl+q 恢復屏幕輸出 ctrl+l 清屏 ctrl+d 標準輸入結束 Ctl-B 游標後退,這應該依賴於bash輸入的風格,默認是emacs風格的. Ctl-D 從當前shell登出(和exit很像) Ctl-G beep.在一些老的終端,將響鈴. Ctl-H backspace,刪除游標前邊的字元.如: 1 #!/bin/bash 2 # 在一個變數中插入Ctl-H 3 4 a="^H^H" # 兩個 Ctl-H (backspaces). 5 echo "abcdef" # abcdef 6 echo -n "abcdef$a " # abcd f 7 # 注意結尾的空格 ^ ^ 兩個 twice. 8 echo -n "abcdef$a" # abcdef 9 # 結尾沒有空格 沒有 backspace 的效果了(why?). 10 # 結果並不像期望的那樣 11 echo; echo Ctl-I 就是tab鍵. Ctl-J 新行. Ctl-K 垂直tab.(垂直tab?新穎,沒聽過) 作用就是刪除游標到行尾的字元. Ctl-M 回車 變數 echo unset export [tengfei]# a="aa" [tengfei]# echo $a [tengfei]# unset a [tengfei]# echo $a set env 將當前新安裝的軟體加到路徑里 [tengfei]#PATH=$PATH:/usr/loca/http/sbin/apacher1 rpm 安裝程序 rpm -ivh 程序名.rpm 有依靠不可以安裝的 rpm -ivh --nodeps --force 程序名.rpm 如果用光碟安裝的話,用 rpm -ivh --aid 程序名.rpm 可以解決依存關係 卸載 rpm -e -nodeps 升級程序 rpm -iUh 程序名 查詢rpm包 rpm -qa 系統啟動時有關的腳本 /etc/profile--->變數,只有登錄才執行 ~/.bash_profile ~/bashrc /etc/bashrc 補一點我做的sed [tengfei]#chkconfig --list |awk '{if ($5 ="3:on) print $1}' [tengfei]#chkconfig --list |awk '/3:on/ { if ($5 = "3:on" ) print $1}' [tengfei]#for i in `chkconfig --list |awk '/3:on/ {if ($5 = "3:on" ) print $1}`'; do chkconfig $i off; done -->關閉啟動服務,自己先打一下chkconfig 看一下,再根據自己的實際去做. X-windows 圖形的我就不寫了。這些命令你可以去做做。一步一步來。之後一定有些收穫的 #X #xinit #xhost + #export DISPLAY="IP" #xclock 到那個IP的電腦看一下變化,前提那個電腦必須要開x-windows 開起多個x-windows [tengfei]#startx -- :1 linux無人執手安裝(anaconda) 編輯伺服器的/etc/anaconda-ks.cfg 用光碟引導起來的時候輸入 在提示boot: linux ks=nsf:/192.168.1.100/varp/ftp/pub/anaconda (注anaconda和伺服器起的名字一樣) 之後連上網就可以自動安裝了 有機器支持網卡啟動的話,光碟就不需要了。可以直接連在伺服器那邊 硬碟分區 fdisk [tengfei]#fdisk /dev/hda [tengfei]#fdisk /dev/sda n-->增加新分區 p-->主分區 e-->擴展分區 l-->邏輯分區 t-->改變分區id w-->保存 具體的請用m看一下 先激活分區 partporbe或reboot [tengfei]#mkfs.ext3 /dev/sda1 格式化有如下 mkfs.ext3 ;mkfs -t ext3 ;mkfs2fs -j ext2變ext3 tune2fs -j /dev/sda2 ext3變ext2 tune2fs -o ^has_journal /dev/sda4 [tengfei]#mount /dev/sda1 /mnt 對有問題的分區的處理 umount /dev/sda2 fsck.ext3 -yf /dev/sda2 mount實例 mount /dev/hda1 /mnt mount -t ext3 -o ro /dev/sda3 /mnt mount -o remount,rw /dev/sda3 /mnt mount -o remount ,rw / mount -t vfat /dev/sda2 /mnt mount 192.168.1.100:/var/ftp/pub /mnt mount -o username@passwd 192.168.1.100 /mnt mount -t iso9660 /dev/cdrom /mnt mount -a --->掛載/etc/fstab文件的設備 掛載帶LABEL 分區 [tengfei]# vi /etc/fstab LABLE=/abc /mnt ext3 defaults 0 0 [tengfei]#e2lable /dev/sda2 /abc [tengfei]# df -h [tengfei]#umount -a [tengfei]#mount -a [tengfei]# df -h Swap空間的建立 [tengfei]# mkswap /dev/sda2 [tengfei]# swapon /dev/sda2 用文件做Swap [tengfei]# dd /swapfile bs=10 24 count=100000 相當於100M [tengfei]#swapon /swapfile [tengfei]#swapon -s Autofs配置 [tengfei]#mkdir /test /etc/auto.mast /test /etc/test.misc /etc/test.misc service -ro,soft,intr 192.168.1.100:/var/ftp/pub [tengfei]#service autofs restart 訪問方式 [tengfei]#ls /test -->一般看不到什麼的 [tengfei]# cd /test [tengfei]#ls 編譯內核 在 www.kernel.org下載.例如: linux-2.6.12.tar.bz2 tar xvfj linux-2.6.12.tar.bz2 確定你的機器裝有 ncurse-dev* gcc 如果沒有這個,編譯會出問題.現在2.6 的內核編譯要簡單多了. cd linux-2.6.12 make menuconfig make bzImage make modules make modules_install make install depmod -a grub現在也不用做了.在上面的工作完成的時候,所有的基本都可以了. [ 本帖最後由 open-end 於 2007-6-3 21:50 編輯 ]
[火星人
]
新增加內核編譯linux筆記看看如何看過的人說一下啊. 這樣可以豐富一下學習(繼續 已經有699 次圍觀
本文地址: http://coctec.com/docs/linux/show-post-124805.html