最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Linux下通過(guò)find命令進(jìn)行rm文件刪除的小技巧

 更新時(shí)間:2016年12月07日 10:09:51   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇淺談Linux下通過(guò)find命令進(jìn)行rm文件刪除的小技巧。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

我們經(jīng)常會(huì)通過(guò)find命令進(jìn)行批量操作,如:批量刪除舊文件、批量修改、基于時(shí)間的文件統(tǒng)計(jì)、基于文件大小的文件統(tǒng)計(jì)等,在這些操作當(dāng)中,由于rm刪除操作會(huì)導(dǎo)致目錄結(jié)構(gòu)變化,如果要通過(guò)find結(jié)合rm的操作寫成腳本,就會(huì)遇到一些麻煩,本文通過(guò)一個(gè)例子為大家進(jìn)行介紹。

系統(tǒng)環(huán)境:

SUSE Linux Enterprise Server 11 或

Red Hat Enterprise Linux

問(wèn)題癥狀:

客戶現(xiàn)場(chǎng)有一個(gè)自動(dòng)化的腳本,有以下的find語(yǔ)句,每天運(yùn)行以刪除某個(gè)目錄下7天以前的文件或目錄,這些目錄都是按時(shí)間順序生成PostgreSQL數(shù)據(jù)庫(kù)的WAL日志及其錯(cuò)誤日志pg_log:

/bin/find /enterprisedb_backup/postgresql/ -mtime +7 -exec /bin/rm -rf '{}' \;

運(yùn)行過(guò)程中,間歇性地出現(xiàn)以下錯(cuò)誤:

