linux筆記

来源:https://www.cnblogs.com/xmilt/archive/2018/08/31/9564175.html
-Advertisement-
Play Games

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包的區別 ...


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

  1. awk '{print $1}' 文件名  $1第一列,$2第二列,$NF最後一列.$(NF-1)倒數第二列)。 現在是以文件的空格為分隔符這樣列印
  2. 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/
如何確定安裝過程報錯:安裝過程停止;並出現errorwarningno的提示。
源碼包安裝過程:
下載源碼包;解壓縮下載的源碼包;進入解壓縮目錄。

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 :添加用戶到組(附加組),同時保留以前的組


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、安裝gcc (編譯時需要) [root@localhost~]# yum -y install gcc gcc-c++ 2、安裝libevent ,FastDFS依賴libevent庫; [root@localhost~]# yum -y install libevent 3、安裝libfast ...
  • 學51單片機 或者arm時通常都會對看門狗進行處理,那麼看門狗到底是什麼東西呢,它是怎麼運行的呢? 看門狗晶元和51晶元的一個I/O引腳相連,每隔一段時間cpu都會通過一段程式給I/O引腳發送一個高電平,如果程式運行出問題了,那麼程式便不能夠給看門狗發送高電平了,那麼看門狗就會和複位引腳相連產生一個 ...
  • 1 安裝 sudo apt-get install samba 2 配置 打開Samba配置文件: sudo gedit /etc/samba/smb.conf 在其最後添加: [share] path = /home/用戶名/download valid users = share availab... ...
  • 使用的是MFRC522射頻模塊,把磁卡放入感應區後,可以執行三種操作: 本來想著回學校了能把洗浴卡的金額給改掉,實現帝皇般的尊貴洗浴享受(不花錢…) 結果今天 一學期一換,學校真是勤…估計扇區的密碼肯定不是初始密碼了。 難度並不大,上代碼先: 主函數↓ RC522驅動頭文件↓ ...
  • 看到Keil MDK又出新版咯,Keil MDK是基於Arm的微控制器最全面的軟體開發解決方案,包括創建,構建和調試嵌入式應用程式所需的所有組件。MDK v5.25通過其集成的功率測量功能引入了對ULINK plus的支持。 ...
  • 使用root用戶,visudo命令(實際是編輯/etc/sudoers文件),用法和vim一樣,末行模式:wq退出,如還有提示,使用大寫"Q"保存退出,小寫"e"繼續編輯,小寫"x"不保存退出。 預設5分鐘後剛纔輸入的sodo密碼過期,下次sudo需要重新輸入密碼,如果覺得在sudo的時候輸入密碼麻 ...
  • 1、打開用戶Vim配置文件:~/.vimrc vim ~/.vimrc 2、輸入以下配置: set tabstop=4 inoremap " ""<ESC>i inoremap ( ()<ESC>i inoremap { {<CR>}<ESC>O<TAB> 說明: 1)Vim的TAB預設是8個空格, ...
  • 安裝ab測試工具 ab工具幫助 ab是Apache超文本傳輸協議(HTTP)的性能測試工具。其設計意圖是描繪當前所安裝的Apache的執行性能,主要是顯示你安裝的Apache每秒可以處理多少個請求。 使用舉例: ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...
添加用戶到某一個組可以使用 usermod -G groupB userA 這個命令可以添加一個用戶到指定的組,但是以前添加的組就會清空掉. 所以想要添加一個用戶到一個組,同時保留以前添加的組時,請使用gpasswd這個命令來添加操作用戶