Linux系統是一種開源高穩定性的操做系統,在服務器領域獲得普遍的應用。做爲一個Java後臺開發工程師常常須要登陸Linux服務器部署應用程序,或者是查看程序的運行狀態。通常的Linux服務器上是不會安裝界面程序的,所以熟練掌握經常使用的Linux命令對工程師來講很是重要。java
本篇日誌是我在學習過程的總結,記錄了Linux系統經常使用的命令,適合已經對Linux操做系統有基本概念的開發人員參考學習。若是沒有接觸過Linux操做系統,能夠參考我Linux的其餘系列文章。shell
Linux的命名很是多,咱們也沒有必要掌握全部的命令。本篇博客先來整理平時經常使用的,比較基礎的命令。後續的博客會陸續介紹網絡相關、系統性能相關等命令。數據庫
shutdown命令用來關閉系統。Linux大多使用在服務器領域,因此通常狀況下是不多須要關機的。咱們在關機時必定要謹慎,由於你關機的時候極可能其餘用戶正在遠程登陸(推薦使用xshell)這臺機器進行某些操做。所以你關機前須要查看下當前系統有哪些用戶登陸。vim
# 查看當前登陸用戶 who # 同步內存數據到文件系統 sysnc # 十分鐘後重啓 shutdown -h now //shutdown -h +10 # 重啓 reboot
uname(unix name)用於查看系統相關信息安全
[root@SHA-L0029026 ~]# uname -a Linux SHA-L0029026 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 03:43:06 PDT 2015 x86_64 x86_64 x86_64 GNU/Linux
在使用adduser命令的時候,系統會添加這個用戶名,而且還會自動地建立與這個用戶名名字同樣的用戶組做爲這個用戶的初始用戶組。此外,還會自動地在/home目錄下面建立一個與用戶同名的目錄,接着執行cp /etc/skel /home/用戶名"的操做,實現新增用戶的主目錄的初始化。用adduser這個命令建立的帳號是系統帳號,能夠用來登陸到咱們的系統(區別於Ftp帳號,通常不能經過ssh遠程登陸到機器)。服務器
# 添加用戶 adduser codeer # 爲新添加的用戶修改密碼 passwd codeer # 查看當前用戶屬於哪一個用戶租(或者 groups codeer) groups # 這個用戶不想用了,刪除 deluser -r codeer
還有一個很類似的命令useradd。這個命令不會自動爲咱們建立組、建立用戶home目錄,須要咱們手動設置參數去設定。而且useradd這個命令建立的是普通帳號,並不能用來登陸系統。網絡
useradd [-u UID] [-g GID] [-d HOME] [-M] [-s] -u 自定義UID -g 使其屬於已經存在的某個GID -d 自定義用戶的家目錄 -M 不創建家目錄 -s 自定義shell
更改用戶所屬的用戶組, 語法:chgrp [組名][文件名1 文件名2...]架構
# 查看用戶屬於哪一個用戶組 groups codeer # 添加一個新的用戶組 groupadd group1 # 添加用戶組並指定用戶號 groupadd -g 501 group2 # 刪除用戶組 groupdel group2 # 將dir1文件夾下的文件修改用戶組 chgrp -vR group1 ./dir1
更改文件的全部者和用戶組,這個命令能夠取代chgrp的功能。app
# 將dir文件夾下的文件全部者和用戶組修改 chown -Rv own_name:group_name ./dir
更改文件的屬性。less
chmod -Rv 755 ./dir chmod -Rv -u=rwx,g=rx,o=rx ./dir
umask命令用來顯現建立文件或者目錄時默認的權限。
[root@SZB-L0026548 tmp]# umask 0022 //上面顯示0022,咱們通常看後3位002,用777-002得755就是默認的權限。 //假如你建立的是目錄,owner有rwx權限,用戶組有rx權限,其餘也有rx權限 //假如建立文件,owner有rw權限,用戶組有r全新啊,其餘也有讀權限 [root@SZB-L0026548 tmp]# umask -S u=rwx,g=rx,o=rx
修改文件的特殊屬性。
chattr +i codeer.txt // i的做用很大。它可讓一個文件「不能被刪除、更名、設置鏈接,也沒法寫入或新增數據」。對於系統安全性有至關大的幫助。 chattr -i codeer.txt
查看幫助文檔
ls命令是Linux系統下使用頻率很高的一個命令,用來列出文件或目錄的詳細信息
ls [option] [文件|目錄](文件名和目錄名支持通配符) ls //默認列出當前目錄下文件的信息,橫向排列 ls -al //列出文件的詳細信息 ls -alh //顯示文件的大小 [root@SHB-L0048478 tmp]# ls -alh -rw-r--r-- 1 root root 1.2K Nov 30 20:07 chen.txt ls -alht //時間近的在前面 ls -alhtr //時間遠的在前面 ls -alhr //根據文件名字母排序
查看當前路徑
[root@SHB-L0048478 chen]# pwd /tmp/test/chen
mkdir用於建立目錄,rmdir用來刪除目錄,這個命令不是很經常使用,rm命令能夠替代其功能。
# 設置目錄的訪問權限 mkdir -m 755 # 遞歸循環建立目錄 mkdir -p ./test/codeer # 刪除test目錄下的codeer目錄 rmdir test/codeer # 聯通test目錄一塊兒刪除 rmdir -p test/codeer
rm命令能夠刪除一個目錄中的一個或多個文件或目錄,也能夠將某個目錄及其下屬的全部文件及其子目錄均刪除掉。對於連接文件,只是刪除整個連接文件,而原有文件保持不變。
# 強制遞歸刪除文件,建議備份 rm -rf file # 交互式刪除文件 rm -i file
cp [選項][ 來源文件 ] [目的文件]
cp -a * /tmp //該選項一般在拷貝目錄時使用。它保留連接文件、文件屬性,並遞歸地拷貝目錄,其做用等於dpr選項的組合。 cp -d * /tmp //不加這個選項時會把鏈接文件指向的原文件複製過來,加這個選項就複製鏈接文件 cp -v * /tmp //顯示都複製了哪些文件 # 拷貝整個文件夾到另一個 cp -r ./src/* ./src_bak
mv [選項] [ 來源文件 ] [目的文件]
# 這個命令有重命名的做用 備份 mv -i file1 file2
創建鏈接文件
# 給source file創建軟鏈接文件(快捷方式) ln -s source_file_name link_file_name
修改軟連接
ln –snf [新的源文件或目錄] [快捷方式]
沒有文件就建立文件,有這個文件就修改文件的訪問時間
cat:cat常常用來顯示文件的內容,適合文件內容較少的文件;(cat -n file_name)
tac:和cat同樣,只不過是反向顯示文件內容;
more:一屏一屏的查看文件內容
more -10 file_name //每屏顯示10行;
按Space鍵:顯示文本的下一屏內容。
按enter鍵:顯示一行內容
less:"J"鍵向上 "K"建向下;"/"向下搜索,"n"鍵顯示下一個;"?"鍵向上搜索,"n"鍵顯示下一個,"G":到文件底部;"gg":到文件頭部;
head:head -10 file_name;顯示文件前10行;
tail:tail -10 file_name;顯示文件後10行; tail -f file_name; 動態顯示文件;tail -1000 fileName >>tmp.log(日誌文件較大,一次性打開較慢,只取後面幾行放入臨時日誌文件,這個命令很快)
查找一個可執行命令的絕對路徑
which java //輸出/usr/bin/java
經過預先生成的一個文件列表庫去查找跟給出的文件名相關的文件。
相似於whereis,也是經過查找預先生成的文件列表庫來告訴用戶要查找的文件在哪裏.有時候你執行這個命令可能沒找到想要的文件。這是由於系統尚未生成那個文件列表庫。你可使用updatedb 命令當即生成(更新)這個庫。若是你的服務器上正跑着重要的業務,那麼你最好不要去運行這個命令,由於一旦運行,服務器的壓力會變大。這個數據庫默認狀況下每週更新一次。因此你用locate命令去搜索一個文件,正好是在兩次更新時間段內,那你確定是得不到結果的。你能夠到/etc/updated.conf 去配置這個數據庫生成(更新)的規則。locate命令筆者用的也並很少,因此你只要明白有這麼一個東西便可。你用到時再去深究其用法吧。
find / -mmin -5 # 查找在系統中最後5分鐘裏修改過的文件 find / -mtime -1 #查找在系統中最後24小時裏修改過的文件 find /home -size +512k查大於512k的文件 find /home -size -512k 查小於512k的文件 find . app* #查找當前目錄下以app打頭的文件
type命令其實不能算查找命令,它是用來區分某個命令究竟是由shell自帶的,仍是由shell外部的獨立二進制文件提供的。若是一個命令是外部命令,那麼使用-p參數,會顯示該命令的路徑,至關於which命令。
type命令的使用實例:
$ type cd 系統會提示,cd是shell的自帶命令(build-in)。 $ type grep 系統會提示,grep是一個外部命令,並顯示該命令的路徑。 $ type -p grep 加上-p參數後,就至關於which命令。
查看已掛載磁盤的總容量、使用容量、剩餘容量等,能夠不加任何參數,默認是按k爲單位顯示的
df -h
du 用來查看某個目錄所佔空間大小
# 查看dir這個目錄佔用空間的大小 du -sh dir # 列出dir目錄下每一個文件佔用空間的大小 du -ah dir # 將wll目錄下的文件根據大小排序 du -s /wll/* | sort -nr
gzip通常用於壓縮單個文件,不能用來壓縮目錄,gzip 壓縮的文件能夠直接使用vim命令查看。
gzip codeer.txt //壓縮文件 gzip -d codeer.txt.gz //解壓文件
bzip2也是用於壓縮一個文件。使用 gzip要比bzip2快,可是bzip2會得到比gzip高的壓縮率
bzip2 codeer.txt //壓縮單個文件 bzip2 -d codeer.txt.bz2
將幾個文件打包成一個文件,不進行壓縮。一般打成tar包以後,須要進行gzip。
tar -zcvf test.tar.gz ./* //生成test.tar.gz tar -zxvf test.tar.gz
zip -r test.zip ./* //將當前目錄下的文件壓縮 zip test2.zip test2/* //將test2目錄打包 unzip test.zip //將文件默認解壓到testmulu unzip test.zip -d /tmp //解壓到指定目錄