linux經常使用命令

linux經常使用命令

在linux中,絕大多數命令都參照 命令 選項 參數node

選項:適用於調整命令的功能的python

參數:指的是命令的操做對象,若是省略參數,是因爲有默認參數的linux

目錄操做命令

ls 顯示目錄下的內容git

# ls 
[root@localhost ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog

# ls --color=never  不顯示顏色的顯示目錄下的文件名
[root@localhost ~]# ls --color=never
anaconda-ks.cfg  install.log  install.log.syslog

# ls -a 顯示全部文件(包含隱藏文件)
[root@localhost ~]# ls -a
.  ..  anaconda-ks.cfg  .bash_logout  .bash_profile  .bashrc  .cshrc  install.log  install.log.syslog  .pki  .tcshrc

# ls -l 以長格式顯示文件
[root@localhost ~]# ls -l
總用量 16
-rw-------. 1 root root 1098 6月   8 19:38 anaconda-ks.cfg
-rw-r--r--. 1 root root 8025 6月   8 19:38 install.log
-rw-r--r--. 1 root root 3384 6月   8 19:38 install.log.syslog

# ls -d 只顯示目錄
[root@localhost ~]# ls -l
總用量 16
-rw-------. 1 root root 1098 6月   8 19:38 anaconda-ks.cfg
-rw-r--r--. 1 root root 8025 6月   8 19:38 install.log
-rw-r--r--. 1 root root 3384 6月   8 19:38 install.log.syslog

# ls -i 查看inode節點號
[root@localhost ~]# ls -i
260965 anaconda-ks.cfg  260611 install.log  260612 install.log.syslog

cd 切換所在目錄正則表達式

# cd
[root@localhost ~]# cd /tmp/
[root@localhost tmp]# 

# 進入相對路徑
[root@localhost /]# cd /tmp/
[root@localhost tmp]# cd ../etc/yum.repos.d/

# 進入絕對路徑
[root@localhost yum.repos.d]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ll
總用量 36
drwxr-xr-x. 2 root root 4096 6月   8 19:58 backup
-rw-r--r--. 1 root root 1991 3月  28 2017 CentOS-Base.repo
-rw-r--r--. 1 root root  647 3月  28 2017 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  289 3月  28 2017 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 3月  28 2017 CentOS-Media.repo
-rw-r--r--. 1 root root 7989 3月  28 2017 CentOS-Vault.repo
-rw-r--r--. 1 root root  957 11月  5 2012 epel.repo
-rw-r--r--. 1 root root 1056 11月  5 2012 epel-testing.repo

# cd -  返回上次所在目錄
[root@localhost yum.repos.d]# pwd
/etc/yum.repos.d
[root@localhost yum.repos.d]# cd /
[root@localhost /]# cd -
/etc/yum.repos.d
[root@localhost yum.repos.d]# 

# cd ~  進入當前用戶的家目錄
[root@localhost yum.repos.d]# cd ~
[root@localhost ~]# 

# cd .. 進入上一級目錄
[root@localhost ~]# cd /tmp/
[root@localhost tmp]# pwd
/tmp
[root@localhost tmp]# cd ..
[root@localhost /]# pwd
/

pwd 顯示當前所在目錄shell

# pwd
[root@localhost yum.repos.d]# pwd
/etc/yum.repos.d

mkdir 建立目錄數據庫

# mkdir
[root@localhost ~]# mkdir tmp
[root@localhost ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog  tmp

# mkdir -p 遞歸建立目錄
[root@localhost ~]# mkdir -p a/b/c/d
[root@localhost ~]# tree a
a
└── b
    └── c
        └── d

3 directories, 0 files

rmdir 刪除目錄,只能刪除空目錄apache

# rmdir
[root@localhost ~]# rmdir d

rm -rf 刪除文件和目錄vim

# -r 遞歸,刪除目錄
# -f 強制
[root@localhost ~]# ls
a  anaconda-ks.cfg  install.log  install.log.syslog
[root@localhost ~]# rm -rf a
[root@localhost ~]# ll
總用量 16
-rw-------. 1 root root 1098 6月   8 19:38 anaconda-ks.cfg
-rw-r--r--. 1 root root 8025 6月   8 19:38 install.log
-rw-r--r--. 1 root root 3384 6月   8 19:38 install.log.syslog

tree 目錄名顯示指定目錄下全部內容的目錄樹centos

# tree
[root@localhost ~]# tree /etc/yum.repos.d/
/etc/yum.repos.d/
├── backup
├── CentOS-Base.repo
├── CentOS-Debuginfo.repo
├── CentOS-fasttrack.repo
├── CentOS-Media.repo
├── CentOS-Vault.repo
├── epel.repo
└── epel-testing.repo

文件操做命令

touch 建立空文件或者修改文件最後一次訪問時間

# touch
[root@localhost tmp]# touch replaceContent.py
[root@localhost tmp]# ls
replaceContent.py  yum.log

# 這裏須要注意的是:任何操做系統都不容許建立同名的文件和目錄

cat 查看文件

# cat
[root@localhost ~]# cat install.log
安裝 libgcc-4.4.7-18.el6.x86_64
warning: libgcc-4.4.7-18.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
安裝 setup-2.8.14-23.el6.noarch
安裝 filesystem-2.4.30-3.el6.x86_64
......

# cat -n  顯示行號
[root@localhost ~]# cat -n install.log
     1  安裝 libgcc-4.4.7-18.el6.x86_64
     2  warning: libgcc-4.4.7-18.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
     3  安裝 setup-2.8.14-23.el6.noarch
......

more 分屏顯示文件內容

# more  b返回上一頁,空格進入下一頁
[root@localhost ~]# more install.log
安裝 libgcc-4.4.7-18.el6.x86_64
warning: libgcc-4.4.7-18.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
安裝 setup-2.8.14-23.el6.noarch
安裝 filesystem-2.4.30-3.el6.x86_64

less 分行顯示文件內容

# less  上下箭頭分頁
[root@localhost ~]# less install.log

安裝 libgcc-4.4.7-18.el6.x86_64
warning: libgcc-4.4.7-18.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
安裝 setup-2.8.14-23.el6.noarch

head 顯示文件頭,默認是10行

# head
[root@localhost ~]# head install.log
安裝 libgcc-4.4.7-18.el6.x86_64
warning: libgcc-4.4.7-18.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
安裝 setup-2.8.14-23.el6.noarch
安裝 filesystem-2.4.30-3.el6.x86_64
安裝 basesystem-10.0-4.el6.noarch
安裝 ncurses-base-5.7-4.20090207.el6.x86_64
安裝 kernel-firmware-2.6.32-696.el6.noarch
安裝 tzdata-2016j-1.el6.noarch
安裝 glibc-common-2.12-1.209.el6.x86_64
安裝 nss-softokn-freebl-3.14.3-23.3.el6_8.x86_64

# head -n number  只顯示Number行
[root@localhost ~]# head -n 5 install.log
安裝 libgcc-4.4.7-18.el6.x86_64
warning: libgcc-4.4.7-18.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
安裝 setup-2.8.14-23.el6.noarch
安裝 filesystem-2.4.30-3.el6.x86_64
安裝 basesystem-10.0-4.el6.noarch

tail 顯示文件尾

# tail  默認是文件的最後10行
[root@localhost ~]# tail install.log
安裝 efibootmgr-0.5.4-15.el6.x86_64
安裝 sudo-1.8.6p3-27.el6.x86_64
安裝 audit-2.4.5-6.el6.x86_64
安裝 e2fsprogs-1.41.12-23.el6.x86_64
安裝 xfsprogs-3.1.1-20.el6.x86_64
安裝 acl-2.2.49-7.el6.x86_64
安裝 attr-2.4.44-7.el6.x86_64
安裝 bridge-utils-1.2-10.el6.x86_64
安裝 rootfiles-8.1-6.1.el6.noarch
*** FINISHED INSTALLING PACKAGES ***[root@localhost ~]# 

# tail -n number  只顯示文件尾部number行
[root@localhost ~]# tail -n 3 install.log
安裝 bridge-utils-1.2-10.el6.x86_64
安裝 rootfiles-8.1-6.1.el6.noarch
*** FINISHED INSTALLING PACKAGES ***[root@localhost ~]# 

# tailf 監聽文件,用於監聽實時日誌
[root@localhost ~]# touch 1.txt
[root@localhost ~]# tailf 1.txt 
11111

cp 拷貝文件

cp -r   複製目錄
cp -p   連帶文件屬性複製
cp -d   若源文件是連接文件,那麼複製連接屬性
cp -a   至關於cp -rpd

mv 移動文件或者重命名文件

mv 源文件 目標地址
mv 源文件 目標文件

ln 連接文件

在linux文件中分爲硬連接文件和軟鏈接文件
硬連接文件:
    1.擁有相同的i節點和存儲block塊,能夠看作是同一個文件。修改一個文件,另外一個文件也會發生改變,刪除其中一個,另外一個文件還能打開
    2.能夠經過i節點識別
    3.不能跨分區
    4.不能針對目錄使用
        a.硬連接不能鏈接目錄
        b.硬連接不能跨分區
軟鏈接文件:
    1.相似Windows快捷方式
    2.軟鏈接擁有本身的i節點和block塊,可是數據中只保存原文件名和i節點號,並無實際的文件數據,軟鏈接目錄大小不變
    3.lrwxrwxrwx是軟鏈接
        a.軟鏈接文件都是777
        b.軟鏈接的最大權限是假的,不影響實際訪問,源文件受限制權限
    4.刪除任意文件,另外一個都改變
    5.刪除源文件,軟鏈接不能使用會報錯,紅點閃爍
    
ln -s 源文件 目標文件  文件名必需要寫絕對路徑
    軟鏈接須要絕對路徑,不容許使用相對路徑

建立軟鏈接的緣由,照顧管理員的使用習慣,照顧版本升級須要

權限位

[root@localhost ~]# ll /etc
總用量 1208
-rw-r--r--.  1 root root     16 6月   8 19:38 adjtime
-rw-r--r--.  1 root root   1512 1月  12 2010 aliases
-rw-r--r--.  1 root root  12288 6月   8 19:40 aliases.db
drwxr-xr-x.  2 root root   4096 6月   8 20:11 alternatives

從redhat6更新的,第11位表明這個文件被SELinux所保護,權限位是10位,第1位表明文件類型:
-   普通文件
d   目錄文件
l   連接文件
b   塊設備文件
c   字符設備文件
s   套接字文件
p   管道

chmod 修改權限

權限
    644 標準的讀寫權限
    755 標準的執行權限
    777 最大權限
    在服務器禁止出現777權限,除了系統自帶的目錄,不能手工更改apache權限,只須要把網頁目錄的全部者改爲apache的管理員身份就能夠了

權限的意義

1.權限對文件的意義
    r:讀取文件的內容   more/cat/less/tail
    w:編輯、如今、修改文件內容,不包括刪除文件  vi/echo
    r:可執行
    對於文件來講:執行權限是最高權限
2.權限對目錄的意義
    r:能夠查詢目錄下的文件名   ls
    w:具備修改目錄結構的權限。如新增文件和目錄,刪除此目錄下的文件,重命名等操做 touch rm mv cp
    x:能夠進入目錄
    對於目錄來講:寫權限纔是最高權限,寫權限要當心賦予

chown 改變全部者和所屬組

# chown
[root@host-10-200-137-195 ~]# ll
total 8
-rw-r--r-- 1 root root  856 Jun  2 19:33 client.py
drwxr-xr-x 2 root root    6 Jun  6 11:16 root
-rw-r--r-- 1 root root 1024 Jun  2 19:26 server.py
[root@host-10-200-137-195 ~]# useradd xiao
useradd: user 'xiao' already exists
[root@host-10-200-137-195 ~]# chown xiao:xiao server.py 
[root@host-10-200-137-195 ~]# ll
total 8
-rw-r--r-- 1 root root  856 Jun  2 19:33 client.py
drwxr-xr-x 2 root root    6 Jun  6 11:16 root
-rw-r--r-- 1 xiao xiao 1024 Jun  2 19:26 server.py

chrgp 所屬組 文件名

查找命令

which 查找命令的命令,能看到相關別名

# which
[root@localhost ~]# which vi
alias vi='vim'
    /usr/bin/vim  # 實際上也至關因而查詢別名的操做

whereis 查詢命令的命令,以及幫助文檔的路徑

# whereis
[root@localhost ~]# whereis vi
vi: /bin/vi /usr/share/man/man1/vi.1.gz

和which相同點:
    能夠查找出命令的絕對路徑
和which不一樣點:
    whereis能夠列出幫助文檔的存放位置,而which能夠查詢命令的別名

locate 按照文件名查找 按照數據庫查找

# locate 
# 這個命令在centos6中有,在centos7中須要安裝mlocate,而後初始化數據庫updatedb
[root@localhost ~]# locate inittab
/etc/inittab
/usr/share/man/man5/inittab.5.gz
/usr/share/vim/vim74/syntax/inittab.vim

優勢:
    在後臺創建數據庫/var/lib/mlocate,記錄當前系統的文件名,按數據庫查找
    耗費資源最小,速度快
    第一次更新數據量比較慢

更新數據庫命令:updatedb
配置文件所在位置:/etc/updatedb.conf

# locate -i 不區分大小寫查找
[root@localhost ~]# touch ABC.CONF
[root@localhost ~]# touch abc.conf
[root@localhost ~]# updatedb
[root@localhost ~]# locate abc.conf -i
/root/ABC.CONF
/root/abc.conf

# 配置文件內容
[root@localhost ~]# more /etc/updatedb.conf 
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fusectl gfs gfs2 gpf
s hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpf
s ubifs udf usbfs"
PRUNENAMES = ".git .hg .svn"
PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp"

PRUNE_BIND_MOUNTS   配置文件生效

man 查看命令的幫助

find

# find  文件搜索命令(掃描整個根,文件越多,硬盤越大,速度越慢)

按照文件名去查找
[root@localhost ~]# find /etc -name init  # 在/etc目錄下搜索init的文件(多一個字符都不行)
/etc/sysconfig/init
/etc/init
[root@localhost ~]# find /etc -name *init*  # 在/etc的目錄下搜索包含init的文件,*是通配符
/etc/init.conf
/etc/sysconfig/network-scripts/init.ipv6-global
/etc/sysconfig/init
/etc/inittab
/etc/rc.sysinit
/etc/rc.d/rc.sysinit
/etc/rc.d/init.d
/etc/pam.d/run_init
/etc/init.d
/etc/init
/etc/init/init-system-dbus.conf
/etc/iscsi/initiatorname.iscsi
/etc/selinux/targeted/contexts/initrc_context
/etc/security/namespace.init
[root@localhost ~]# find /etc -name init?  # ?表明單個字符 -iname是不去扥大小寫的
[root@localhost ~]# find /etc -name init???
/etc/inittab

按照時間查找
[root@localhost ~]# find /etc -cmin -5  # 在/etc下查找5分鐘被修改過屬性的文件和目錄 超過5分鐘用+
/etc
/etc/cron.daily
/etc/cron.daily/makewhatis.cron
/etc/man.config


按照大小查找
find / -size +27k

按照全部者和所屬組查找
[root@localhost ~]# find / -user xiao
[root@localhost ~]# find / -group xiao

根據i節點查找
[root@localhost ~]# ll -i
總用量 20
260617 -rw-r--r--. 1 root root    6 6月  10 23:05 1.txt
260971 -rw-r--r--. 1 root root    0 6月  11 01:53 abc.conf
260970 -rw-r--r--. 1 root root    0 6月  11 01:53 ABC.CONF
260965 -rw-------. 1 root root 1098 6月   8 19:38 anaconda-ks.cfg
260611 -rw-r--r--. 1 root root 8025 6月   8 19:38 install.log
260612 -rw-r--r--. 1 root root 3384 6月   8 19:38 install.log.syslog
[root@localhost ~]# find . -inum 260617
./1.txt


find /etc –size +80M –a –size -100M  # 在/etc的目錄下查找大於80MB小於100MB的文件
    -a表示邏輯與and  兩個條件都成立
    -o表示邏輯或or   兩個條件成立一個都執行

grep 在文件內容中搜索字符串匹配的行並輸出

# grep -i[指定字符串] 文件名        輸出包含指定字符串的行
[root@localhost ~]# grep -i 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

# grep -v [指定字符串] 文件名   輸出不包含指定字符串的行
[root@localhost ~]# cat 1.txt 
1
2
3
4
5
[root@localhost ~]# grep -v 2 1.txt 
1
3
4
5

find和grep的區別:
    find:在系統中搜索符合條件的文件名,若是須要匹配,使用通配符匹配,通配符是徹底匹配的,find不支持文本劉操做,不支持管道符。
    grep:在文件內容中搜索負責條件的字符串的行並輸出,若是須要匹配,使用正則表達式,正則表達式是包含匹配。管道符是文本流。

網絡命令

netstat 查看系統網絡狀態

netstat [選項]
    -t  tcp端口
    -u  udp端口
    -l  監聽
    -n  以IP和端口號顯示,而不是主機名和協議名
# netstat -tln
[root@localhost ~]# netstat -tl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 localhost:smtp              *:*                         LISTEN      
tcp        0      0 *:ssh                       *:*                         LISTEN      
tcp        0      0 localhost:smtp              *:*                         LISTEN      
[root@localhost ~]# netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 ::1:25                      :::*                        LISTEN

w 查詢當前登陸服務器的全部用戶

# w
[root@localhost ~]# w
 02:16:55 up  3:47,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                22:30    3:44m  0.09s  0.09s -bash
root     pts/0    192.168.190.1    22:32    0.00s  0.50s  0.04s w
其中第一行:
    02:16:55 up     表明開機時間
    3:47            表明登陸時間
    2 users         表明當前有幾個用戶登陸
    load average: 0.00, 0.00, 0.00  表明1/5/12分鐘前的平均壓力值
第二行:
    USER    表明用戶名
    TTY     登陸終端
    IP      登陸的IP
    LOGIN@  登陸的持續時間
    IDLE    idle用戶的閒置時間
    JCPU    全部進程佔用CPU時間
    PCPU    當前進程佔用CPU時間
    WHAT    正在執行什麼操做
登陸終端:
    tty1-tty6   字符終端
    tty7    圖形終端
    pts/0-255   遠程終端

who 查詢登陸用戶

# who
[root@localhost ~]# who
root     tty1         2018-06-10 22:30
root     pts/0        2018-06-10 22:32 (192.168.190.1)
登陸用戶名   登陸終端    登陸時間    登陸的主機IP地址

last 列出登陸系統的相關信息

# last
[root@localhost ~]# last
root     pts/1        192.168.190.1    Sun Jun 10 23:05 - 01:39  (02:33)    
root     pts/0        192.168.190.1    Sun Jun 10 22:32   still logged in   
root     tty1                          Sun Jun 10 22:30   still logged in   
reboot   system boot  2.6.32-696.el6.x Sun Jun 10 22:29 - 02:22  (03:52)    
root     pts/0        192.168.190.1    Fri Jun  8 20:01 - crash (2+02:28)   
root     tty1                          Fri Jun  8 19:41 - crash (2+02:48)   
reboot   system boot  2.6.32-696.el6.x Fri Jun  8 19:40 - 02:22 (2+06:42)   

wtmp begins Fri Jun  8 19:40:12 2018

# 全部登陸信息都在/var/run/utmp下,可是是不能修改的

ifconfig 查看本機網絡信息

全部系統常見服務都在/etc/services下

關機重啓命令

# sync 數據同步,把內存中數據強制保存到硬盤裏

# 關機命令
    1.shutdown -h now
    2.init 0 
    3.halt
    3.poweroff
# 重啓命令
    1.shutdown -r now
    2.reboot
    3.init 6

linux中系統運行級別

0   關機
1   單用戶
2   不徹底多用戶,不含NFS服務
3   徹底多用戶
4   未分配
5   圖形界面
6   重啓

掛載命令

# mount
linux中全部存儲設備都必須掛載使用,包括硬盤

# mount -l  查詢系統中已經掛載的設備,-l會顯示卷標名稱
[root@localhost ~]# mount -l
/dev/mapper/VolGroup-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

# mount -a 檢測/etc/fstab的內容,自動掛載
    在這裏,若是掛載的是U盤或者光盤,若是下次開機沒有放入,那麼系統就不會啓動
    因此須要mount -a 檢查下文件內容是否出錯
# mount [-t 文件系統] [-l 卷標名] [-o 特殊選項] 設備文件名掛載
選項:
    -t  文件系統    ext3/ext4/iso9660
    -l  卷標名 掛載指定卷標的分區,而不是安裝設備文件名掛載
    -o  特殊選項,能夠指定掛載的額外選項,好比讀寫權限、同步異步等,如不制定默認值生效
    
# dumpe2fs  查看分區的詳細信息
[root@localhost ~]# dumpe2fs -h /dev/sda1
相關文章
相關標籤/搜索