[root@edb ~]# /bin/find /enterprisedb_backup/postgresql/ -mtime +7 -exec /bin/rm -rf {} \;
/bin/find: `/enterprisedb_backup/postgresql/network-scripts': No such file or directory
[root@edb ~]# echo $?
1

顯然,以上命令返回了錯(cuò)誤的結(jié)果,但客戶反映說(shuō),以上腳本運(yùn)行后目錄下7天前的數(shù)據(jù)的確備刪除了。

問(wèn)題分析:

進(jìn)行故障重現(xiàn),在另一臺(tái)服務(wù)器中通過(guò)模擬數(shù)據(jù)單獨(dú)運(yùn)行find命令分析此問(wèn)題,測(cè)試過(guò)程如下:

1.模擬數(shù)據(jù)

[root@edbnode1 ~]# date
Wed Jun 18 23:08:18 CST 2014

[root@edbnode1 ~]# cp -rcp /etc/sysconfig/network-scripts/ /enterprisedb_backup/postgresql/
[root@edbnode1 ~]# cp -rcp /etc/init.d/iptables /enterprisedb_backup/postgresql/## 以上通過(guò) cp -rcp 命令使得拷貝到目標(biāo)目錄的數(shù)據(jù)保持包括:建立時(shí)間、用戶權(quán)根等信息,以模擬出一個(gè)舊文件及一個(gè)舊目錄

[root@edbnode1 ~]# ll /enterprisedb_backup/postgresql/
total 16
-rwxr-xr-x. 1 root root 9409 Oct 31 2012 iptables
drwxr-xr-x. 2 root root 4096 Jun 18 2013 network-scripts## 以上可以看到iptables文件是2012年建立的,network-scripts是2013年建立的,都遠(yuǎn)遠(yuǎn)超過(guò)了7天

[root@edbnode1 ~]# ll /enterprisedb_backup/postgresql/*
-rwxr-xr-x. 1 root root 9409 Oct 31 2012 /enterprisedb_backup/postgresql/iptables

/enterprisedb_backup/postgresql/network-scripts:
total 212
-rw-r--r--. 1 root root  159 Jun 18 2013 ifcfg-eth0
-rw-r--r--. 1 root root  203 Jun 18 2013 ifcfg-eth1
-rw-r--r--. 1 root root  203 Jun 18 2013 ifcfg-eth2
-rw-r--r--. 1 root root  254 Jan 9 2013 ifcfg-lo
lrwxrwxrwx. 1 root root  20 Jun 18 2013 ifdown -> ../../../sbin/ifdown
-rwxr-xr-x. 1 root root  627 Jan 9 2013 ifdown-bnep
-rwxr-xr-x. 1 root root 5397 Jan 9 2013 ifdown-eth
-rwxr-xr-x. 1 root root  781 Jan 9 2013 ifdown-ippp
-rwxr-xr-x. 1 root root 4168 Jan 9 2013 ifdown-ipv6
lrwxrwxrwx. 1 root root  11 Jun 18 2013 ifdown-isdn -> ifdown-ippp
-rwxr-xr-x. 1 root root 1481 Jan 9 2013 ifdown-post
-rwxr-xr-x. 1 root root 1064 Jan 9 2013 ifdown-ppp
-rwxr-xr-x. 1 root root  835 Jan 9 2013 ifdown-routes
-rwxr-xr-x. 1 root root 1370 Jan 9 2013 ifdown-sit
-rwxr-xr-x. 1 root root 1434 Jan 9 2013 ifdown-tunnel
lrwxrwxrwx. 1 root root  18 Jun 18 2013 ifup -> ../../../sbin/ifup
-rwxr-xr-x. 1 root root 12365 Jan 9 2013 ifup-aliases
-rwxr-xr-x. 1 root root  859 Jan 9 2013 ifup-bnep
-rwxr-xr-x. 1 root root 10157 Jan 9 2013 ifup-eth
-rwxr-xr-x. 1 root root 11971 Jan 9 2013 ifup-ippp
-rwxr-xr-x. 1 root root 10401 Jan 9 2013 ifup-ipv6
lrwxrwxrwx. 1 root root   9 Jun 18 2013 ifup-isdn -> ifup-ippp
-rwxr-xr-x. 1 root root  727 Jan 9 2013 ifup-plip
-rwxr-xr-x. 1 root root  954 Jan 9 2013 ifup-plusb
-rwxr-xr-x. 1 root root 2364 Jan 9 2013 ifup-post
-rwxr-xr-x. 1 root root 4154 Jan 9 2013 ifup-ppp
-rwxr-xr-x. 1 root root 1925 Jan 9 2013 ifup-routes
-rwxr-xr-x. 1 root root 3499 Jan 9 2013 ifup-sit
-rwxr-xr-x. 1 root root 2488 Jan 9 2013 ifup-tunnel
-rwxr-xr-x. 1 root root 3770 Jan 9 2013 ifup-wireless
-rwxr-xr-x. 1 root root 4623 Jan 9 2013 init.ipv6-global
-rwxr-xr-x. 1 root root 1125 Jan 9 2013 net.hotplug
-rw-r--r--. 1 root root 13079 Jan 9 2013 network-functions
-rw-r--r--. 1 root root 29853 Jan 9 2013 network-functions-ipv6
## 以上可以看到network-script不是一個(gè)空的目錄,當(dāng)中還有文件,而且文件也都已經(jīng)是7天前建立的了 

2.測(cè)試單獨(dú)模擬執(zhí)行腳本中的find + rm指令

[root@edbnode1 ~]# /bin/find /enterprisedb_backup/postgresql/ -mtime +7 -exec /bin/rm -rf {} \;
/bin/find: `/enterprisedb_backup/postgresql/network-scripts': No such file or directory
[root@edbnode1 ~]# echo $?
1
[root@edbnode1 ~]# ls /enterprisedb_backup/postgresql/
[root@edbnode1 ~]#

可以看到find操作的確返回了錯(cuò)誤的結(jié)果,但查看數(shù)據(jù)備份目錄發(fā)現(xiàn),iptables文件及network-scripts目錄已經(jīng)正確刪除

3.由于數(shù)據(jù)已經(jīng)正確刪除,因此我們開(kāi)始懷疑是由network-scripts目錄刪除后,find繼續(xù)嘗試刪除此目錄下其它文件,導(dǎo)致出不“No such file or directory”的錯(cuò)誤,因此需要于進(jìn)一步證實(shí)此猜想,重新執(zhí)行以上“第1步”中的數(shù)據(jù)環(huán)境模擬,并執(zhí)行以下操作,主要是將rm轉(zhuǎn)換成ls以展現(xiàn)整體運(yùn)行過(guò)程:

