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為真正可用的記憶體:

Centos7以上展示結果,available為真正可用的記憶體:
17.檢視檔案系統
/proc
查找程序所在的目錄:ll /proc/10028
19.檢視系統及程序限制
ulimits -a :系統限制
cat /proc/10028/limits :程序限制
18.ssh
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/ ,如圖:
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