1 LINUX COMMAND 1.1 cat 1.2 ls 1.3 echo 1.4 sort 1.5 awk 1.6 df 1.7 du 1.8 fsck 1.9 dumpe2fs 1.10 rpm 1.10.1 RPM校驗 1.10.2 RPM包中文件提取 1.10.3 源碼包與RPM包的區別 ...
- 1 LINUX COMMAND
- 1.1 cat
- 1.2 ls
- 1.3 echo
- 1.4 sort
- 1.5 awk
- 1.6 df
- 1.7 du
- 1.8 fsck
- 1.9 dumpe2fs
- 1.10 rpm
- 1.10.1 RPM校驗
- 1.10.2 RPM包中文件提取
- 1.10.3 源碼包與RPM包的區別
- 1.11 yum
- 1.12 head
- 1.13 tail
- 1.14 chmod
- 1.15 chown
- 1.16 systemctl
- 1.17 chkconfig
- 1.18 mount
- 1.18.1 掛載命令格式
- 1.18.2 掛載光碟
- 1.18.3 卸載光碟
- 1.18.4 掛載U盤
- 1.18.5 NTFS u盤支持
- 1.19 swap
- 1.20 free
- 1.21 Compression 壓縮 command
- 1.21.1 gzip
- 1.21.2 bz2
- 1.21.3 xz
- 1.21.4 zip
- 1.22 tar
- 1.22.1 *.tar.gz
- 1.22.2 *.tar.bz2
- 1.23 locate
- 1.24 find
- 1.24.1 根據文件名查找:
- 1.24.2 根據文件從屬關係查找:
- 1.24.3 根據文件的類型查找:
- 1.24.4 根據文件的大小查找:
- 1.24.5 根據時間戳查找
- 1.24.6 根據許可權來查找:
- 1.24.7 處理動作:
- 1.25 history
- 1.26 vim
- 1.27 useradd
- 1.28 userdel
- 1.29 id
- 1.30 usermod
- 1.31 groupadd
- 1.32 su
- 1.33 chage
- 1.34 passwd
- 1.35 gpasswd
- 1.36 groups
- 1.37 date
- 1.38 hwclock
- 1.39 ln
- 1.40 SElinux
- 1.41 crontab
- 1.42 fdisk
- 2 LINUX THE DOCUMENT
- 2.1 用戶和用戶組管理
- 2.1.1 /etc/passwd:用戶信息文件
- 2.1.2 影子文件:/etc/shadow
- 2.1.3 組信息文件/etc/group
- 2.1.4 組密碼文件/etc/gshadow
- 2.1.5 用戶的家目錄
- 2.2 linux的特殊許可權
- 2.2.1 SUID
- 2.2.2 SGID
- 2.2.3 STICKY
- 2.3 facl
- 2.4 文件系統屬性chattr許可權
- 2.5 sudo許可權
- 2.6 linux下查看幫助命令
- 2.7 linux根目錄結構和文件系統
- 3 SHELL
- 3.1 shell更改
Description:"【中文中括弧】"表示單一的解釋,不在所屬的問題之中,勿需與所在命令比較。
Red coloured words 表示重點,linux不同文件類型以不同顏色區分。本文檔中出現的color與linux系統相對應。
Blue coloured words 為給出的例子。 →:表示換行。
linux the document出現的黑色背景矩形方框為區別給出的例子
color= #FF1493 區分RED標記. 背景color=#778899敘述或解釋。
Typeface color=#FF6347區分標題
本文檔部分內容參考於網友個人博客以及各大搜索網站 禁止分享
1 LINUX COMMAND
[root@pan ~]# root:登錄的用戶 @分隔符 pan主機名 ~當前路徑
\:newline
1.1 cat
cat 由第一行開始顯示文件內容
tac 從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫!
nl 顯示的時候,順道輸出行號!
-A:查詢所有的內容包括隱藏字元
1.2 ls
-F:在每個輸出項後追加文件的類型標識符,具體含義:“*”表示具有可執行許可權的普通文件,“/”表示目錄,“@”表示符號鏈接,“|”表示命令管道FIFO,“=”表示sockets套接字。當文件為普通文件時,不輸出任何標識符;
1.3 echo
#echo [選項][輸出內容]
-e:支持反斜線控制的字元轉換
控制字元 | 作用 |
\\ | 輸出\本身 |
\a | 輸出警告音 |
\b | 退格鍵,也就是向左刪除鍵 |
\c | 取消輸出行末的換行符,和“-n”選項一致 |
\e | ESCAPE鍵 |
\f | 換頁符 |
\n | 換行符 |
\r | 回車鍵 |
\t | 製表符,也就是Tab鍵 |
\v | 垂直製表符 |
\0nm | 按照八進位ASCII碼輸出字元,其中0為數字零,nnn是三位八進位數 |
\xhh | 按照十六進位ASCII碼表輸出字元。其中hh是兩位十六進位數。 |
echo -e "\e[1;31m abcd \e[0m" 輸出顏色
=30m 黑色,=31m 紅色,=32m 綠色,
=33m 黃色,=34m 藍色,=35m 洋紅,
=36m 青色,=37m 白色。
#echo -e ab\bc
1.4 sort
sort將文件/文本的每一行作為一個單位,相互比較,比較原則是從首字元向後,不加參數時依次按ASCII碼值進行比較,最後將他們按升序輸出
-n :依照數值的從小到大排序;
-r :以相反的順序來排序;
-u :忽略相同行使用-u選項或者uniq 文件名
-t <分隔符>:指定排序時所用的欄位分隔字元;
-k 是指定需要排序的欄位(字母按ASCII排序,數字按從小到大。先數字後字母)
[root@mail text]# sort -nrk 3 -t: sort.txt 將CC列數字從大到小順序排列:
eee:40:5.4
eee:60:5.1
ddd:20:4.2
ccc:50:3.3
bbb:10:2.5
aaa:30:1.6
AAA:BB:CC 列
1.5 awk
- awk '{print $1}' 文件名 $1第一列,$2第二列,$NF最後一列.$(NF-1)倒數第二列)。 現在是以文件的空格為分隔符這樣列印
- awk -F ":" '{print $1}' /etc/passwd -F指定分隔符,並列印文件第一列
多列列印 [root@pan ~]# awk -F ":" '{print $2 $3}' /etc/passwd 這樣列印$2 $3之間是沒有分隔符 要加分隔符就是 awk -F ":" '{print $2"分隔符符號"$3}' /etc/passwd $0表示整個文件
1.6 df
文件系統查看命令
-a:顯示所有的文件系統信息信息,包括特殊文件系統,如,/proc,/sysfs
-h:使用習慣單位顯示容量,如KB,MB或GB等。
-T:顯示文件系統類型
-m: 以MB為單位顯示容量。
-k:以KB為單位顯示容量,預設就是以KB為單位顯示容量。
du命令和df命令的區別 df命令是從文件系統考慮的,不光要考慮文件占用的空間,還要統計被命令或程式占用的空間(最常見的就是文件已經刪除,但是程式並沒有釋放空間) du命令是面向文件的,只會計算電腦文件或目錄占用的空間。 |
1.7 du
是通過搜索文件來計算每個文件的大小然後累加,du能看到的文件只是一些當前存在 的,沒有被刪除的。他計算的大小就是當前他認為存在的所有文件大小的累加和
-h : 以K,M,G為單位,提高信息的可讀性。
-s : 統計總占用量,而不列出子目錄和子文件的占用量。
ls -h是目錄下文件名占用大小 du -h 是目錄下所有文件的大小
-k : 以KB(1024bytes)為單位輸出。
-m : 以MB為單位輸出。
-a顯示每個子文件的磁碟占用量。預設只統計子目錄的磁碟占用量。
1.8 fsck
文件系統修複命令
fsck [選項] 分區設備文件名
-a:不顯示用戶提示,自動修複文件系統
-y:自動修複。和-a作用一致,不過有些文件系統只支持-y
1.9 dumpe2fs
顯示磁碟狀態命令
#dumpe2fs 分區設備名
1.10 rpm
rpm是Linux標準基礎(LSB)相容發行版所使用的一種軟體包管理器,用來對軟體包進行低級處理rpm可以查詢、安裝、檢驗、升級和卸載軟體包,它多數用於基於Fedora的系統,比如RHEL和CentOS
只有安裝和升級要加包全名。-ivh: -i:安裝,-v:顯示詳細信息,-h:顯示進度,--nodeps:不檢測依賴性。
-Uvh包全名:RPM包升級.
-q :接軟體包名字 #查詢軟體是否已經安裝 -q(查詢query)
-qa :#查詢所有已經安裝的RPM包。-a(所有all)
-qi :包名字#查詢軟體包詳細信息 -i :顯示軟體包的相關信息
-ql 包名:查詢軟體包安裝位置 -l :顯示套件的文件列表。
-qf +系統文件名。查看一個文件是由哪個包安裝的
-qip 包全名:查詢未安裝軟體包信息,必須在軟體包目錄進行查詢。
-qR :查詢軟體包的依賴性。
-qRp :查詢未安裝軟體包的依賴性必須在Packages目錄查詢。
-e 包名:卸載軟體。
rpm -qf `which 程式名` #返回軟體包的全名 已安裝的軟體包 rpm -qif `which 程式名` #返回軟體包的有關信息 rpm -qlf `which 程式名` #返回軟體包的文件列表 |
1.10.1 RPM校驗
#rpm -V 已安裝的包名
選項:-V 校驗指定RPM包中的文件。(verify)
[root@Tiger ~]#rpm -V httpd
S.5....T. c /etc/httpd/conf/httpd.conf
驗證內容中的8個信息的具體內容如下:
S:文件大小是否改變;
M:文件的類型或文件的許可權(r w x)是否被改變;
5:文件MD5校驗和是否改變(可以看成文件的內容是否改變);
D:設備的主,從設備號是否改變;
L:文件路徑是否改變;
U:文件的屬主(所有者)是否改變;
G:文件的屬組是否改變;
T:文件的修改時間是否改變;
文件類型:
c :配置文件(config file)
d :普通文檔(documentation)
g :"鬼"文件(ghost file),很少見,就是該文件不應該被這個RPM包包含
l :授權文件(license file)
r :描述文件(read me)
1.10.2 RPM包中文件提取
#rpm2cpio 包全名 | \ cpio -idv .文件絕對路徑 反斜杠:換行的作用。 rpm2cpio:將rpm包轉換為cpio格式的命令。
cpio:是一個標準工具,他用於創建軟體檔案文件和從檔案文件中提取文件。
#cpio 選項 < [文件|設備]
選項: -i:copy-in模式,還原
-d:還原時自動新建目錄
-v:顯示還原過程
#rpm -qf /bin/ls 查詢ls命令屬於哪個軟體包
#mv /bin/ls /tmp 造成ls命令誤刪除的假象
#rpm2cpio /mnt/Packages/coreutils-8.4-37.el6.x86_64.rpm | cpio -idv ./bin/ls 提取RPM包中ls命令到當前目錄的/bin/ls下
cp /root/bin/ls /bin 把ls命令複製到/bin目錄,修複文件丟失。
1.10.3 源碼包與RPM包的區別
安裝在指定位置當中,一般是/usr/local/軟體名/。
RPM包安裝的服務可以使用系統服務管理命令(service)來管理,例如RPM包安裝apache的啟動方法是:
/etc/rc.d/init.d/httpd start: 絕對路徑啟動服務。
service httpd start
源代碼保存位置:/usr/local/src/
軟體安裝位置:/usr/local/
如何確定安裝過程報錯:安裝過程停止;並出現error、warning或no的提示。
源碼包安裝過程:
下載源碼包;解壓縮下載的源碼包;進入解壓縮目錄。
CRT中sftp裡面要設置遠程的路徑和本地的路徑: cd 1 進入遠程連接到的Linux的1目錄 lcd \text 本地的c盤text目錄 get abc.c 從遠程目錄得到文件abc.c放入本地目錄text put a11.txt 從Windows上將文件a11.txt傳入linux |
源碼包配置:
./configure軟體配置與檢查
1. 定義需要的功能選擇。
2. 檢測系統環境是否符合安裝需求。
3. 把定義好的功能選項和檢測系統環境的信息都寫入Makefile文件,用於後續的編輯。
./configure --prefix=/usr/local/apache2安裝路徑
詳情參考INSTALL
源碼包的卸載:
不需要卸載命令,直接刪除安裝目錄即可,不會遺留任何垃圾文件。
腳本安裝包:
腳本安裝包並不是獨立的軟體包類型,常見安裝的是源碼包。
是人們把安裝過程寫成了自動安裝的腳本,只要執行腳本,定義簡單的參數,就可以完成安裝。
非常類似於Windows下軟體的安裝方式。
1.11 yum
能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
remove :刪除指定的rpm軟體包; yum -y remove 軟體包名
yum update +包名 :升級。 禁用
yum grouplist:列出所有可用的軟體組列表;
yum groupinstall 軟體組名:安裝指定的軟體組,組名可以由goruplist查詢出來;
yum groupremove:卸載指定軟體組;
配置yum倉庫:
[base]
name=centos
baseurl=file:///mnt/
enabled=1
gpgcheck=0
1.12 head
head 用來顯示檔案的開頭至標準輸出中,預設head命令列印其相應文件的開頭10行
-n:顯示文件的前n行 head -n 5 a.txt 顯示文件的前5行
-c顯示文件前n個位元組 head -c 20 a.txt
head -c -32 log2014.log文件的除了最後n個位元組以外的內容
head -n -6 log2014.log 輸出文件除了最後n行的全部內容
1.13 tail
主要用來從指定點開始將文件寫到標準輸出。很多人喜歡使用tail -f 來監控日誌文件。
-f該參數用於監視文件的增長 tail -f filename 監視filename文件的尾部內容(預設10行,相當於增加參數 -n 10),刷新顯示在屏幕上。退出,按下CTRL+C。
-n從指定行位置讀取指定文件。tail -n 20 filename 顯示filename最後20行。
-c顯示文件最後n個位元組 tail -c 20 a.txt
1.14 chmod
chmod命令用來變更文件或目錄的許可權,文件或目錄許可權的控制分別以讀取、寫入、執行3種一般許可權來區分,另有3種特殊許可權可供運用,設置方式採用文字或數字代號皆可。符號連接的許可權無法變更,如果用戶對符號連接修改許可權,其改變會作用在被連接的原始文件
-f :若該文件許可權無法被更改也不要顯示錯誤訊息
-R :對目前目錄下的所有文件與子目錄進行相同的許可權變更(即以遞迴的方式逐個變更)
r=讀取屬性 值=4 w=寫入屬性 值=2 x=執行屬性 值=1
1.15 chown
改變某個文件或目錄的所有者和所屬的組
Grammar:chown USER:GROUP 對象
chown USER 對象 chown :group 對象
1.16 systemctl
systemctl命令是系統服務管理器指令,它實際上將 service 和 chkconfig 這兩個命令組合到一起
1.17 chkconfig
1.服務概述: 在linux操作系統下,經常需要創建一些服務,這些服務被做成shell腳本,這些服務需要在系統啟動的時候自動啟動,關閉的時候自動關閉。 將需要自動啟動的腳本/etc/rc.d/init.d目錄下,然後用命令chkconfig --add filename將自動註冊開機啟動和關機關閉。實質就是在rc0.d-rc6.d目錄下生成一些文件連接,這些鏈接連接到/etc/rc.d /init.d目錄下指定文件的shell腳本。 |
--list :列出所有系統服務
--add httpd:增加httpd服務。
--del httpd:刪除httpd服務。
--list mysqld:列出mysqld服務設置情況
--level 35 mysqld on:設定mysqld在等級3和5為開機運行服務,--level 35表示操作只在等級3和5執行,on表示啟動,off表示關閉。
chkconfig mysqld on:設定mysqld在各等級為on,“各等級”包括2、3、4、5等級。
chkconfig 設置是當前不生效,linux重啟後才生效. service 設置是即時生效,linux關機重啟後設置失效 |
1.18 mount
查詢與自動掛載(Auto Mount)
#mount [-l]
查詢系統中已經掛載的設備,-l會顯示捲標名稱
#mount -a
依據配置文件/etc/fstab的內容,自動掛載
1.18.1 掛載命令格式
#mount [-t 文件系統] [-L捲標名] [-o特殊選項] 設備文件名 掛載點
-t 文件系統:加入文件系統類型來指定掛載的類型,可以ext3、ext4、iso9660等文件系統
-L 捲標名:掛載指定捲標的分區,而不是安裝設備文件名掛載
-o 特殊選項:可以指定掛載的額外選項。
#mount -o remount,noexec /home這裡的/home是df可以查看到的分區重新掛載/home分區,並使用noexec許可權
#cd /home
#vi hello.sh
#!/bin/bash echo "i love you" |
#chmod 755
#./hello.sh 會顯示沒有許可權執行
#mount -o remount,exec /home 記得改回來,要不然會影響系統啟動的。
1.18.2 掛載光碟
#mkdir /mnt/cdrom 建立掛載點
#mount -t iso9660 /dev/cdrom /mnt/cdrom 掛載光碟
#mount /dev/sr0 /mnt/cdrom
1.18.3 卸載光碟
#umount設備文件名或掛載點
#umount /mnt/cdrom
1.18.4 掛載U盤
fat32格式:
#fdisk -l 查看U盤設備文件名 #mount -t vfat /dev/sdb1 /mnt/usb/ 註意:fat16分區識別為fat,fat32分區識別為vft。linux預設是不支持NTFS文件系統的 |
1.18.5 NTFS u盤支持
下載NTFS-3G插件https://www.tuxera.com/community/open-source-ntfs-3g/
解壓 tar -zxvf filename
安裝 ./configure && make && make install
fdisk -l查看linux的U盤分區:sdc1
#mount -t ntfs-3g /dev/sdc1 /mnt/usb/ #mkfs -t ext4 /dev/sdb1/ 格式化分區,擴展分區不可格式
#mkdir /disk1 建立掛載點
#mount /dev/sdb1 /disk1 掛載
1.19 swap
新增swap空間:free查看swap大小
新增一個分區,改分區號82,保存退出
格式化:mkswap /dev/sdb6
加入swap分區:swapon /dev/sdb6
取消swap分區:swapoff /dev/sdb6 但是每次開機都要手動掛載一遍,可以寫入fatab開機自動掛載
vi /etc/fstab
/dev/sdb6 swap swap defaults 0 0
1.20 free
顯示當前系統未使用的和已使用的記憶體數目,還可以顯示被內核使用的記憶體緩衝區。
-b :以Byte為單位顯示記憶體使用情況;
-k :以KB為單位顯示記憶體使用情況;
-m :以MB為單位顯示記憶體使用情況;
total:去掉為硬體和操作系統保留的記憶體後剩餘的記憶體總量。許多人奇怪自己的電腦安裝了一共8G的記憶體,但是顯示總共只有七點幾G的,現在應該沒什麼疑惑了把,不管Linux還是Windows都會有部分記憶體是保留給硬體和操作系統的!
userd:當前已使用的記憶體總量。
free:空閑的或可以使用的記憶體總量
shared:共用記憶體大小,主要用於進程間通信
buff(buffers):緩衝,主要用於塊設備數據緩衝(磁碟緩存大小),例如記錄文件系統的metadata(目錄、許可權等等信息)。是指在寫入數據時,先把分散的寫入操作保存到記憶體當中,當達到一定程度再集中寫入硬碟,減小了磁碟碎片和硬碟反覆尋道,加速了數據的寫入過程。
cache:緩存,主要用於文件內容緩衝,是指把讀取出來的數據保存在記憶體當中,當再次讀取時,不用讀取硬碟而直接從記憶體當中讀取,加速了數據的讀取過程。
available:可以使用的記憶體總量.
1.21 Compression 壓縮 command
1.21.1 gzip
gzip filename壓縮 *.gz :"尾碼名"
gzip -d filename.gz gunzip filename.gz 解壓縮
不解壓查看:zcat filename.gz
1.21.2 bz2
bzip2 filename壓縮 *.bzip2:"尾碼名"
bzip2 -k filename 保存源文件壓縮
bzip2 -d filename.bz2 bunzip2 filename.bz2解壓縮
不解壓查看:bcat filename.bz2
1.21.3 xz
xz filename壓縮 .xz:"尾碼名"
xz -d filename.xz 解壓縮
unxz -k filename.xz 保存源文件解壓
1.21.4 zip
zip預設保存源文件,可以壓縮目錄
解壓:unzip FileName.zip
壓縮:zip FileName.zip DirName
-r :遞歸處理,將指定目錄下的所有文件和子目錄一併處理;
1.22 tar
-c: 建立壓縮檔案
-x:解壓
-t:查看內容
-r:向壓縮歸檔文件末尾追加文件
-u:更新原壓縮包中的文件
這五個是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用但只能用其中一個。下麵的參數是根據需要在壓縮或解壓檔案時可選的
tar cf file.tar files 將一個或多個文件、目錄打包到tar包。
tar rf file.tar file 將文件file添加到tar包中。
tar uf file.tar file 將文件file更新tar包中相應的文件。
tar tf file.tar 查看tar內容。
tar xf file.tar 解壓tar包。
-z:有gzip屬性,即需要用 gzip 壓縮
-j:有bz2屬性,即需要用 bzip2 壓縮
-v:顯示處理過程
-C:指定解壓輸出目錄 tar zxvf test.tar.gz -C test
-f: 使用檔案名字,切記,這個參數是最後一個參數,後面只能接檔案名
-Z:有compress屬性的
-O:將文件解開到標準輸出
格式:tar Zcf file.tar.Z files 將一個或多個文件、目錄壓縮到file.tar.Z中。需要安裝了ncompress軟體包才行。
解壓.tar.Z文件。格式:tar Zxf file.tar.Z
歸檔並壓縮:使用時間格式打包數據:
tar zcf etc-$(date +%F).tar.gz /etc tar zcf etc-`date +%F`.tar.gz /etc
1.22.1 *.tar.gz
歸檔並調用gzip壓縮 tar -zcf 新文件名.tar.gz /etc/passwd /var/log/messagages
調用gzip解壓縮並展開歸檔 tar -zxvf filename.tar.gz
1.22.2 *.tar.bz2
歸檔並調用bzip2壓縮 tar -jcf 新文件名.tar.bz2 /etc/passwd /var/log/messages
調用bzip解壓縮並展開歸檔 tar -jxf filename.tar.bz2
1.23 locate
其方法是先建立一個包括系統內所有檔案名稱及路徑的資料庫,之後當尋找時就只需查詢這個資料庫,而不必實際深入檔案系統之中了。
所以你要知道:
1. locate的速度比find快,因為它並不是真的查找文件,而是查資料庫
2. locate的查找並不是實時的,而是以資料庫的更新為準,一般是系統自己維護
3. 升級資料庫命令:locate -- u
CentOS系統找不到locate命令,原因是系統中沒有安裝 mlocate 這個包,然後更新資料庫:updatedb 。
-c :只顯示找到條目的號碼
-b :匹配唯一的路徑名稱的基本文件名
-r :基於基本正則表達式進行匹配操作
1.24 find
實時查找工具,通過遍歷指定起始路徑下文件系統層級結構完成文件查找:
1.24.1 根據文件名查找:
-name "pattern"
-iname "pattern" 支持glob風格的通配符: *,?,[],[^] i忽略大小寫
-regex pattern :基於正則表達式查找文件,匹配整個路徑而非其名;
1.24.2 根據文件從屬關係查找:
-user USERNAME:查找屬主指定用戶的所有文件;
-goup GROUPNAME:查找屬組指定組的所有文件;
-uid UID:查找屬主指定的UID的所有文件;
-gid GID:查找屬組指定的GID的所有文件;
-nouser :查找沒有屬主的文件;
-nogroup :查找沒有屬組的文件;
1.24.3 根據文件的類型查找:
-type TYPE :按name查找
f:普通文件 d:目錄 l:符號鏈接文件 b:塊設備文件 c:字元設備文件
p:管道文件 s:套接字文件 【 ./可執行文件 】
組合測試: 與:-a,預設組合邏輯; 或:-o; 非:-not,!
!A -a !B =!(A -o B) !A -o !B =!(A -a B) 例:查找tmp目錄下不包含“fstab”的字元文件 find /tmp -not -iname "*fstab*"
1.24.4 根據文件的大小查找:
-size [+|-]#UNIT 常用單位:K,M,G
例:size 10K filename,大小表示 (#-1,#] 9K<filename<10K
size -10K filename,大小表示[0-UNIT-1]
size +10K filename,大小表示(#,∞)
1.24.5 根據時間戳查找
以“天”為單位:
# [#,#-1]距現在為止過去幾天前訪問過文件。
-#:(0,#) 幾天內訪問過文件。
+#(oo, #-1] 幾天前至-oo訪問過的所有文件
-atime
顯示的是文件中的數據最後被訪問的時間,比如系統的進程直接使用或通過一些命令和腳本間接使用。
-mtime
顯示的是文件內容被修改的最後時間,比如用vi編輯就會發生改變。
-ctime
顯示的是文件的許可權、擁有者、所屬的組、鏈接數發生改變時的時間。當然當內容改變時也會隨之改變。
以“分鐘”為單位:
-amin -mmin -cmin 同上
1.24.6 根據許可權來查找:
-perm [/|-]mode 例:find ./ -perm 644
mode:精確許可權匹配;
/mode :任何一類用戶(u,g,o)的許可權中的任何一位(r,w,x)符合條件即滿足 9位許可權之間存在“或”關係;
-mode :每一類用戶(u,g,o)的許可權中的每一位(r,w,x)同時符合條件即滿足 9位許可權之間存在"與"關係;
例: 440屬於/666有讀的許可權 find./ -perm /666 符合這一查找
1.24.7 處理動作:
-print :輸出至標準輸出:預設的動作;
-ls :類似於對查找到的文件執行“ls -l”命令,輸出文件的詳細信息
-delete :刪除找到的文件
-fls :/PATH/TO/SOMEFILE:把查找到的所有文件的長格式信息保存至指定文件中;
-ok COMMAND {} \; :對查找到的每個文件執行由COMMAND表示的命令;每次操作都由用戶進行確認;
-exec COMMAND {} \; :對查找到的每個文件執行由COMMAND表示的命令;
例:find ./ -perm /002 -exec mv {} {}.txt \;
註意: find傳遞查找到的文件路徑至後面的命令時,是先查找出所有符合條件的文件路徑,並一次性傳遞後面的命令;但是有些命令不能接受過長的參數,此時執行命令會失敗;另一種方式可規避此問題:find | xargs command
例:
1、 查找/var目錄下屬主為root,且屬組為mail的所有文件或目錄;
find /var -user root -a -group mail -ls
2、 查找/usr目錄下不屬於root,bin或hadoop的所有文件或目錄;用兩種方法;
find /usr -not -user root -a -not -user bin -a -not -user hadoop find /usr -not \( -user root -o -user bin -o -user hadoop \) -ls |
3、 查找/etc目錄下最近一周內其內容修改過,且屬主不是root也不是hadoop用戶的文件或目錄;
find /etc -mtime -7 -a -not -user root -a -not -user hadoop
find /etc -mtime -7 -a -not \(-user root -o -user hadoop\) -ls
4、查找當前系統上沒有屬主或屬組,且最近一周內曾今被訪問過的文件或目錄;
find ./ -nouser -o -nogroup -ls 如果有文件屬於可查找項,但是加ls選項最後會無法輸出顯示 加了-o(或條件)和ls後只會對後一半生效。
需要→ find ./ \( -nouser -o -nogroup\) -atime -7 -ls |
5、 查找/etc目錄下大於1M且類型為普通文件的所有文件;
find /etc -size +1M -ls
find /etc -size +1M -type f -exec ls -lh {} \;
6、 查找/etc目錄下所有用戶都沒有寫許可權的文件;
find /etc -not -perm /222 -type f -ls 至少有一個用戶 有 |
7、 查找/etc目錄至少有一類用戶沒有執行許可權的文件;
find /etc -not -perm -type f -111
8、 查找/etc/init.d目錄下,所有用戶都有執行許可權,且其他用戶有寫許可權的所有文件;
find /etc -perm -111 -a -perm -002 -ls find /etc -perm -113 -ls -type f |
1.25 history
#history [選項][歷史命令保存文件]
-c:清空歷史命令
-w:把緩存中的歷史命令寫入歷史命令保存文件 ~/.bash_history
歷史命令預設保存1000條,可以在環境變數配置文件/etc/profile中修改 |
歷史命令的調用: 1. 使用上、下箭頭調用以前的歷史命令
2. 使用"!n"重覆執行第n條歷史命令
3. 使用"!!"重覆執行上一條命令
4. 使用"!字元串"重覆執行最後一條以該字元串開頭的命令。
1.26 vim
:.,$y 複製當前行到末尾行
:! 調用系統命令,可臨時執行
使vim設置永久生效:vim /etc/vimrc 把設置寫到這個文件的最後,對所有賬戶生效
set nu 顯示行號 set nonu 取消行號
set ic 不區分大小寫 set noic 取消不區分大小寫
set ts=4 設置tab鍵長度
set sw=4 設置自動縮進的tab鍵長度
vim /root/.vimrc 也可以把設置寫到此文件,只對root生效
vim字元替換:
:%s/this/that 每一行的第一個this被替換成that :%s/this/that/g 將文本中所有的this替換成that %從每一行的開頭到結尾 s表示替換 :1,5 s/old/new/g #替換第一行到第5行中所有匹配的內容 |
字元操作:u撤銷上一步
i當前插入,I行首插入。
a當前字元插入(游標後一位插入),A行尾插入。
o表示:本行回車到下一行插入,O上一行插入。
x刪除游標所在字元,X向前刪除一個字元。
dd刪除游標所在的行,dG刪除游標所在開始行到文件尾的所有字元。
J合併兩行。
行操作:home 鍵或^鍵行首,$或end行尾
dd刪除一行Ndd(刪除本行與下一行)。
yy複製一行,Nyy複製n行,p將複製行粘貼,p向游標下一行粘。(N表示數字)
詞操作:dw刪除一個詞,y+$複製至行尾。y+^複製至行首。yw複製一個詞。:.,$y 複製當前行到末尾
v模式:編程的時候需要進行多行註釋: (刪除是要將游標移到這個詞的行首,如果游標不在行首則刪除游標之後的字母。) 塊操作:D或d+$刪除至行尾 d+^刪除至行首 1、註釋:ctrl+v進入列編輯模式 2、向下或向上移動游標 (ctrl L 向下全部選中) 3、把需要註釋的行開頭的開頭標記起來 4、然後按大寫的I 5、再插入註釋符,比如“#” 6、再按Esc,就會全部註釋了 刪除多行註釋:按ctrl+v進入列編輯模式;向下或向上移動游標;選中註釋部 分然後按d,就會刪除註釋符號。 |
vim編輯器: :wq 可以保存外 :w +路徑+文件名直接保存在某個位置和重命名:w 路徑/文件名
ZZ 保存退出 :x 保存退出 :!命令:!ifconfig
vi的行定位功能:
ctrl+f 向前捲動一個屏幕
ctrl+b 向後捲動一個屏幕
G 到文件最後一行行首
:$ 到文件最後一行行尾
mG 到指定行,m為目標行數 或者mgg
set nu 顯示行號
/內容 查找指定內容
n 查找下一個
N 回到前一個
? 尋找上一個
/^字元串 查找以字元串開始的行 /字元串$ 查找以字元串結尾的行 /a.b 查找字元串a任意字元b vim替換 r 替換當前游標字元 :r 文件名 在游標當前位置載入另一個文件 |
1.27 useradd
useradd命令用來建立用戶帳號和創建用戶的起始目錄,使用許可權是終極用戶.
-u :uid指定用戶ID
-d:指定用戶登入時的啟始目錄。
-g:指定用戶所屬的群組
-G:指定用戶所屬的附加群組。
-s:指定用戶登入後所使用的shell。
tom 用戶的登陸 shell 為非互動式 shell #useradd –s /sbin/nologin tom
-e :指定賬號的有效期限,預設表示永久有效
useradd user1——創建用戶user1;
useradd –e 12/30/2009 user2——創建user2,指定有效期2009-12-30到期
-c:用戶說明,手工指定用戶的說明,添加說明有Spacebar時要加" "。
用戶預設值文件:/etc/defalut/useradd 1. GROUP=100 :用戶預設組ID (公有模式) 2. HOME=/home :用戶家目錄 3. INACTIVE=-1 :密碼過期寬限天數(shadow文件7欄位) 4. EXPIRE=no value :密碼失效時間(8欄位) 5. SHELL=/bin/bash :預設的shell 6. SKEL=/etc/skel :模板目錄 7. CREATE_MAIL_SPOOL=yes :是否建立郵箱 /etc/login.defs PASS_MAX_DAYS 999 :密碼有效期(5欄位) PASS_MIN_DAYS 0 :密碼修改間隔(4欄位) PASS_MIN_LEN 5 :密碼最小5位(PAM) PASS_WARN_AGE 7 :密碼到期警告(6) UID_MIN 500 :最小和最大UID範圍 GID_MIX 60000 ENCRYPT_METHOD SHA512 :加密模式 |
1.28 userdel
刪除用戶userdel [-r] 用戶名
-r:刪除用戶的同時刪除用戶家目錄
1.29 id
查看用戶id:#id 用戶名
查詢用戶的UID,初始組ID,附加群組ID
1.30 usermod
usermod命令用於修改用戶的基本信息。usermod命令不允許你改變正線上上的使用者帳號名稱。當usermod命令用來改變user id,必須確認這名user沒在電腦上執行任何程式.
-g <群組> 修改用戶所屬的原始群組。
#usermod -g root username
-G <群組> 修改戶所屬的附加群組
-a -G 無限增加到附加組,可擁有多個附加組. 將a1添加附加組user3 #usermod -a -G user3 a1
-c:修改用戶的說明usermod -c "test user" username
當某一用戶擁有多個附加組之後,使用usemod -G會修改附加組,則多個組消失掉變成唯一當前修改的附加組. |
1、將 newuser2 添加到附加組 staff #usermod -G staff newuser2
-l <帳號名稱> 修改用戶帳號名稱。
2、修改 newuser 的用戶名為 newuser1 #usermod -l newuser1 newuser
-L 鎖定用戶密碼,使密碼無效。
-U 解除密碼鎖定。
3、鎖定賬號 newuser1 #usermod -L newuser1
4、解除對 newuser1 的鎖定 #usermod -U newuser1
-d 改變用戶家目錄,常與-m結合使用
-m 將主目錄的內容移動到新目錄
usermod -m -d /home/user2 -uid username 若使用報錯使用以下命令:
cat /dev/null > /var/run/utmp
清空此文件。utmp是一個文件,除了utmp程式你不能編輯這個文件,刪掉他的話,當前登陸信息都會丟失。它就好比系統開啟後它會把系統成員的信息迅速的記錄下來,過一段時間它就不再記錄,確認系統的用戶配置就是這樣了,這個文件在每次機器reboot起來後都會重新創建。 |
1.31 groupadd
-gGID: 修改組ID
-n新組名: 修改組名
1.32 su
su: [選項] 用戶名
-:選項只使用"-"代表連帶用戶的環境變數一起切換。
可使用env命令查看 |
-c:僅執行一次命令,而不切換用戶身份
#su - root -c "useradd user3"不切換成root,但是執行useradd命令添加user1用戶。
1.33 chage
修改用戶密碼狀態chage
#chage [選項] 用戶名
-l:列出用戶的詳細密碼狀態
-d 日期:修改密碼最後一次更改日期(shadow3欄位)
-m 天數:兩次密碼修改間隔(4欄位)
-M 天數:密碼有效期(5欄位)
-W 天數:密碼過期前警告天數(7欄位)
-I 天數:密碼過後寬限天數(7欄位)
-E 日期:賬號失效時間(8欄位)
#chage -d 0 username這個命令其實是把密碼修改日期歸0了(shadow第3欄位),這樣用戶只要一登錄就要修改密碼。第三欄位是指密碼最後一次修改時間的日期。1970年1月1號到現在修改密碼的時間戳。如果第3欄位改為0,系統會認為用戶沒有修改過操作密碼,那麼當此用戶一旦登錄系統就會提示要修改密碼,才可正常使用。
1.34 passwd
-S:查詢用戶密碼的密碼狀態,僅root用戶可用。
-l:暫時鎖定用戶。僅root用戶可用。
-u:解鎖用戶。僅root用戶可用。
--stdin:可以通過管道符輸出的數據作為用戶的密碼。 # echo "123" | passwd --stdin user
1.35 gpasswd
-d :從組刪除用戶 gpasswd -d username groupadd
-a :添加用戶到組(附加組),同時保留以前的組