[root@edbnode1 ~]# cp -rcp /etc/sysconfig/network-scripts/ /enterprisedb_backup/postgresql/
[root@edbnode1 ~]# cp -rcp /etc/init.d/iptables /enterprisedb_backup/postgresql/
[root@edbnode1 ~]# /bin/find /enterprisedb_backup/postgresql/ -mtime +7 -exec /bin/ls {} \;
ifcfg-eth0 ifcfg-lo	 ifdown-eth  ifdown-isdn ifdown-routes ifup		ifup-eth  ifup-isdn  ifup-post  ifup-sit	  init.ipv6-global  network-functions-ipv6
ifcfg-eth1 ifdown	 ifdown-ippp ifdown-post ifdown-sit	 ifup-aliases	ifup-ippp ifup-plip  ifup-ppp   ifup-tunnel  net.hotplug
ifcfg-eth2 ifdown-bnep ifdown-ipv6 ifdown-ppp  ifdown-tunnel ifup-bnep	ifup-ipv6 ifup-plusb ifup-routes ifup-wireless network-functions
/enterprisedb_backup/postgresql/network-scripts/ifup-plusb
/enterprisedb_backup/postgresql/network-scripts/ifup-sit
/enterprisedb_backup/postgresql/network-scripts/ifdown-post
/enterprisedb_backup/postgresql/network-scripts/ifcfg-lo
/enterprisedb_backup/postgresql/network-scripts/network-functions
/enterprisedb_backup/postgresql/network-scripts/ifup-bnep
/enterprisedb_backup/postgresql/network-scripts/ifup-ippp
/enterprisedb_backup/postgresql/network-scripts/ifdown-sit
/enterprisedb_backup/postgresql/network-scripts/ifdown-tunnel
/enterprisedb_backup/postgresql/network-scripts/ifup-plip
/enterprisedb_backup/postgresql/network-scripts/ifup-eth
/enterprisedb_backup/postgresql/network-scripts/ifdown-ipv6
/enterprisedb_backup/postgresql/network-scripts/ifdown-ippp
/enterprisedb_backup/postgresql/network-scripts/ifup-aliases
/enterprisedb_backup/postgresql/network-scripts/network-functions-ipv6
/enterprisedb_backup/postgresql/network-scripts/ifup-ipv6
/enterprisedb_backup/postgresql/network-scripts/ifup-post
/enterprisedb_backup/postgresql/network-scripts/ifcfg-eth2
/enterprisedb_backup/postgresql/network-scripts/ifcfg-eth1
/enterprisedb_backup/postgresql/network-scripts/ifdown-ppp
/enterprisedb_backup/postgresql/network-scripts/ifup-isdn
/enterprisedb_backup/postgresql/network-scripts/ifcfg-eth0
/enterprisedb_backup/postgresql/network-scripts/ifdown
/enterprisedb_backup/postgresql/network-scripts/ifup-wireless
/enterprisedb_backup/postgresql/network-scripts/ifup-ppp
/enterprisedb_backup/postgresql/network-scripts/ifdown-eth
/enterprisedb_backup/postgresql/network-scripts/init.ipv6-global
/enterprisedb_backup/postgresql/network-scripts/ifdown-isdn
/enterprisedb_backup/postgresql/network-scripts/ifup-tunnel
/enterprisedb_backup/postgresql/network-scripts/ifdown-routes
/enterprisedb_backup/postgresql/network-scripts/ifdown-bnep
/enterprisedb_backup/postgresql/network-scripts/net.hotplug
/enterprisedb_backup/postgresql/network-scripts/ifup
/enterprisedb_backup/postgresql/network-scripts/ifup-routes
/enterprisedb_backup/postgresql/iptables

通過(guò)以上操作我們可以看到,find命令不單查詢了/enterprisedb_backup/postgresql/目錄,并且遍歷了所有子目錄,因此支持了我們的推斷

4.綜上所述基本定位問(wèn)題所在

解決方案:

1.整理思路后,可以確認(rèn),如果find只找出所需操作目錄的第1層文件及目錄即可解決此問(wèn)題

2.通過(guò)偉大的 man 命令我們得到以下信息

-maxdepth levels
  Descend at most levels (a non-negative integer) levels of directories below the command line arguments. -maxdepth 0 means only apply the tests and actions to the command line arguments. 

3.測(cè)試操作確認(rèn)修改為:

[root@edbnode1 ~]# /bin/find /enterprisedb_backup/postgresql/ -mtime +7 -maxdepth 1 -exec /bin/rm -rf {} \;
/bin/find: warning: you have specified the -maxdepth option after a non-option argument -mtime, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.

這里意思是說(shuō):-mtime找到的信息可能會(huì)操過(guò)-maxdepth的范圍,在find操作中建議-maxdepth放在所有其他參數(shù)的前面

解決結(jié)果【完成】

