天天看點

linux常用指令說明

1. 基礎快捷鍵使用

ctrl + c:停止程序

ctrl + l:清屏

ctrl + r:搜尋曆史指令

ctrl + q:退出

2.常用目錄或檔案夾指令

說明:安裝linux時,建立一個itcast使用者,然後使用root使用者登陸系統

1.進入到使用者根目錄

cd ~ 或 cd

2.檢視目前所在目錄

pwd

3.進入到itcast使用者根目錄

cd ~itcast

4.傳回到原來目錄

cd -

5.傳回到上一級目錄

cd ..

6.檢視itcast使用者根目錄下的所有檔案

-a是顯式隐藏檔案 -l是以更詳細的清單形式顯示

ls -la

7.在根目錄下建立一個itcast的檔案夾

mkdir /itcast

8.在/itcast目錄下建立src和WebRoot兩個檔案夾

分别建立:mkdir /itcast/src

mkdir /itcast/WebRoot

同時建立:mkdir /itcast/{src,WebRoot}

建立父目錄及子目錄:mkdir -p /opt/itcast/test

3.檔案指令

1.檢視檔案詳情

stat a.txt

2.mv移動改名

移動

mv a.txt /ect/

改名

mv b.txt a.txt

移動并改名

mv a.txt ../b.txt

3.拷貝并改名

cp a.txt /etc/b.txt

4.使用>建立一個struts.xml

> struts.xml

5.使用touch建立多個檔案

touch a.txt b.txt

touch /home/{a.txt,b.txt}

6.使用echo建立檔案

在/itcast目錄下面建立一個test.txt檔案,同時寫入内容"this is test"

echo "this is test" > test.txt

向README檔案追加寫入"please read me first"

echo "please read me first" >> README

7.使用cat複制檔案内容

将一個檔案的内容複制到裡另一個檔案中

cat a.txt > b.txt

追加内容

cat a.txt >> b.txt

注意:>、touch、echo以及cat對檔案操作的比較

①>隻能建立單個檔案;

②touch可以建立單個或多個檔案,無法向檔案插入内容;

③echo建立檔案的同時并向檔案插入一行字元串,操作的是單行字元串;

④cat建立檔案的同時并向新檔案插入别的檔案裡的全部内容,操作的是整個檔案。

8.檢視一下test.txt的内容

cat test.txt

more test.txt

less test.txt

注意:more或less為分頁檢視

9.cp拷貝特定檔案

将所有的java語言程式拷貝至finished子目錄中:

cp *.java finished

10.rm删除特定檔案

删除目前目錄下擴充名是java的檔案

rm -f *.java

删除空目錄

rmdir

11.wc統計檔案

檢視一下README檔案有多單詞,多少個少行

wc -w README

wc -l README

12.vi編輯檔案内容

vi somefile.txt

① 首先會進入“一般模式”,此模式隻接受各種快捷鍵,不能編輯檔案内容

② 按i鍵,就會從一般模式進入編輯模式,此模式下,敲入的都是檔案内容

③ 編輯完成之後,按Esc鍵退出編輯模式,回到一般模式;

④ 再按:,進入“底行指令模式”,輸入wq指令,回車即可

一些有用的快捷鍵(在一般模式下使用):

a 在光标後一位開始插入

A 在該行的最後插入

I 在該行的最前面插入

gg 直接跳到檔案的首行

G 直接跳到檔案的末行

dd 删除行,如果 5dd ,則一次性删除光标後的5行

yy 複制目前行, 複制多行,則 3yy,則複制目前行附近的3行

p 粘貼

v 進入字元選擇模式,選擇完成後,按y複制,按p粘貼

ctrl+v 進入塊選擇模式,選擇完成後,按y複制,按p粘貼

shift+v 進入行選擇模式,選擇完成後,按y複制,按p粘貼

查找并替換(在底行指令模式中輸入)

