1. 程式人生 > >linux系統常用命令(一)

linux系統常用命令(一)

shu 解析 txt 相關 name roc upd less 位置

管理

在UNIX/linux系統中,一切皆為文件;若非文件,則為進程。首先認識文件系統:

linux文件系統

/var - 經常變化的(variable)文件,諸如日誌或數據庫等

/usr - 包含絕大部分所有用戶(users)都能訪問的應用程序和文件

/opt - 提供一個供可選的 (optional) 應用程序安裝目錄

/tmp - 臨時(temporary)文件

/etc - 配置文件、啟動腳本等 (etc)

/dev - 設備 (device) 文件

/bin - 重要的二進制 (binary) 應用程序

/boot - 啟動 (boot) 配置文件

/sbin - 重要的系統二進制 (system binaries) 文件

/sys - 系統 (system) 文件

/home - 本地用戶主 (home) 目錄

/lib - 系統庫 (libraries) 文件

ls

(http://www.jb51.net/article/56474.htm)
ls命令的20個實用範例

通過修改時間列出:ls -lt
排序文件大小:ls -lhs
測量大小: ls -l --block-size=M
顯示隱藏文件 ls -a
只列出目錄條目 ls -d */
增加 / (斜線) 標記目錄: ls -p
排序時反轉順序: ls -r
遞歸列出子目錄: ls -R
 擴展名排序: ls -lX
統計某文件夾下文件的個數:ls -l |grep "^-"|wc -l
統計某文件夾下目錄的個數:ls -l |grep "^d"|wc -l
統計當前文件夾下文件的個數,包括子文件夾裏的  ls -lR|grep "^-"|wc -l
      

程序安裝

yum
rpm
    卸載已經安裝的rpm包
    兩個關鍵點:
        1.如果提示有xxx.rpm包已經被installed了,那麽先用rpm -e  --nodeps xxx來卸載
        2.如果存在多個版本的話,用rpm -e --allmatches來卸載

linux 下如何安裝 tar.gz包
1)解壓tar.gz包
    ==》最常見的gz格式,則可以執行:“tar –xvzf 軟件包名”,就可以一步完成解壓與解包工作。
    tar -zxvf 軟件包名.tar.gz -C /home/hao   將軟件包名.tar.gz解壓到指定的目錄下 (註意:-C為大寫)
2)進入解壓後的文件目錄下 執行“./configure”命令為編譯做好準備;
    ./configure --prefix=/opt
    表示安裝到/opt目錄
3) 執行“make”命令進行軟件編譯;
4) 執行“make install”完成安裝;
5) 執行“make clean”刪除安裝時產生的臨時文件。

文件解壓

tar
    tar -zxvf 軟件包名.tar.gz -C /home/hao   將軟件包名.tar.gz解壓到指定的目錄下 (註意:-C為大寫)
unzip

文件操作

cp
mv
scp

快速刪除大量文件:
1)先建立一個空目錄
mkdir /data/blank
2)用rsync刪除目標目錄
rsync --delete-before -d /data/blank/ /var/spool/clientmqueue/

ln -s 源文件 目的文件(鏈接文件)
ln -s log2013.log link2013
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
ln -s /usr/local/nginx/conf /etc/nginx
1.源文件被刪除後,並沒有影響硬鏈接文件;軟鏈接文件在centos系統下不斷的閃爍,提示源文件已經不存在
2.重建源文件後,軟鏈接不在閃爍提示,說明已經鏈接成功,找到了鏈接文件系統;重建後,硬鏈接文件並沒有受到源文件影響,硬鏈接文件的內容還是保留了刪除前源文件的內容,說明硬鏈接已經失效

權限

https://www.cnblogs.com/0xcafedaddy/p/7132860.html

  1. 常用的linux文件權限:
444 -r--r--r--
600 -rw-------
644 -rw-r--r--
666 -rw-rw-rw-
700 -rwx------
744 -rwxr--r--
755 -rwxr-xr-x
777 -rwxrwxrwx

註:使用ll命令查看文件/文件夾屬性時候,一共有10列,第一個小格表示是文件夾或者連接等等
d表示文件夾,l表示連接文件,-表示文件
  1. 用戶分組權限概念
從左至右:
0位數字代表文件類型:d表示文件夾,l表示連接文件,-表示文件
1-3位數字代表文件所有者的權限
4-6位數字代表同組用戶的權限
7-9數字代表其他用戶的權限