以上這篇淺談Linux下通過(guò)find命令進(jìn)行rm文件刪除的小技巧就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談ubuntu執(zhí)行.sh文件幾種方式區(qū)別

    淺談ubuntu執(zhí)行.sh文件幾種方式區(qū)別

    這篇文章主要介紹了淺談ubuntu執(zhí)行.sh文件幾種方式區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 在 Linux 中不使用 CD 命令進(jìn)入目錄/文件夾的方法

    在 Linux 中不使用 CD 命令進(jìn)入目錄/文件夾的方法

    眾所周知,如果沒(méi)有 cd 命令,我們無(wú)法 Linux 中切換目錄。接下來(lái)通過(guò)本文給大家介紹了在 Linux 中不使用 CD 命令進(jìn)入目錄/文件夾的方法,需要的朋友可以參考下
    2019-04-04
  • linux系統(tǒng)對(duì)外開(kāi)放3306、8080等端口,防火墻設(shè)置詳解

    linux系統(tǒng)對(duì)外開(kāi)放3306、8080等端口,防火墻設(shè)置詳解

    這篇文章主要介紹了linux系統(tǒng)對(duì)外開(kāi)放3306、8080等端口,防火墻設(shè)置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Linux下設(shè)置每天自動(dòng)備份數(shù)據(jù)庫(kù)的方法

    Linux下設(shè)置每天自動(dòng)備份數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了Linux下設(shè)置每天自動(dòng)備份數(shù)據(jù)庫(kù)的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • centos服務(wù)器下nginx圖片防盜鏈設(shè)置方法

    centos服務(wù)器下nginx圖片防盜鏈設(shè)置方法

    本篇文章主要介紹了centos服務(wù)器下nginx防盜鏈設(shè)置方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • 詳解Linux系統(tǒng)中如何修改時(shí)間和時(shí)區(qū)

    詳解Linux系統(tǒng)中如何修改時(shí)間和時(shí)區(qū)

    當(dāng)我們?cè)谑褂肔inux系統(tǒng)時(shí),有時(shí)會(huì)遇到系統(tǒng)時(shí)間與當(dāng)?shù)貢r(shí)間存在差異的情況,所以這篇文章就給大家詳細(xì)介紹如何解決這個(gè)問(wèn)題,感興趣的小伙伴跟著小編一起來(lái)學(xué)習(xí)吧
    2023-07-07
  • Linux使用sar命令跟蹤和記錄系統(tǒng)資源利用率

    Linux使用sar命令跟蹤和記錄系統(tǒng)資源利用率

    sar?命令是?Linux?系統(tǒng)中的一個(gè)系統(tǒng)監(jiān)控工具,由?sysstat?包提供,它可以定期收集系統(tǒng)的各種性能數(shù)據(jù),包括CPU利用率、內(nèi)存使用情況、磁盤I/O活動(dòng)、網(wǎng)絡(luò)流量等,本文介紹了如何在?Linux?中使用?sar?命令跟蹤和記錄系統(tǒng)資源利用率,需要的朋友可以參考下
    2024-07-07
  • 解決centos7安裝nginx后無(wú)conf.d目錄或conf.d目錄下無(wú)default.conf文件問(wèn)題

    解決centos7安裝nginx后無(wú)conf.d目錄或conf.d目錄下無(wú)default.conf文件問(wèn)題

    這篇文章主要介紹了解決centos7安裝nginx后無(wú)conf.d目錄或conf.d目錄下無(wú)default.conf文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 在Linux中安裝Git的詳細(xì)流程

    在Linux中安裝Git的詳細(xì)流程

    本文介紹在Linux操作系統(tǒng)的Ubuntu版本中,配置分布式開(kāi)源版本控制系統(tǒng)Git,隨后基于Git克隆GitHub中項(xiàng)目的代碼的詳細(xì)方法,需要的朋友可以參考下
    2024-04-04
  • Linux調(diào)整命令歷史方法詳解

    Linux調(diào)整命令歷史方法詳解

    這篇文章主要介紹了Linux調(diào)整命令歷史方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論

观塘区| 麻栗坡县| 惠安县| 阿拉尔市| 盐池县| 繁峙县| 乃东县| 宁陕县| 郸城县| 庐江县| 五莲县| 宁河县| 陇川县| 朝阳区| 嵊州市| 忻城县| 友谊县| 高密市| 彭水| 襄汾县| 淄博市| 固原市| 克什克腾旗| 湘乡市| 吉首市| 怀化市| 监利县| 郓城县| 莱州市| 翁牛特旗| 萝北县| 仁化县| 嘉荫县| 兴隆县| 秦安县| 屏南县| 肇州县| 吐鲁番市| 调兵山市| 梅河口市| 淳安县|