%s/sad/88888888888888 效果:查找檔案中所有sad,替換為88888888888888

/you 效果:查找檔案中出現的you,并定位到第一個找到的地方,按n可以定位到下一個比對位置(按N定位到上一個)

一些有用的快捷鍵(編輯模式)

ctrl + u (undo) 撤銷修改

ctrl + r (redo) 恢複

4.檔案與檔案夾權限指令

1.linux檔案權限的描述格式解讀

drwxr-xr-x      (也可以用十進制表示  755)

d:辨別節點類型(d:檔案夾 -:檔案 l:連結)

r:可讀    w:可寫    x:可執行

第一組rwx: 表示這個檔案的擁有者對它的權限:可讀可寫可執行

第二組r-x: 表示這個檔案的所屬組對它的權限:可讀,不可寫,可執行

第三組r-x: 表示這個檔案的其他使用者(相對于上面兩類使用者)對它的權限:可讀,不可寫,可執行

2.授予擁有者u、所屬組g 以及其他使用者o 對檔案的權限

chmod ug+w,o-w a.txt b.txt          表示将a.txt、b.txt設為其擁有者和所在組可寫入,但其他以外的人則不可寫入

chmod a+wx c.txt                         表示将c.txt檔案設為所有人都可以寫和執行

chmod -R a+r /itcast                     表示将/itcast目錄下的所有檔案與子目錄皆設為任何人可讀取

chmod g-rw haha.dat                   表示将haha.dat對所屬組的rw權限取消

chmod o-rw haha.dat                   表示将haha.dat對其他人的rw權限取消

注意:u表示檔案的擁有者,g表示檔案的所屬組,o表示檔案的其他使用者,a表示任何人,-表示取消權限,+表示授予權限

也可以用數字的方式來修改權限

chmod 764 haha.dat

就會修改成 rwxrw-r--

r可讀權限表示為4,w可寫權限表示為2,,x可執行權限表示為1,rwx表示為4+2+1即7

5.設定使用者和使用者組

将/itcast目錄下的所有檔案與子目錄的擁有者設為root,使用者擁有組為users

chown -R root:users /itcast

将目前目錄下的所有檔案與子目錄的使用者皆設為itcast,組設為users

chown -R itcast:users *

注意:-R表示遞歸執行,在檔案和目錄上遞歸執行

5.查找指令

1.查找可執行的指令

which ls

2.查找可執行的指令和幫助的位置

whereis ls

3.查找檔案(需要更新庫:updatedb)

locate hadoop.txt

4.從某個檔案夾開始查找

find / -name "hadooop*"

find / -name "hadooop*" -ls

5.查找并删除

find / -name "hadooop*" -ok rm {} \;

find / -name "hadooop*" -exec rm {} \;

6.查找使用者為hadoop的檔案

find /usr -user hadoop -ls

7.查找使用者為hadoop并且(-a)擁有組為root的檔案

find /usr -user hadoop -a -group root -ls

8.查找使用者為hadoop或者(-o)擁有組為root并且是檔案夾類型的檔案

find /usr -user hadoop -o -group root -a -type d

9.查找權限為777的檔案

find / -perm -777 -type d -ls

10.顯示指令曆史

history

11.grep

grep hadoop /etc/password

6.打包與壓縮

1.gzip解壓縮

壓縮

gzip a.txt

解壓

gunzip a.txt.gz

gzip -d a.txt.gz

2.bzip2解壓縮

bzip2 a

bunzip2 a.bz2

bzip2 -d a.bz2

3.tar解壓縮

将目前目錄的檔案打包壓縮

tar -cvf bak.tar .

将/etc/password追加檔案到bak.tar中(r)

tar -rvf bak.tar /etc/password

tar -xvf bak.tar

4.tar.gz解壓縮

打包并壓縮gzip

tar -zcvf a.tar.gz

解壓縮

tar -zxvf a.tar.gz

解壓到/usr/下

tar -zxvf a.tar.gz -C /usr

