linuxexec命令
⑴ linux系統中,遞歸刪除目錄的命令是
rm 遞歸刪除 特定文件夾
使用規則:
rm -rf 目錄名字
-r 向下遞歸,不管有多少級目錄,一並刪除
-f 直接強行刪除,沒有任何提示
linux下遞歸刪除目錄下所有指定的文件
find . -name '*.*' -type f -print -exec rm -rf {} ;
(1) "." 表示從當前目錄開始遞歸查找
(2) 「 -name '*.*' "根據名稱來查找,要查找所有以.*結尾的文件夾或者文件
(3) " -type f "查找的類型為文件
(4) "-print" 輸出查找的文件目錄名
(5) exec選項後邊跟著一個所要執行的命令,表示將find出來的文件或目錄執行該命令。《Linux就該這么學》 一起學習更多linux知識。
exec選項後面跟隨著所要執行的命令或腳本,然後是一對兒{},一個空格和一個,最後是一個分號
⑵ linux shell腳本 解釋exec
這是一個if結構
判斷 /var/log/x.log 是否存在
然後執行exec命令,將執行輸出的標准信息和錯誤信息都輸出到 /var/log/x.log 文件
⑶ linux中system和exec函數的區別
system是用shell來調用程序=fork+exec+waitpid,而exec是直接讓你的程序代替用來的程序運行。
system 是在單獨的進程中執行命令,完了還會回到你的程序中。而exec函數是直接在你的進程中執行新的程序,新的程序會把你的程序覆蓋,除非調用出錯,否則你再也回不到exec後面的代碼,就是說你的程序就變成了exec調用的那個程序了。
看一下,下面的例子.
例子1
---------------------------------
system("your_program");
printf("You can see me! ");
---------------------------------
例子2
---------------------------------
exec("your_program");
printf("You can't see me! ");
---------------------------------
在例子1中,在你的程序執行完畢以後,會執行printf語句。
在例子2中,由於exec將程序your_program代替了本身,因此程序不再會執行printf語句。
在Linux下,exec通常會和fork語句一起用。
看下面的這個例子
--------------------------------------------
pid_t pid = fork();
if (pid < 0) {
printf(「fork error!」);
exit(-1);
} else if (pid == 0) {
//這里是子進程
printf("I'm son! ");
//執行其它的程序
exec("your_program");
} else {
//這里是父進程
printf("i'm father!");
wait();//等待子進程結束後返回
exit(0);
}
⑷ linux中fork,source和exec的區別
exec和source都屬於bash內部命令(builtins commands),在bash下輸入man exec或man source可以查看所有的內部命令信息。
bash shell的命令分為兩類:外部命令和內部命令。外部命令是通過系統調用或獨立的程序實現的,如sed、awk等等。內部命令是由特殊的文件格式(.def)所實現,如cd、history、exec等等。
在說明exec和source的區別之前,先說明一下fork的概念。
fork是linux的系統調用,用來創建子進程(child process)。子進程是父進程(parent process)的一個副本,從父進程那裡獲得一定的資源分配以及繼承父進程的環境。子進程與父進程唯一不同的地方在於pid(process id)。
環境變數(傳給子進程的變數,遺傳性是本地變數和環境變數的根本區別)只能單向從父進程傳給子進程。不管子進程的環境變數如何變化,都不會影響父進程的環境變數。
shell script:
有兩種方法執行shell scripts,一種是新產生一個shell,然後執行相應的shell scripts;一種是在當前shell下執行,不再啟用其他shell。
新產生一個shell然後再執行scripts的方法是在scripts文件開頭加入以下語句
#!/bin/sh
一般的script文件(.sh)即是這種用法。這種方法先啟用新的sub-shell(新的子進程),然後在其下執行命令。
另外一種方法就是上面說過的source命令,不再產生新的shell,而在當前shell下執行一切命令。
source:
source命令即點(.)命令。
在bash下輸入man source,找到source命令解釋處,可以看到解釋"Read and execute commands from filename in the current shell environment and ..."。從中可以知道,source命令是在當前進程中執行參數文件中的各個命令,而不是另起子進程(或sub-shell)。source filename or .filename 執行filename中的命令。
exec:
在bash下輸入man exec,找到exec命令解釋處,可以看到有"No new process is created."這樣的解釋,這就是說exec命令不產生新的子進程。那麼exec與source的區別是什麼呢?
exec命令在執行時會把當前的shell process關閉,然後換到後面的命令繼續執行。
======================================================================================================================
下面我們寫個腳本來測試一下,這樣你就會很容易的讀懂我上面所說的東西~
1.sh
1
2
3
#!/bin/bashA=Becho "PID for 1.sh before exec/source/fork:
"exportAecho"1.sh:$Ais$A"case$1inexec)echo"usingexec..."exec./2.sh;;source)echo"usingsource..."../2.sh;;∗)echo"usingforkbydefault..."./2.sh;;esacecho"PIDfor1.shafterexec/source/fork:
"echo "1.sh: \$A is $A"
2.sh
1
2
3
4
5
6
#!/bin/bash
echo "PID for 2.sh: $$"
echo "2.sh get \$A=$A from 1.sh"
A=C
export A
echo "2.sh: \$A is $A"
=================》》》》》》》》》》》
測試結果:
[root@node2 ~]$ ./1.sh fork
PID for 1.sh before exec/source/fork:10175
1.sh: $A is B
using fork by default...
PID for 2.sh: 10176
2.sh get $A=B from 1.sh
2.sh: $A is C
PID for 1.sh after exec/source/fork:10175
1.sh: $A is B
=============================================
[root@node2 ~]$ ./1.sh source
PID for 1.sh before exec/source/fork:10185
1.sh: $A is B
using source...
PID for 2.sh: 10185
2.sh get $A=B from 1.sh
2.sh: $A is C
PID for 1.sh after exec/source/fork:10185
1.sh: $A is C
=============================================
[root@node2 ~]$ ./1.sh exec
PID for 1.sh before exec/source/fork:10194
1.sh: $A is B
using exec...
PID for 2.sh: 10194
2.sh get $A=B from 1.sh
2.sh: $A is C
[cpsuser@cps-svr-153 zy]$
=============================================
從以上結果可以看出:
1.執行source和exec的過程中沒有產生新的進程,而fork是默認的運行方式,在運行的過程中會產生新的進程,也就是子進程
2.source和exec的區別在於exec執行完畢後沒有輸出進程,也就是說運行完畢2.sh後直接退出了,沒有返回1.sh
3.fork和source的最後一句輸出分別為:1.sh: $A is B (fork,說明它運行的環境不一樣,要不然輸出的應該是C)
1.sh: $A is C(source,說明從始至終都是在一個shell中執行)
小節:
source 指定腳本中的命令在同一個shell中運行。(默認shell中的命令都是創建sub-shell,然後執行。執行完後,返回父shell)
fork 就是創建sub-shell運行腳本中的命令,和默認運行方式相同。
exec 和source相似,區別就是,運行完畢命令後退出,不會返回父shell
⑸ linux exec命令主要用來干什麼的啊
從外部看是執行一個外部程序,從內部看是開啟一個進程來執行目標程序。
⑹ linux運維必須知道的幾個常用命令
Linux是一個命令行組成的操作系統,精髓在命令行,無論圖形界面發展到什麼水平這個原理都是無法改變的,Linux命令有許多強大功能:從簡單的磁碟操作、文件存取以及復雜的多媒體圖像和媒體文件都會使用到命令。
Linux常用的命令有哪些?老男孩教育為大家總結一下:
安裝和登錄命令:login 、shutdown 、halt 、reboot 、mount 、umount 、chsh
文件處理命令:file 、mkdir 、grep 、dd 、find 、mv 、ls 、diff 、cat 、ln
網路操作命令:ifconfig 、ip 、ping 、netstat 、telnet 、ftp 、route 、rlogin rcp 、finger
、mail 、nslookup
系統安全相關命令:passwd 、su 、umask 、chgrp 、chmod 、chown 、chattr、sudo、pswho
系統管理相關命令:df 、top 、free 、quota 、at 、lp 、 adser 、groupadd kill 、 crontab 、tar、unzip 、gunzip 、last
⑺ 關於Linux的shell的exec命令
wall是向所有登錄系統的用戶發送信息,消息的內容是 "Thanks for all the fish" , 相當於簡訊群發。
exec 3<afile 打開文件afile,文件描述符是3,然後這個3就可以代表文件afile,比如
cat <&3 查看文件afile的內容