以下命令在 Ubuntu 12.04 64位下測試通過。
在linux中一切都是文件,包括文件夾也是一種特殊的文件,甚至設備也是文件。
查看當前系統的版本
cat /proc/version #Linux version 3.2.0-29-generic (buildd@allspice) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 uname -a #Linux web 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux cat /etc/issue #Ubuntu 12.04.1 LTS \n \l
顯示一個命令的路徑
which adduser /usr/sbin/adduser which groups /usr/sbin/groups which ls /bin/ls
查看在線的用戶
who
顯示當前用戶的賬號
whoami
重啟
reboot
關機
shutdown
查看當前用戶
users
查看當前用戶所在的組
groups
修改當前用戶的密碼
passwd
修改用戶user1的密碼
passwd user1
切換用戶user1
su user1
切換到root用戶
su
創建目錄
mkdir dir1
刪除目錄
rmdir dir1
切換目錄
cd
返回上級目錄
cd ..
新建文件file1
touch file1
新建並編輯文件file1
vi file1
刪除文件
rm
顯示文件內容
cat file1
more file1
less file1
cat還有一個功能就是可以新建文件,並且同時將輸入的內容保存到文件中
cat >> file1
本文URL:http://www.bianceng.cn/OS/Linux/201410/45615.htm
敲入上面的命令後,你就可以開始輸入文件的內容了,還可以換行,如果輸入完畢,就同時按下ctrl+D,就會結束輸入,並且把剛才輸入的內容保存到文件中。
顯示文件的前面10行
通過參數可以指定顯示前面的N行
head file1
顯示文件的最後10行
通過參數可以指定顯示後面的N行
tail file1
列出【home】目錄的所有文件
ls /home
用列表的方式列出【home】目錄的所有文件,不包括隱藏文件
會顯示文件的權限,所有者,大小,最後更新時間
ls -l /home
用列表的方式列出【home】目錄的所有文件,包括隱藏文件,以 . 開頭的文件就是隱藏文件。
會顯示文件的類型,權限,所有者,所有者的用戶組,大小,最後更新時間
ls -al /home
更改文件的所有者
chown user1:group1 file1
更改文件的權限
a所有用戶,+添加權限,rwx讀、寫、執行權限
chmod a+rwx file1
顯示一個命令的說明
說明包括用法和解釋
man cat
顯示一個命令的參數和基本用法
在命令後面加上--help
cat --help
很多時候,如果不知道一個命令的具體用法,或者是有哪些參數,參數是什麼意思,都可以使用上面的兩個命令來查看一下。
添加用戶user1
adduser user1
添加用戶組
addgroup group1
添加用戶的同時,初始化用戶到一個組
adduser --ingroup group1 user11
添加已有用戶到已有的組
adduser user12 group1
cut命令
cut命令可以對文件做一些分隔,分析的處理,是基於行來處理文件。將文件的每一行按照規律分隔,獲取其中的部分內容。
比如說我想得到系統中的所有用戶的登錄賬號,大家都知道系統中有一個/etc/passwd文件,裡面有這些內容,但是同時也有其他的內容。
cut -d: -f1 /etc/passwd
上面的命令做什麼呢?-d參數用來指明分隔符,因為passwd文件的每一行是用冒號分隔的,-f參數指明你想要的字段,這裡指明要第一個字段,也就是登陸賬號字段,最後指明文件的位置就可以了。
如果是想要幾個字段,可以使用-f1-3代表第一個到第三個字段,-f1,3代表第一個和第三個字段。
cut -d: -f1 /etc/passwd >> /tmp/users
使用上面的命令,cut命令的結果就會保存到/tmp/users文件中。
wc命令
wc命令用來統計文件的行數,字符數,單詞數,字節數信息。
root@web:/home# wc -l file1 4613 file1 root@web:/home# wc -c file1 221987 file1 root@web:/home# wc -c file1 221987 file1 root@web:/home# wc -m file1 220166 file1 root@web:/home# wc -L file1 393 file1 root@web:/home# wc -w file1 11902 file1
vi編輯器
vi newfile
兩種模式:命令模式和插入模式。
首先進入的是命令模式,按a,i,o可以進入插入模式,在最下面的一行顯示-- INSERT --,代表現在可以編輯文件了。如果想回到命令模式,需要按下ESC鍵。
按下a會在下一個字符開始插入,按下i會在當前位置開始插入,按下o會從新的一行開始插入。
在命令模式下常用的命令包括
:w newfile2,另存為newfile2。
:wq,保存並且退出。
:q!,強行退出,不保存。
:w,只保存,不退出。
gg,回到文件的第一個字符。
G,到達文件的最後一個字符。
dd,刪除光標所在的當前行。
x,刪除光標所在位置的一個字符。
X,刪除光標所在位置之前的一個字符。
h,向左移動一個字符。
j,向下移動一個字符。
k,向上移動一個字符。
l,向右移動一個字符。
ctrl+b,向後移動一頁。
ctrl+f,向前移動一頁。
ctrl+u,向後移動半頁。
ctrl+d,向前移動半頁。
w,跳到下個單詞的開頭。
e,跳到下個單詞的結尾。
$,移動到光標所在行的末尾。
0,移動到光標所在行的開頭。
u,undo操作,在誤操作之後可以使用。
:set nu,在每一行前面列出行號。
:100,可以直接跳到第100行。
ggdG,清空文件的內容。
在某些時候,需要清空文件內容,而不刪除文件。比喻有些日志文件(log.txt);在linux下的命令為:
清空文件log.txt的內容。
true > log.txt
查詢命令locate
locate是查詢索引,在索引中查詢是否存在匹配條件的文件,這就需要先做索引,系統每天自動進行索引工作。
也可以通過手動執行updatedb來建立索引。
updatedb locate file1
查詢命令find
find是實時搜索,所以查詢消耗的時間要比locate長。
find / -name "file1"
查詢命令grep
grep的查詢對象是文件的內容,以行為單位進行條件的匹配。
grep -c "using" file1
在file1中查詢using出現的個數。
grep是一個強大的文本搜索工具,通過正則表達式搜索匹配的文本,進行輸出。
重定向
將hello重定向到readme文件中
echo "hello" > readme
將1,2,3重定向追加到readme文件中,追加是兩個>符號。
echo "1,2,3" >> readme
管道
將前一個命令的輸出作為下一個命令的輸入,|符號鏈接兩個命令。
user1@web:~$ cat /etc/passwd | cut -d: -f1 root daemon bin sys sync games man lp mail news uucp proxy www-data backup list irc gnats nobody libuuid syslog messagebus sshd ntp user1 user11 user12 mysql
/etc/passwd文件
這個文件存放所有的用戶信息
user1:x:1000:1000:user1.web,,,:/home/user1:/bin/bash
信息分為幾個部分,每部分用冒號:隔開。
第一部分,登陸賬號。
第二部分,密碼,密碼放在另外一個文件/etc/shadow中(密文),這裡用一個字符占位。如果為空,代表用戶沒有密碼。
第三部分,用戶ID。
第四部分,用戶初始化組的ID。
第五部分,用戶描述信息,全名等信息。
第六部分,用戶主目錄,工作目錄,登錄之後所處的目錄。
本文URL:http://www.bianceng.cn/OS/Linux/201410/45615.htm
第七部分,用戶的shell。
/etc/group文件
這個文件存放所有用戶組的信息。
user1:x:1000:user1,user11
信息分為幾個部分,每部分用冒號:隔開。
第一部分,組名稱。
第二部分,組密碼。
第三部分,組ID。
第四部分,組包含的用戶,用逗號分隔。上面的用戶組user1中包含user1和user11兩個用戶。
/etc/shadow文件
這個文件保存所有用戶的密碼信息。
user1:$6$UA2YOwOJ$tn.u3BmF1AjESuzbmmoMkMdjC1B4oUs3I0aA4bq2v.9auayz4Baz3SuZYCtM1xRqQUhjYYmPb4FF1XzPtE1l4/:15636:0:99999:7:::
信息分為幾個部分,每部分用冒號:隔開。
第一部分,登陸賬號。
第二部分,經過加密的密碼,如果不想讓當前用戶登錄,把這部分的內容修改為*或者!。
第三部分,最近更改密碼的日期,日期以1970年1月1日作為第一天,然後依次加1。
第四部分,密碼不可更改的天數。
第五部分,密碼需要重置的天數。
第六部分,密碼重置前的警告天數,就是在到達必須重置的日期之前的幾天就會提示你更改密碼。
第七部分,密碼過期的寬限天數,就是在密碼到達重置的天數,還沒有重置,在後面的幾天還可以繼續使用。
第八部分,賬號失效時間。
第九部分,保留。
chkconfig
查看開機自啟動列表
chkconfig --list
很多時候,我們需要編譯源代碼,然後安裝一個應用。
源代碼通常是tar.gz或者tar.bz2的,需要先解壓釋放,然後在進行編譯和安裝。
tar zxvf apr-1.4.6.tar.gz cd apr-1.4.6 ./configure make sudo make install
tar是一個歸檔的命令,就是將一堆文件,歸檔成一個文件,在需要的時候再進行釋放。同時還支持壓縮。
c,創建歸檔文件
x,釋放歸檔文件
z,gz壓縮
tar cf demo.tar demo tar xf demo.tar tar czf demo.tar.gz demo tar xzf demo.tar.gz
link
建立連接,ln
-s,軟連接,符號鏈接,有點像windows中的快捷方式。刪除源文件,鏈接文件還存在,但是打開連接文件會失敗,提示找不到文件。
-d,硬鏈接,有點像備份。刪除源文件,連接文件依然存在,而且可以打開。
修改源文件,對應的軟硬鏈接都會同步修改。硬鏈接應該是分配了新的空間,但是信息會和源文件進行同步。
兩者在用ls -l查看的時候顯示不一樣。
ls -s/-d target link_name
user1@web:~$ ln -s demo1 demo1-slink user1@web:~$ ln -d demo1 demo1-dlink user1@web:~$ ls -l demo1 -rw-rw-r-- 2 user1 user1 7 Oct 23 21:30 demo1 user1@web:~$ ls -l demo1* -rw-rw-r-- 2 user1 user1 7 Oct 23 21:30 demo1 -rw-rw-r-- 2 user1 user1 7 Oct 23 21:30 demo1-dlink lrwxrwxrwx 1 user1 user1 5 Oct 25 10:25 demo1-slink -> demo1
查詢進程
ps -ef | grep nginx
殺死進程
kill 進程號
取消開機啟動
update-rc.d -f nginx remove
停止一個apache2網站
a2dissite blog
service apache2 reload
啟動一個apache2網站
a2ensite blog
service apache2 reload
踢出登陸的用戶
Last login: Thu Oct 25 23:23:27 2012 from 106.3.102.45 root@web:~# who root pts/3 2012-10-25 23:27 (106.3.102.45) root pts/0 2012-10-25 21:40 (106.3.102.45) root pts/2 2012-10-25 22:12 (106.3.102.45) root pts/4 2012-10-25 22:21 (106.3.102.45) root pts/5 2012-10-25 23:23 (106.3.102.45) root@web:~# pkill -KILL -t pts/0 root@web:~# pkill -KILL -t pts/2 root@web:~# pkill -KILL -t pts/4 root@web:~# pkill -KILL -t pts/5 root@web:~# who root pts/3 2012-10-25 23:27 (106.3.102.45)
清屏命令
clear
查看系統信息
查看內存使用情況
free
查看系統資源使用情況
包括內存,進程,cpu
top
本文出自 “突破中的IT結構師” 博客,請務必保留此出處http://virusswb.blog.51cto.com/115214/1034437