檢視壓縮包内容

tar -ztvf a.tar.gz

5.tar.bz2解壓縮

打包并壓縮成bz2

tar -jcvf a.tar.bz2

解壓bz2

tar -jxvf a.tar.bz2

6.zip解壓縮

zip/unzip

7.正規表達式指令

1.查找并用cut分割截取

cut截取以:分割保留第七段

grep hadoop /etc/passwd | cut -d: -f7

2.排序sort

du | sort -n

3.查詢不包含hadoop的

grep -v hadoop /etc/passwd

4.正則表達包含hadoop

grep 'hadoop' /etc/passwd

5.正則表達(點代表任意一個字元)

grep 'h.*p' /etc/passwd

6.正則表達以hadoop開頭

grep '^hadoop' /etc/passwd

7.正則表達以hadoop結尾

grep 'hadoop$' /etc/passwd

規則:

. : 任意一個字元

a* : 任意多個a(零個或多個a)

a? : 零個或一個a

a+ : 一個或多個a

.* : 任意多個任意字元

\. : 轉義.

\<h.*p\> :以h開頭,p結尾的一個單詞

o\{2\} : o重複兩次

grep '^i.\{18\}n$' /usr/share/dict/words

查找不是以#開頭的行

grep -v '^#' a.txt | grep -v '^$'

以h或r開頭的

grep '^[hr]' /etc/passwd

不是以h和r開頭的

grep '^[^hr]' /etc/passwd

不是以h到r開頭的

grep '^[^h-r]' /etc/passwd

8.輸入輸出重定向及管道

1.建立一個檔案

touch a.txt

> b.txt

2.錯誤重定向:  2>

find /etc -name zhaoxing.txt 2> error.txt

3.将正确或錯誤的資訊都輸入到log.txt中

find /etc -name passwd > /tmp/log.txt 2>&1

find /etc -name passwd &> /tmp/log.txt

4.追加  >>

5.将小寫轉為大寫(輸入重定向)

tr "a-z" "A-Z" < /etc/passwd

6.自動建立檔案

cat > log.txt << EXIT

> ccc

> ddd

> EXIT

注意:“EXIT”,字母自定義且均需大寫

7.檢視/etc下的檔案有多少個

ls -l /etc/ | grep '^d' | wc -l

8.檢視/etc下的檔案有多少個,并将檔案詳情輸入到result.txt中

ls -l /etc/ | grep '^d' | tee result.txt | wc -l

9.使用者群組指令

1. 添加一個tom使用者,設定它屬于users組,并添加注釋資訊

分步完成:

useradd tom

usermod -g users tom

usermod -c "hr tom" tom

一步完成:useradd -g users -c "hr tom" tom

2.設定tom使用者的密碼

passwd tom

3.添加一個jerry使用者并設定密碼

useradd jerry

passwd jerry

4.修改tom使用者的登陸名為tomcat

usermod -l tomcat tom

5.将tomcat添加到sys和root組中

usermod -G sys,root tomcat

6.檢視tomcat的組資訊

groups tomcat

7.添加一個america的組

groupadd america

8.将jerry使用者添加到america組中

usermod -g america jerry

9.将tomcat使用者從root組和sys組删除

gpasswd -d tomcat root

gpasswd -d tomcat sys

10.将america組名修改為am

groupmod -n am america

11.為使用者配置sudo權限

vi /etc/sudoers   用root編輯

在檔案的如下位置,為hadoop添加一行即可

root ALL=(ALL) ALL

hadoop ALL=(ALL) ALL

然後,hadoop使用者就可以用sudo來執行系統級别的指令

[hadoop@shizhan ~]$ sudo useradd huangxiaoming

12.删除普通使用者

userdel  haha  或者 userdel -r haha

注意:第一個删除不徹底。

10.系統指令

1.檢視主機名

hostname

2.修改主機名(重新開機後無效)

hostname hadoop