3.數字概念解析

讀(r)=4
寫(w)=2
執行(x)=1
讀+寫+執行=4+2+1=7

通過4、2、1的組合,得到以下幾種權限:
0(沒有權限)
4(讀取權限)
5(4+1 | 讀取+執行)
6(4+2 | 讀取+寫入)
7(4+2+1 | 讀取+寫入+執行)

chmod 777 目錄
chmod -R 777 usr/

Linux centos關機與重啟命令詳解與實戰

Linux centos重啟命令:
  ●   1、reboot
  ●   2、shutdown -r now 立刻重啟(root用戶使用)
  ●   3、shutdown -r 10 過10分鐘自動重啟(root用戶使用)
  ●   4、shutdown -r 20:35 在時間為20:35時候重啟(root用戶使用)
  如果是通過shutdown命令設置重啟的話,可以用shutdown -c命令取消重啟
Linux centos關機命令:
  ●   1、halt 立刻關機
  ●   2、poweroff 立刻關機
  ●   3、shutdown -h now 立刻關機(root用戶使用)
  ●   4、shutdown -h 10 10分鐘後自動關機
  如果是通過shutdown命令設置關機的話,可以用shutdown -c命令取消重啟

查找

● find
      ○ find . -name “*” | xargs grep “hello abcserver” 
      ○ find . -name "*" | xargs grep "test"
      

● locate(locate) 
用來查找文件或目錄。 locate命令要比find -name快得多,原因在於它不搜索具體目錄,
而是搜索一個數據庫/var/lib/mlocate/mlocate.db 。這個數據庫中含有本地所有文件信息。
Linux系統自動創建這個數據庫,並且每天自動更新一次,因此,我們在用whereis和locate
查找文件時,有時會找到已經被刪除的數據,或者剛剛建立文件,卻無法查找到,原因就是
因為數據庫文件沒有被更新。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數據庫。

locate /etc/my

查看資源

系統版本

cat /etc/redhat-release

硬盤資源

du-Disk Usage
df-Disk Free

du -ah --max-depth=1 /ddhome/usr/hadoop du -h du -lh

df -h  df -TH
ll -lh

fdisk -l

查看CPU信息

總核數 = 物理CPU個數 X 每顆物理CPU的核數 
總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核數 X 超線程數

#查看物理CPU個數
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

#查看每個物理CPU中core的個數(即核數)
cat /proc/cpuinfo| grep "cpu cores"| uniq

#查看邏輯CPU的個數
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

調試

set -x 查看shell調試信息

網絡

查看生效的ip信息

ifconfig

關閉和啟動網卡

ifdown lo
ifup lo

查看網絡狀態

netstat

-t 列出tcp協議端口

-u 列出udp協議端口

-n 不使用域名與服務名,使用IP和端口

-l 列出監聽狀態的網絡服務

-a 列出所有的網絡連接

-r 路由信息

-p 列出pid,進程id

netstat -anp|grep :22
netstat -tunl
netstat -rn

netstat -an|grep ESTABLISHED          #通過這條指令查看當前計算機開啟了哪些服務。
netstat -an|grep ESTABLISHED |wc -l   #查看正在連接我的計算機

抓包命令

tcpdump ‘tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)‘ -w 80.cap
tcpflow -a -o . -Fk -r 80.cap

開機自啟動

/etc/rc.d/

init.d/ :各種服務器和程序的二進制文件存放目錄

rc.* 各個啟動級別的執行程序連接目錄。裏頭的東西都是指向init.d/的一些軟連接

服務開機自啟動

/etc/rc.d/rc*.d

chkconfig --add service
chkconfig -level 5 service on

腳本開機自啟動

etc/rc.d/rc.local
直接在該文件末尾添加自定義腳本

啟動日誌

/var/log/boot.log

進程查看ps

ps命名可以確定哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵屍、哪些進程占用了過多的資源等等.總之大部分信息都是可以通過執行該命令得到。ps是顯示瞬間進程的狀態,並不動態連續;如果想對進程進行實時監控應該用top命令。

參數:

-A :所有的進程均顯示出來,與 -e 具有同樣的效用;
-a : 顯示現行終端機下的所有進程,包括其他用戶的進程;
-u :以用戶為主的進程狀態 ;
x :通常與 a 這個參數一起使用,可列出較完整信息。
輸出格式規劃:

