find
根據時間戳:
以“天”為單位;
-atime [+|-]#,
#: [#,#+1) 2 那就是大于等于二天小于三天
+#: [#+1,∞] +4 大于等于五天及五天以上
-#: [0,#) -3 0至三天以內的不包含3天 #find /etc/ -atime -1 (passwd magedu)
-mtime
-ctime
以“分鐘”為單位:
-amin #find /etc/ -amin -1
-mmin
-cmin
-perm
mode:精確權限匹配 # find -perm 755
+mode[/mode] 任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系,+ 從centos7開始淘汰
# find -perm /444 # find -perm +111
-mode 每一類對象都必須同時擁有指定權限,與關系0 表示不關注 # find -perm -777
#find -perm /444 任何一位有4 就可以篩選出 (還可以表示為+444)
#fing -perm /044 組和其他人4有就可以篩選出(還可以表示為+044)
#find -perm /400 只要user上有4就可以篩選出(還可以表示為+400)
#find -perm -200 user上必須有2
#find -perm -210 user上必須有2,組上必須有1
#find -perm -666 每位權限上必須有6,但是不包括766
-print 默認的處理動作,顯示至屏幕 # find -perm -777 -print只顯示文件路徑
-delete 直接刪除所查找到的文件,不詢問。 # find -perm /111 -delete(刪除滿足條件的文件)
-ls 長列出所查找到的文件 ,顯示權限等 # find -perm /777 -ls
-fls file 將查找到的文件長列出導入到指定文件。
> file
#find /etc/ -regex “..conf$” -fls /app/find.txt不包含錯誤信息
#less /app/find.txt
也可以如下:
#find /etc/ -regex “..conf$” >/app/find1.txt
#vim /app/find1.txt
#find /etc/ -regex “..conf$” >find1.txt 2>&1 可以導出錯誤結果
-ok command {} \; 對查找到的文件當做下一命令的參數去執行(交互式)
#find /etc/ -regex “..conf$” -ok cp -a {} /app/{}.bak \;
cp一個文件 -a 表示文件復制過程權限,鏈接都不改變 {}代表原文件就是前面搜索到的文件 {}.bak代表目的文件
#find /etc/ -regex “..conf$” -ok cp -a {} /app/{}.bak \;-maxdepth 1表示一級目錄下的文件
#find /etc/ -maxdepth 1 -regex “..conf$” -ok rm -rf {} \; 刪除命令
-exec command \; 對查找到的文件當做下一命令的參數去執行(非交互式)
#find /etc/ -maxdepth 1 -regex “..conf$” -exec cp -a {} /app/ \; -maxdepth 1表示一級目錄下的文件 跟ok
一樣但是少了詢問
# find /etc -regex “..conf$” -exec ls {} \;
find -name “.conf” -exec cp {} {}.orig \;
find /tmp -ctime +3 -user joe -ok rm {} \;
find ~ -perm -002 -exec chmod o-w {} \;
find /data –type f -perm 644 -name “.sh” –exec chmod 755 {} \;
find /home –type d -ls
{}:用于引用查找到的文件名稱自身
xargs:
touch a{1..1000000} 當創建很多文件是rm就會刪除不了這時用 xargs來參數傳遞
echo {1..30000000} | xargs touch
find |xargs rm
由于很多命令不支持管道|來傳遞參數,而日常工作中有這個必要,所以就有了xargs
注意:文件名或者是其他意義的名詞內含有空格符的情況,有些命令不能接受過多參數,
命令執行可能會失敗,xargs可以解決
如:
find /sbin -perm +700|xargs ls -l
find 和 xargs 格式:find| xargs ccommand
練習:
1、查找/var目錄下屬主為root,且屬組為mail的所有文件
find /var -user root -a -group mail -ls
2、查找/var目錄下不屬于root、lp、gdm的所有文件
find /var -not \( -user root -o -user lp -o -user gdm \) -ls
3、查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件
find /var/ -mtime -7 -not -user root -not -user postfix -ls
4、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件
find / -nouser -o -nogroup -a -atime -7 -ls
5、查找/etc目錄下大于1M且類型為普通文件的所有文件
find /etc/ -size +1M -a -type f -ls
6、查找/etc目錄下所有用戶都沒有寫權限的文件
find /etc ! -perm /222 -ls
7、查找/etc目錄下至少有一類用戶沒有執行權限的文件
find /etc ! -perm -111 -ls
gnome 搜索工具 圖形化的搜索工具
壓縮和解壓:
compress
.Z #compress abc(原有文件沒有生產新文件 abc.z)
-d 解壓縮 #compress -d abc.Z
uncompress #uncompress abc.Z
zcat X.Z > X 解壓并導入新文件
-c 將結果打印到屏幕上,配合重定向,不會覆蓋原文件,但權限會變。 #compress -c abc (看到的全是亂碼其實是
壓縮文件,并將壓縮文件的內容打印出來)
#compress -c abc > abc.Z 原本的文件還在并生產壓縮文件 #compress -dc abc.Z > abc
s
-f 默認不對硬鏈接數為2及以上的文件壓縮,加上f,強制壓縮指定文件,而其他同inode的文件硬鏈接數減1.
-v 顯示詳細過程。 #compress -v abc
演示過程: #cp /var/log/messages . #ls #ls -lh查看詳細信息 #cp messages messages1 #cat messages1 >> messages (盡量讓文件大點多導入幾次)
# cp messages abc 拷貝 #compress abc壓縮 (原有文件沒有生產新文件 abc.z)
#compress -dc abc.Z > abc
rm -rf abc
ln messages abc (創建硬鏈接) 當兩個文件是鏈接是 # compress abc沒用 但是 # compress -f abc就可以壓縮
messages不變鏈接數減一
> 壓縮過程權限會改變因為相當于又重定向了 , 直接壓縮文件不導入權限并不改變
原文件會丟失
gzip
.gz #gzip messages 生成messages.gz 原文件會丟失
-d 解壓縮 # gzip -d messages.gz
gunzip
zcat X.gz > X
-c 將結果打印到屏幕上,配合重定向,不會覆蓋原文件,但權限會變。# gzip -c messages >messages.gz
# gzip -c messages #gzip -dc messages.gz> messages
-f 如果文件是鏈接文件,默認不對硬鏈接數為2及以上的文件壓縮,加上f,強制壓縮指定文件,而其他同inode的文件硬鏈接數減1.
-v 顯示詳細過程。
-# 數字越大,壓縮比越高,速度越慢,文件越小。
-1 等于 –fast
-2,3,4,5,6(default),7,8
-9 等于 –best
可tab補齊
bzip2
.bz2
-d 解壓縮
bunzip
bzcat X.bz2 > X
-k 保留原文件
-c 將結果打印到屏幕上,配合重定向,不會覆蓋原文件,但權限會變。
-f 默認不對硬鏈接數為2及以上的文件壓縮,加上f,強制壓縮指定文件,而其他同inode的文件硬鏈接數減1.
-v 顯示詳細過程。
-# 數字越大,壓縮比越高,速度越慢,文件越小。
-1 等于 –fast
-2,3,4,5,6,7,8
-9 等于 –best (default)
xz
.xz
-d 解壓縮
xzcat
-k 保留原文件
-f 默認不對硬鏈接數為2及以上的文件壓縮,加上f,強制壓縮指定文件,而其他同inode的文件硬鏈接數減1.
-v 顯示詳細過程。
-# 數字越大,壓縮比越高,速度越慢,文件越小。
-0 等于 –fast
-1 -2,3,4,5,6(default),7,8
-9 等于 –best
zip
.zip
unzip
|zip 將生成的文件名 –
可以將管道前的輸出結果轉為文件并壓縮。通過此方式壓縮的文件只能使用“unzip -p 壓縮包 > 新文件 ”來解壓縮
unzip -p 預覽解壓縮后的內容到屏幕,可以配置重定向將結果保存到指定文件,權限會發生變化。
zip -r 新文件名.zip 被壓縮打包的工具(可以多個文件)
tar
-cf 創建包名字 原文件(可以指定多個)
-tf 包名字 顯示包中的文件名
-tvf 詳細顯示包中的文件名
-rf 包名字 新文件名(可以指定多個)
–delete -f 包名字 被刪除的文件名(可以指定多個)
-xf 包名字 解出所有的文件到當前目錄
-xf 包名字 文件名 解所指定的文件到當前目錄
-C 解包到指定目錄
-v 顯示過程
-Jcf 創建包的名字(.tar.xz) 原文件(可以指定多個) 打包并用xz壓縮
-jcf 創建包的名字(.tar.bz2) 原文件(可以指定多個) 打包并用bzip壓縮
-zcf 創建包的名字(.tar.gz) 原文件(可以指定多個) 打包并用gzip壓縮
-T 指定個列表,包含需要被打包的文件,以換行符為間隔
-X 指定個排除列表,以換行符為間隔
分割:
分割大的tar文件為多份小文件:
split –b Size –d tar-file-name prefix-name 將tar包分隔為多個文件
splid -b 1M -d messades.tgz messades-parts -b文件劃分大小, -d 文件名
splid -b 5k -d test.tar.gz newtest 分成五個小文件
cat 被分隔出的多個文件名 > 單個文件名
cat newtest.tar.gz0 > test.tar.gz2
cpio復制
ls * |cpio -o > 文件名.cpio 打包。 #ls |cpio -ov > new.cpio
ls group gshadow passwd shadow |cpio -o >aaa
cpio -id < 文件名.cpio 解開被cpio打包的文件 #cpio -id <new.cpio 查看new.cpio的文件
gzip 文件名.cpio 生成文件名為文件名.cpio.gz
/boot/initramfs-xxxx.img
Centos6: cpio.gz文件:
#zcat initramfs-xxxx.img |cpio -id
#zcat aaa.cpio.gz|cpio -id 解壓被cpio打包的文件
Centos7: cpio文件 :
#cpio -id < initramfs-xxxx.img
-tv < 文件名.cpio 預覽cpio打包的文件。
將etc目錄備份:
#find ./etc -print | cpio -ov >etc.cpio
內容預覽:
#cpio -tv < etc.cpio
要解包文件:
#cpio -idv < etc.cpio
xfs
ext4
rescue
sda1 /boot /mnt/sysimage/boot
sda2 / /mnt/sysimage
sda3 swap
sda4 extend
sda5 /app /mnt/sysimage/
/mnt/sysimage/root -> /mnt/sysimage/lib64
ldd +絕對路徑 查看動態庫
/lib64/libc.so.6
chroot /mnt/sysimage
cd ../../../
dns chroot > /var/name/chroot/var/named
A (A)
a.so (A)
b.so (A)
c.so (B) 如果想要安裝A 要檢測B有沒有,沒有就不安裝,A依賴于B B又依賴于C C又依賴于A 循環
A -> B -> C -> A
debian deb dpkg 包管理器會檢測當要安裝包時會自動檢測所需要的所有包,并一起安裝
ubuntu deb apt-get包的管理器
redhat redhat package manager = rpm 紅帽子的包管理器
RPM package manager RPM對應包的批量管理 YUM
GNU Gnu is not unix
YUM DNF fedora
httpd-xxxx.tar.gz包含: xxx.c源代碼 …so readme.txt = > httpd-xxxx.rpm 變成
httpd.deb
ftp.deb
bind.deb
練習:統計光盤中Packages下,各種架構的rpm包的數量。
ls *.rpm |rev |cut -d. -f2|sort |rev |uniq -c rev 對于篩選出的 反著輸出
Packages]# ls | egrep -o “[^\.]+\.rpm$” |cut -d. -f1 |sort |uniq -c
A -> B -> C -> D -> A
testapp.rpm
testapp.so文件
/usr/lib/testapp/testapp.so
/usr/bin/testapp 執行文件存放地方
#cd /run/media/root/CentOS\ 7\ x86_64/ 包的存放路徑
#cd Packages/
解決包的依賴管理工具:
yum: rpm包管理器的前端工具
apt-get:ded包管理器前端工具
zypper: suse上的rpm 前端工具
dnf:Fedora 18+rpm 包管理器前端管理工具
查看二進制程序所依賴的庫文件:
ldd /PATH/TO/BINARY_FILE #ldd /sbin/ifconfig
管理及查看本機裝載的庫文件:
ldconfig
/sbin/ldconfig -p:顯示本機已經緩存的所有可用庫文件名及文件路徑映射關系
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
緩存文件: /etc/ld.so.cache
如:
#cd /etc/ld.so.conf.d/
#vim testapp.conf
/user/lib/testapp/
#ldconfig
rpm 數據庫var/lib/rpm #cd /var/lib/rpm 記錄安裝過的包數據和信息
-i –instal 安裝包
#rpm -i httpd-2.4.6-45.el7.centos.x86_64.rpm
#rpm -i httpd-tools-2.4.6-45.el7.centos.x86_64.rpm (httpd包的安裝,還依賴于兩個庫文件)
#rpm -i screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm
–test 檢測
–nodeps 忽略依賴性關系直接安裝
-v 顯示詳細信息
-vi 顯示包名
-vv 顯示更詳細信息
-h 顯示進度
-ivh 顯示包名進度條
–test: 測試安裝,但不真正執行安裝,即dry run模式
#rpm -ivh –test screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm
–nodeps:忽略依賴關系
–replacepkgs 已安裝過的包重裝。
–replacefiles 其他已安裝的RPM包的文件,與即將裝的RPM中的文件沖突時,則覆蓋文件并安裝。
–nosignature: 不檢查來源合法性
–nodigest:不檢查包完整性
–noscripts:不執行程序包腳本:
%pre: 安裝前腳本; –nopre #rpm -ivh –noscripts –nopre screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm
%post: 安裝后腳本; –nopost
%preun: 卸載前腳本; –nopreun
%postun: 卸載后腳本; –nopostun
-Uvh 當有舊的版本的包時,則卸載舊包再裝新包,如沒有舊包,直接裝新包。
-Fvh 當有舊的包時,卸載舊包裝新包,無舊包時,nothing
–oldpackage 降級 已有新包,裝舊包。
–force 強制安裝。–replacepkgs –replacefiles –oldpackage
查詢安裝包:
-q 軟件包名 查詢已安裝過的軟件包名。#rpm -q tree
-qa 列出所有的已安裝過的rpm包
#rpm -qa
-qa “name*” #rpm -qa “tre*”
-qa |grep name #rpm -qa |grep tree
-qf 查詢一個文件來自于哪一個rpm包 (已安裝的rpm) #rpm -qf /bin/ls
-q –changelog 版本更新日志 #rpm -q –changelog tree
-qc 查詢軟件包的配置文件(不是所有包都有配置文件)#rpm -qc aide
-qd 查詢軟件包的幫助文檔 #rpm -qd aide
-qi 查詢軟件包的詳細信息 #rpm -qi tree #rpm -qi `rpm -qf /bin/ls`
-ql 查詢軟件包所安裝到系統當中的所有文件路徑 #rpm -ql tree
-q –scripts 查詢軟件包自帶的腳本 #rpm -q –scripts `rpm -qf /bin/ls`
-q –provides 查詢自身的功能 #rpm -q –provides `rpm -qf /bin/ls` #rpm -q –provides tree
-qR 查詢實現自身的功能需要什么能力
-qp[licd] rpm包 查看未安裝的rpm包的各項信息 #rpm -qp http
-p 針對尚未安裝的程序包文件做查詢操作
-e 軟件名
–nodeps 忽略依賴性。強制卸載
–import GPG-KEY…. 導入公鑰 gpd生成公鑰
-qa “gpg-pubkey*” 顯示所有已導入的公鑰
-e gpg-pubkey….
-K rpm包 驗證某rpm簽名是否合法 #rpm -K tree-1.6.0-10.el7.x86_64.rpm (md5 not ok是應為沒有公鑰 )
進入centos6.9光盤 # ls #rpm –import RPM-CPG-KEY-Centos-6(導入公鑰)
#rpm -qa “gpg-pubkey*” 查看公鑰信息
yum rpm的前端程序,可解決軟件包相關依賴性,可在多個庫之間定位軟件包,up2date的替代工具
yum存儲了很多rpm已及包的相關元數據(防置于特定目錄repodata下)yum需要建立倉庫倉庫repository
配置文件:/etc/yum.conf為倉庫提供公共配置
/etc/yum.repos.d/*.repo為倉庫的指向提供配置
#vim /etc/yum.conf yum有緩存
#cd /etc/yum.repos.d 提供一些默認的地址
#vim /etc/yum.repos.d
編寫倉庫:
#cd /etc/yum.repos.d
#vim magedu.repos.d 文件必須以repo 結尾
格式:
[base]名 倉庫的id
name=magedu 26 repo
baseurl=http://172.16.0.1/centos/6/目錄
file:///media/dvd/centos6.9 本地地址
file:///run/media/root/Centos\ 7\ x86_64
gbgkey=file:///run/media/root/Centos\ 7\ x86_64/RPM-CPG-KEY-Centos-7公鑰
gpgcheck=1 不檢查默認1 就不用公鑰的設置了照樣能安裝 # yum install httpd
#cd #yum repolist
repolist 列出repo信息 #cd #yum repolist 列出倉庫
install 包名 # yum install httpd安裝
enabled={1|0}代表倉庫是否啟動 1開啟
:.!將內容顯示出來
設置緩存:
#cd /var/cache/yum/
#ls
#cd x86_64/
#ls
#cd #
#ls
#cd base/
#yum clean all
# yum repolist
原創文章,作者:MOMO,如若轉載,請注明出處:http://www.www58058.com/84550