3.修改主機名(重新開機後永久生效)

vi /ect/sysconfig/network

4.修改IP(重新開機後無效)

ifconfig eth0 192.168.12.22

5.修改IP(重新開機後永久生效)

vi /etc/sysconfig/network-scripts/ifcfg-eth0

6.檢視系統資訊

uname -a

uname -r

7.檢視ID指令

id -u

id -g

8.用于檢視某一端口的占用情況

lsof -i:8080 檢視8080端口使用情況

9.檢視指定的端口号的程序情況

netstat -tunlp | grep 8080

10.日期

date

date +%Y-%m-%d

date +%T

date +%Y-%m-%d" "%T

11.月曆

cal

cal 2012

12.檢視檔案資訊

file filename

13.挂載硬碟

mount **** 挂載外部儲存設備到檔案系統中

mount /dev/cdrom /mnt/cdrom/ 将裝置/dev/cdrom挂載到 挂載點: /mnt/cdrom中

加載windows共享

mount -t cifs //192.168.1.100/tools /mnt

umount /mnt/cdrom 解除安裝外部裝置

14.檢視檔案大小或磁盤空間大小

統計檔案或檔案夾的大小

du -sh /mnt/cdrom/Packages

-h表示從人類human的角度來展示檔案的大小,kB,MB,GB靈活展示,不限于其中一種

du -h

參考:-k 表示隻以KB的形式展示檔案大小,-m表示隻以MB的形式展示檔案大小

-a 檢視全部檔案的大小

du -ah

檢視磁盤的空間

df -h

15.檢視分區

16.檢視記憶體使用情況

free -h:-h,以human的方式展示,即人性化形式

free -g:-g,以GB的方式展示

free -m:-m,以MB的方式展示

Centos7以下展示結果,h為真正可用的記憶體:

linux常用指令說明

Centos7以上展示結果,available為真正可用的記憶體:

linux常用指令說明

17.檢視檔案系統

/proc

查找程序所在的目錄:ll /proc/10028

19.檢視系統及程序限制

ulimits -a :系統限制

cat /proc/10028/limits :程序限制

18.ssh

ssh [email protected]

19.關機

shutdown -h now /init 0

shutdown -r now /reboot

11.程序控制指令

1.檢視使用者最近登入情況

last

lastlog

檢視目前線上

who

2.檢視系統日志

ls /var/log/

3.檢視系統報錯日志

tail /var/log/messages

tail -f /var/log/messages 

tail -F /var/log/messages 

4.檢視程序

top

5.結束程序

kill 1234

kill -9 4333

同時結束多個程序:kill 15 10028 10029 10030 (15是修飾符,表示可結束多個程序)

12.遠端指令

12.1 配置主機之間的免密ssh登陸

假如 A 要登陸 B

在A上操作:

%%首先生成密鑰對

ssh-keygen -t rsa     (提示時,直接四個回車即可)

%%再将A自己的公鑰拷貝并追加到B的授權清單檔案authorized_keys中

ssh-copy-id  B

注意:A,B都為IP位址

12.2 遠端執行指令ssh

ssh遠端執行指令格式如下:

ssh remote_username@remote_ip command

ssh [email protected] "cd /home; ls"      

12.3 遠端拷貝指令scp

scp基本指令格式如下:

scp [...] src_file dst_file

# 檔案複制
$scp local_file remote_username@remote_ip:remote_folder
$scp local_file remote_username@remote_ip:remote_file

$scp local_file remote_ip:remote_folder
$scp local_file remote_ip:remote_file

#目錄複制
$scp -r local_folder remote_username@remote_ip:remote_folder
$scp -r local_folder remote_ip:remote_folder
      

注意:指定使用者名是需要輸入密碼,不指定使用者名需要同時輸入使用者名和密碼。

13.iptables與firewalld防火牆指令

