Linux下ulimit、find命令使用者
一、Linux Shell命令ulimit的用法
ulimit用於shell啟動程式所佔用的資源.
2,類別:
shell內建命令
3,語法格式:
ulimit [-acdfHlmnpsStvw] [size]
4,引數介紹:
-H 設定硬體資源限制.
-S 設定軟體資源限制.
-a 顯示當前所有的資源限制.
-c size:設定core檔案的最大值.單位:blocks
-d size:設定資料段的最大值.單位:kbytes
-f size:設定建立檔案的最大值.單位:blocks
-l size:設定在記憶體中鎖定程式的最大值.單位:kbytes
-m size:設定可以使用的常駐記憶體的最大值.單位:kbytes
-n size:設定核心可以同時開啟的檔案描述符的最大值.單位:n
-p size:設定管道緩衝區的最大值.單位:kbytes
-s size:設定堆疊的最大值.單位:kbytes
-t size:設定CPU使用時間的最大上限.單位:seconds
-v size:設定虛擬記憶體的最大值.單位:kbytes
5.舉例
在Linux下寫程式的時候,如果程式比較大,經常會遇到“段錯誤”(segmentation fault)這樣的問題,這主要就是由於Linux系統初始的堆疊大小(stack size)太小的緣故,一般為10M。我一般把stack size設定成256M,這樣就沒有段錯誤了!命令為:
ulimit -s 262140
如果要系統自動記住這個配置,就編輯/etc/profile檔案,在 “ulimit -S -c 0 > /dev/null 2>&1”行下,新增“ulimit -s 262140”,儲存重啟系統就可以了!
二、 find 用法
由於find具有強大的功能,所以它的選項也很多,其中大部分選項都值得我們花時間來了解一下。即使系統中含有網路檔案系統( NFS),find命令在該檔案系統中同樣有效,只你具有相應的許可權。
在執行一個非常消耗資源的find命令時,很多人都傾向於把它放在後臺執行,因為遍歷一個大的檔案系統可能會花費很長的時間(這裡是指30G位元組以上的檔案系統)。
2.1、find 命令格式
2.1.1、find命令的一般形式為;
find pathname -options [-print -exec -ok ...]
2.2、find命令的引數;
pathname: find命令所查詢的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。
-print: find命令將匹配的檔案輸出到標準輸出。
-exec: find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的形式為'command' { } \;,注意{ }和\;之間的空格。
-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該引數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓使用者來確定是否執行。
2.3、find命令選項
-name
按照檔名查詢檔案。
-perm
按照檔案許可權來查詢檔案。
-prune
使用這一選項可以使find命令不在當前指定的目錄中查詢,如果同時使用-depth選項,那麼-prune將被find命令忽略。
-user
按照檔案屬主來查詢檔案。
-group
按照檔案所屬的組來查詢檔案。
-mtime -n +n
按照檔案的更改時間來查詢檔案, - n表示檔案更改時間距現在n天以內,+ n表示檔案更改時間距現在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。
-nogroup
查詢無有效所屬組的檔案,即該檔案所屬的組在/etc/groups中不存在。
-nouser
查詢無有效屬主的檔案,即該檔案的屬主在/etc/passwd中不存在。
-newer file1 ! file2
查詢更改時間比檔案file1新但比檔案file2舊的檔案。
-type
查詢某一型別的檔案,諸如:
b - 塊裝置檔案。
d - 目錄。
c - 字元裝置檔案。
p - 管道檔案。
l - 符號連結檔案。
f - 普通檔案。
-size n:[c] 查詢檔案長度為n塊的檔案,帶有c時表示檔案長度以位元組計。
-depth:在查詢檔案時,首先查詢當前目錄中的檔案,然後再在其子目錄中查詢。
-fstype:查詢位於某一型別檔案系統中的檔案,這些檔案系統型別通常可以在配置檔案/etc/fstab中找到,該配置檔案中包含了本系統中有關檔案系統的資訊。
-mount:在查詢檔案時不跨越檔案系統mount點。
-follow:如果find命令遇到符號連結檔案,就跟蹤至連結所指向的檔案。
-cpio:對匹配的檔案使用cpio命令,將這些檔案備份到磁帶裝置中。
另外,下面三個的區別:
-amin n
查詢系統中最後N分鐘訪問的檔案
-atime n
查詢系統中最後n*24小時訪問的檔案
-cmin n
查詢系統中最後N分鐘被改變檔案狀態的檔案
-ctime n
查詢系統中最後n*24小時被改變檔案狀態的檔案
-mmin n
查詢系統中最後N分鐘被改變檔案資料的檔案
-mtime n
查詢系統中最後n*24小時被改變檔案資料的檔案
2.4、使用exec或ok來執行shell命令
使用find時,只要把想要的操作寫在一個檔案裡,就可以用exec來配合find查詢,很方便的
在有些作業系統中只允許-exec選項執行諸如l s或ls -l這樣的命令。大多數使用者使用這一選項是為了查詢舊檔案並刪除它們。建議在真正執行rm命令刪除檔案之前,最好先用ls命令看一下,確認它們是所要刪除的檔案。
exec選項後面跟隨著所要執行的命令或指令碼,然後是一對兒{ },一個空格和一個\,最後是一個分號。為了使用exec選項,必須要同時使用print選項。如果驗證一下find命令,會發現該命令只輸出從當前路徑起的相對路徑及檔名。
例如:為了用ls -l命令列出所匹配到的檔案,可以把ls -l命令放在find命令的-exec選項中
# find . -type f -exec ls -l { } \;
-rw-r--r-- 1 root root 34928 2003-02-25 ./conf/httpd.conf
-rw-r--r-- 1 root root 12959 2003-02-25 ./conf/magic
-rw-r--r-- 1 root root 180 2003-02-25 ./conf.d/README
上面的例子中,find命令匹配到了當前目錄下的所有普通檔案,並在-exec選項中使用ls -l命令將它們列出。
在/logs目錄中查詢更改時間在5日以前的檔案並刪除它們:
$ find logs -type f -mtime +5 -exec rm { } \;
記住:在shell中用任何方式刪除檔案之前,應當先檢視相應的檔案,一定要小心!當使用諸如mv或rm命令時,可以使用-exec選項的安全模式。它將在對每個匹配到的檔案進行操作之前提示你。
在下面的例子中, find命令在當前目錄中查詢所有檔名以.LOG結尾、更改時間在5日以上的檔案,並刪除它們,只不過在刪除之前先給出提示。
$ find . -name "*.conf" -mtime +5 -ok rm { } \;
< rm ... ./conf/httpd.conf > ? n
按y鍵刪除檔案,按n鍵不刪除。
任何形式的命令都可以在-exec選項中使用。
在下面的例子中我們使用grep命令。find命令首先匹配所有檔名為“ passwd*”的檔案,例如passwd、passwd.old、passwd.bak,然後執行grep命令看看在這些檔案中是否存在一個sam使用者。
# find /etc -name "passwd*" -exec grep "sam" { } \;
sam:x:501:501::/usr/sam:/bin/bash
find 常用例項:
1、使用name選項
檔名選項是find命令最常用的選項,要麼單獨使用該選項,要麼和其他選項一起使用。
可以使用某種檔名模式來匹配檔案,記住要用引號將檔名模式引起來。
不管當前路徑是什麼,如果想要在自己的根目錄$HOME中查詢檔名符合*.txt的檔案,使用~作為 'pathname'引數,波浪號~代表了你的$HOME目錄。
$ find ~ -name "*.txt" -print
想要在當前目錄及子目錄中查詢所有的‘ *.txt’檔案,可以用:
$ find . -name "*.txt" -print
想要的當前目錄及子目錄中查詢檔名以一個大寫字母開頭的檔案,可以用:
$ find . -name "[A-Z]*" -print
想要在/etc目錄中查詢檔名以host開頭的檔案,可以用:
$ find /etc -name "host*" -print
想要查詢$HOME目錄中的檔案,可以用:
$ find ~ -name "*" -print 或find . -print
要想讓系統高負荷執行,就從根目錄開始查詢所有的檔案。
$ find / -name "*" -print
如果想在當前目錄查詢檔名以兩個小寫字母開頭,跟著是兩個數字,最後是.txt的檔案,下面的命令就能夠返回名為ax37.txt的檔案:
$find . -name "[a-z][a-z][0--9][0--9].txt" -print
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12272958/viewspace-676874/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux系統下find、locate命令如何使用?Linux
- Linux find 命令詳解Linux
- linux中file命令和find命令Linux
- Linux ulimit使用LinuxMIT
- linux每日命令(20):find命令概覽Linux
- Linux/Unix重要find命令詳解Linux
- 在 Linux中find命令使用技巧Linux
- linux 查詢檔案命令 findLinux
- Linux下的五個查詢命令:grep、find、locate、whereis、whichLinux
- Linux學習之linux的find命令如何使用?Linux
- linux下的find 和 grepLinux
- 每天一個linux命令(1):find命令之execLinux
- Linux 命令列:find 的 26 個用法示例Linux命令列
- find命令
- linux中查詢find命令的複雜用法Linux
- 為什麼要謹慎使用Linux find命令?Linux
- find -newer命令
- linux命令檢視記憶體命令free -h whereis locate find查詢命令Linux記憶體
- Linux 搜尋命令總結 – whereis,which,locate,find,grepLinux
- 『學了就忘』Linux基礎命令 — 30、find命令詳細說明Linux
- `find` 命令詳解
- find 命令及其示例
- find 命令入門
- grep、find命令整理
- Linux下Ollama命令Linux
- linux下source命令Linux
- Linux常用命令之檔案查詢which、find、locate命令講解Linux
- 快速上手Linux核心命令(十一):Linux使用者相關命令Linux
- Linux命令分享- 新建使用者和組命令Linux
- Linux的wheel組:LINUX下使用者使用su命令切換使用者報錯su: Permission deniedLinux
- 5分鐘學會使用Linux的 grep、find、ls、wc 命令Linux
- linux每日命令(30):Linux 使用者及使用者組相關檔案、命令詳解Linux
- 在Linux中,umask 和 ulimit有什麼區別?LinuxMIT
- linux使用者管理基本命令Linux
- Linux中的查詢命令:find、locate、whereis、which、type及其區別Linux
- ulimit詳解MIT
- Linux下常用命令Linux
- Linux——基礎命令用法(下)Linux
- Linux 下 常見操作命令Linux