l :較長、較詳細的將該PID 的的信息列出;
j :工作的格式 (jobs format)
-f :做一個更為完整的輸出。

相關信息的意義為:

F 代表這個程序的旗標 (flag), 4 代表使用者為 superuser;
S 代表這個程序的狀態 (STAT);
UID 代表執行者身份
PID 進程的ID號!
PPID 父進程的ID;
C CPU使用的資源百分比
PRI指進程的執行優先權(Priority的簡寫),其值越小越早被執行;
NI 這個進程的nice值,其表示進程可被執行的優先級的修正數值。
ADDR 這個是內核函數,指出該程序在內存的那個部分。如果是個執行 的程序,一般就是『 - 』
SZ 使用掉的內存大小;
WCHAN 目前這個程序是否正在運作當中,若為 - 表示正在運作;
TTY 登入者的終端機位置;
TIME 使用掉的 CPU 時間。
CMD 所下達的指令名稱

ps命令舉例

使用 -a 參數。-a 代表 all。同時加上x參數會顯示沒有控制終端的進程。
$ ps -ax


在需要查看特定用戶進程的情況下,我們可以使用 -u 參數。比如我們要查看用戶‘pungki‘的進程,可以通過下面的命令:
$ ps -u pungki


通過cpu和內存使用來過濾進程
也許你希望把結果按照 CPU 或者內存用量來篩選,這樣你就找到哪個進程占用了你的資源。要做到這一點,我們可以使用 aux 參數,來顯示全面的信息:
$ ps -aux | less

根據 CPU 使用來升序排序
$ ps -aux --sort -pcpu | less

根據 內存使用 來升序排序
$ ps -aux --sort -pmem | less

顯示前10個結果:
$ ps -aux --sort -pcpu,+pmem | head -n 10


通過進程名和PID過濾
使用 -C 參數,後面跟你要找的進程的名字。比如想顯示一個名為getty的進程的信息,就可以使用下面的命令:
$ ps -C getty
$ ps -f -C getty

根據線程來過濾進程
如果我們想知道特定進程的線程,可以使用-L 參數,後面加上特定的PID。
$ ps -L 1213


顯示安全信息
如果想要查看現在有誰登入了你的服務器。可以使用ps命令加上相關參數:
$ ps -eo pid,user,args


格式化輸出root用戶(真實的或有效的UID)創建的進程
系統管理員想要查看由root用戶運行的進程和這個進程的其他相關信息時,可以通過下面的命令:
$ ps -U root -u root u


使用PS實時監控進程狀態
ps 命令會顯示你系統當前的進程狀態,但是這個結果是靜態的。

當有一種情況,我們需要像上面第四點中提到的通過CPU和內存的使用率來篩選進程,並且我們希望結果能夠每秒刷新一次。為此,我們可以將ps命令和watch命令結合起來。

$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’

如果輸出太長,我們也可以限制它,比如前20條,我們可以使用head命令來做到。

$ watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’

查看系統打開文件lsof

lsof(list open files)是一個列出當前系統打開文件的工具。

在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。所以如傳輸控制協議 (TCP) 和用戶數據報協議 (UDP) 套接字等,系統在後臺都為該應用程序分配了一個文件描述符,無論這個文件的本質如何,該文件描述符為應用程序與基礎操作系統之間的交互提供了通用接口。

因為應用程序打開文件的描述符列表提供了大量關於這個應用程序本身的信息,因此通過lsof工具能夠查看這個列表對系統監測以及排錯將是很有幫助的。

lsof輸出各列信息的意義如下: 
COMMAND:進程的名稱
PID:進程標識符
USER:進程所有者
FD:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等
TYPE:文件類型,如DIR、REG等
DEVICE:指定磁盤的名稱
SIZE:文件的大小
NODE:索引節點(文件在磁盤上的標識)
NAME:打開文件的確切名稱

lsof -i[46] [protocol][@hostname|hostaddr][:service|port]

參考文獻

  • Linux 實戰技巧

tips:本文屬於自己學習和實踐過程的記錄,很多圖和文字都粘貼自網上文章,沒有註明引用請包涵!如有任何問題請留言或郵件通知,我會及時回復。

linux系統常用命令(一)