iptables也叫netfilter,是Linux下自帶的一款免費且優秀的基于包過濾的防火牆工具,它的功能十分強大,使用非常靈活,可以對流入、流出、流經伺服器的資料包進行精細的控制。通常與service和chkconfig連用。

firewalld是centos7使用的防火牆。systemctl是CentOS7的服務管理工具中主要的工具,它融合之前service和chkconfig的功能于一體。

說明 CentOS7以下或其他Linux CentOS7以上
檢視防火牆狀态 service iptables status systemctl status firewalld
開啟防火牆 service iptables start systemctl start firewalld
關閉防火牆 service iptables stop systemctl stop firewalld
禁用防火牆 ----------------------- systemctl disable firewalld
檢視防火牆是否開機啟動 chkconfig iptables --list systemctl is-enabled firewalld.service
設定防火牆開機啟動 chkconfig iptables on systemctl enable firewalld.service
設定防火牆開機不啟動 chkconfig iptables off systemctl disable firewalld.service
重新開機防火牆 systemctl restart firewalld.service

14. yum基本指令與本地yum源制作

YUM是Shell前端軟體包管理器。基于RPM包管理,能夠從指定的伺服器自動下載下傳RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載下傳、安裝。

14.1 YUM的常用指令

安裝httpd并确認安裝,其它軟體的yum安裝方式類似

yum install -y httpd

列出所有可用的package和package組

yum list

清楚所有緩沖資料

yum clean all

列出一個包所有依賴的包

yum deplist httpd

删除httpd

yum remove httpd

查找yum源中是否有mysql安裝rpm包

yum list | grep mysql

14.2 制作本地YUM源

生産環境通常無法上網,不能連接配接外網的YUM源。為了在内網中可以使用yum安裝相關的軟體,就需要配置本地yum源。yum源本質上就是一個儲存了多個RPM包的伺服器,可以通過相關http的方式來檢索、下載下傳并安裝相關的RPM包。

制作本地YUM源的步驟:

1. 準備一台Linux伺服器,用最簡單的版本CentOS-6.7-x86_64-minimal.iso

2. 配置好這台伺服器的IP位址

3.上傳CentOS-6.7-x86_64-bin-DVD1.iso到伺服器

4.将CentOS-6.7-x86_64-bin-DVD1.iso鏡像挂載到某個目錄

   mkdir /var/iso

   mount -o loop CentOS-6.7-x86_64-bin-DVD1.iso /var/iso 

5.修改本機上的YUM源配置檔案,将源指向自己,并備份原有的所有YUM源的配置檔案

   cd /etc/yum.repos.d/

   rename .repo .repo.bak *

   cp CentOS-Media.repo.bak CentOS-Media.repo

   vi CentOS-Media.repo

[base]
name=CentOS-Local
baseurl=file:///var/iso
gpgcheck=0
enabled=1   #很重要,1才啟用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6      

添加上面的内容儲存退出

說明:baseurl為挂載的目錄;enabled=1,才啟用;gpgcheck不需要驗證包,故設為0

6.清楚YUM緩存

   yum clean all

7.列出可用的YUM源

   yum repolist

8.安裝相應的軟體

   yum install -y httpd

9.開啟httpd使用浏覽器通路http://192.168.0.100:80(如果通路不通,檢查防火牆是否開啟了80端口或關閉防火牆)

   service httpd start

10.将YUM源配置到httpd(Apache Server)中,其他的伺服器可通過網絡通路這個内網中的YUM源

   cp -r /var/iso /var/www/html/CentOS-6.7

11.取消先前挂載的鏡像

   umount /var/iso

12.在浏覽器中通路http://192.168.0.100/CentOS-6.7/ ,如圖:

linux常用指令說明

13.讓其他需要安裝RPM包的伺服器指向這個YUM源,準備一台新的伺服器,備份或删除原有的YUM源配置檔案

  cd /etc/yum.repos.d/

  rename .repo .repo.bak. *

  cp CentOS-Media.repo.bak CentOS-Media.repo

  vi CentOS-Media.repo

[base]
name=CentOS-Media
baseurl=http://192.168.0.100/CentOS-6.7
gpgcheck=0
enabled=1   #很重要,1才啟用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
      

 添加上面内容儲存退出

14.在這台新的伺服器上執行YUM的指令

  yum clean all

  yum repolist

15.安裝相應的軟體

  yum install -y gcc

16.加入依賴包到私有yum的repository

  進入到repo目錄

  執行指令: createrepo .

說明:createrepo (.) 這裡有點

15.crontab定時器

crontab使用方式 : 

crontab file [-u user]         用指定的檔案替代目前的crontab。

crontab - [-u user]             用标準輸入替代目前的crontab.

crontab -l [user]                列出目前的時程表

crontab -e [user]               執行文字編輯器來設定時程表,内定的文字編輯器是 VI.

crontab -d [user]               删除使用者目前的crontab.

crontab -r                         删除目前的時程表

crontab -c dir                   指定crontab的目錄。

crontab檔案的格式:M H D m d cmd

時程表的基本格式 : 

*  *  *  *  *  command

f1     f2     f3      f4      f5      program

分  時  日  月  周     指令

f1表示分鐘1~59

f2表示小時0~23(0表示0點) 

f3表示日期1~31 

f4表示月份1~12 

f5表示星期0~6(0表示星期天) 

program表示要運作的指令

當 f1 為 * 時表示每分鐘都要執行 program,f2 為 *時表示每小時都要執行程式,其餘類推;

當 f1 為 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間内要執行,f2 為 a-b 時表示從第 a 到第 b 小時都要執行,其餘類推;

當 f1 為 */n 時表示每 n 分鐘個時間間隔執行一次,f2 為 */n 表示每 n 小時個時間間隔執行一次,其餘類推;

當 f1 為 a, b ,c,... 時表示第 a, b, c, ... 分鐘要執行,f2 為 a, b, c, ... 時表示第a, b, c...個小時要執行,其餘類推;

執行個體:

######普通模式######
#下面的例子表示每晚的21:30重新開機apache。 
30 21 * * * /usr/local/etc/rc.d/lighttpd restart 
#一月一号的4點重新開機apache 
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
#下面的例子表示每星期六的11 : 00 pm重新開機apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart

######使用 "-" 模式######
#每月的4号與每周一到周三的11點重新開機apache 
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart 
#周一到周五每天下午 5:00 寄一封信給 [email protected] : 
0 17 * * 1-5 mail -s "hi" [email protected] < /tmp/maildata 

######使用 "*/n" 模式######
#每一小時重新開機apache 
* */1 * * * /usr/local/etc/rc.d/lighttpd restart 

######使用 "," 模式######
#下面的例子表示每月1、10、22日的4 : 45重新開機apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart 
#下面的例子表示每周六、周日的1 : 10重新開機apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart 
 
######使用 "-" 與 "*/n" 結合模式######
#每月每天的午夜 0 點 20 分, 2 點 20 分, 4 點 20 分....執行 echo "haha" 
20 0-23/2 * * * echo "haha" 
#晚上11點到早上7點之間,每隔一小時重新開機apache 
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart 
 
######使用 "-" 與 "," 結合模式######
#下面的例子表示在每天18 : 00至23 : 00之間每隔30分鐘重新開機apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart 

######使用  "*/n" 與 "," 結合模式######
#在 12 月内, 每天00:00, 00:30, 03:00, 03:30 .... 執行一次 /usr/bin/backup : 
0,30 */3 * 12 * /usr/bin/backup 

######使用   "-" "*/n" 與 "," 結合模式######
#每天07:00, 07:30, 10:00, 10:30 執行一次 /bin/ls : 
0,30 7-12/3 * * * /bin/ls       

參考資料:

https://www.cnblogs.com/moxiaoan/p/5683743.html