當前位置:首頁 » 操作系統 » linux命令exec

linux命令exec

發布時間: 2023-08-27 20:02:43

❶ 【exec】shell腳本中的 exec 命令

exec 是 bash 的內置命令

shell 的內件命令exec執行命令時,不啟用新的shell進程。

source 和 . 不啟用新的shell,在當前shell中執行,設定的局部變數在執行完命令後仍然有效。

bash 或 sh 或 shell script 執行時,另起一個子shell,其繼承父shell的環境變數,其子shelll的變數執行完後不影響父shell。

exec是用被執行的命令行替換掉當前的shell進程,且exec命令後的其他命令將不再執行。

例如在當前shell中執行 exec ls  表示執行ls這條命令來替換當前的shell ,即為執行完後會退出當前shell。

為了避免這個結果的影響,一般將exec命令放到一個shell腳本中,用主腳本調用這個腳本,調用處可以用bash  xx.sh(xx.sh為存放exec命令的腳本),這樣會為xx.sh建立一個子shell去執行,當執行exec後該子腳本進程就被替換成相應的exec的命令。

其中有一個例外:當exec命令對文件描述符操作的時候,就不會替換shell,而是操作完成後還會繼續執行後面的命令!

在shell腳本中使用exec命令,根據操作的對象不同會有不同的行為

文件描述符

shell中描述符一共有12個

0  代表標准輸入

1  代表標准輸出

2  錯誤輸出

其他 3-9 都是空白描述符

#  exec3>&1 4>&2 1>> bash.log 2>&1

其含義是: 復制標准輸出到3 ,錯誤輸出到 4 ,把 3 4 保存在bash.log 這個文件中。

#  ./bash.sh  >> bash.log   2>&1

其含義是:將bash.sh腳本執行的標准輸出和錯誤輸出追加重定向到 bash.log

如果exec 跟的是其他命令,則其他命令結束後,本shell也隨之停止

#  cat test_exec.sh

###################

#!/bin/bash  



echo "Hello mysql"  

exec echo "Hello oracle"  

echo "Hello sqlserver"

####################

可以看到隨著 echo " hello oracle"  這條指令運行完本 整個腳本執行完畢,後面的 echo " hello db2" 沒有執行!

linux shell 腳本中, $@ 和$# 分別是什麼意思?

$@  表示所有腳本參數的內容

$# 表示返回所有腳本參數的個數

示例:編寫如下shell腳本,保存為test.sh

###############

#!/bin/sh

echo "number:$#"

echo "argume:$@"

###############

執行腳本:

./test.sh first_arg  second_arg

說明:給腳本提供了兩個參數,所以$#輸出的結果是2,$@代表了參數的內容!

怎麼理解shell腳本中  exec "`dirname "$0"`/node""$0"  "$@" ?

$0                                      # 腳本自己的路徑

"`dirname "$0"`"/node    # 腳本目錄下的node程序的路徑

$@                                    # 腳本被執行時的命令行參數

合起來就是:用腳本目錄下的node程序來解釋這個腳本本身

exec scala "$0" "$@"是什麼意思

這是bash語法。

$0  表示當前腳本的名字

$@  表示當前腳本執行的所有參數

exec scala "$0" "$@"    表示用scala命令,帶參數,執行當前腳本

exec  sh "$0  在這個文件里,exec sh  $0是什麼意思?

############

#!/bin/sh

echo  "Hello!"

sleep 2

execsh "$0"

#############

$0   是位置參數,表示腳本名稱

$1   表示腳本的第一個參數,依次類推直到$9

exec用於執行命令、或腳本、或外部可執行程序,會新建一個shell去執行

綜上,這里exec sh  "$0"  就是執行腳本本身

所以,就是一個循環過程,每隔兩秒列印一次 Hello

#############

#!/bin/sh

echo  "Hello!"

sleep 2

exec   "$0"

#############

❷ Linux常用命令

1、ls命令

ls是list的縮寫,常用命令為ls(顯示出當前目錄列表),ls -l(詳細顯示當前目錄列表),ls -lh(人性化的詳細顯示當前目錄列表),ls -a(顯示出當前目錄列表,包含隱藏文件)

2、cd 命令

cd是change direcory的縮寫,常用命令為 cd 目錄,cd ..為返回上級目錄,cd - 返回上次所在目錄

3、pwd命令

常用命令為pwd 顯示當前所在目錄

4、mkdir命令

mkdir命令為創建空目錄命令,通常用法為mkdir 目錄名,mkdir -p 目錄名/目錄名 可以遞歸創建多個不存在的目錄

5、rm命令

州悔rm為刪除命令remove,rm 文件,謹慎操作

6、rmdir命令

rm為刪除命令remove direcory,rm 目錄,謹慎操作

7、mv命令

mv命令move,移動剪切命令,mv 文件 目錄,mv 文件 文件(會覆蓋)

8、cp命令

cp命令為命令,復制文件或目錄到別的目錄裡面並派,cp 文件/目錄 目錄/文件

9、touch命令

touch命令創建空文件,比如touch xx.txt,touch 目錄 文件

10、cat命令

cat命令查看當前文件內容,cat fi.txt f2.txt > f3.txt合並文件內容,cat -n 對所有行進行編號

11、nl命令

nl命令 為文件加入顯示行號,nl 文件名,nl -b a 文件名,將空行也加如行號

12、more 命令

more命令 按頁顯示文件內容,more 文件名,more -2 文件名 每2行顯示一頁

13、less命令

less命令查看文件內容,可以上下翻頁,less 文件名

14、head命令

head命令可以查看文件前幾行內容,head -n 2 文件名

15、tail命令

tail命令可以查看文件後幾行內容,tail -n 2 文件名

16、which命令

which 可以執行文件名稱,顯示路徑

17、whereis命令

whereis -m svn 查出說明文絕跡賀檔路徑,whereis -s svn 找source源文件。

18、locate命令

locate /etc/m 搜索ect目錄下所有m開頭的文件

19、find 命令

find . -name "*.log"根據關鍵字查找

20、find exec命令

ls -l命令放在find命令的-exec選項中 find . -type f -exec ls -l {} ;

21、find xargs命令

find . -type f -print | xargs file查找系統中的每一個普通文件,然後使用xargs命令來測試它們分別屬於哪類文件

22、ls -lih命令

詳細的文件屬性

23、zmodem

❸ Linux命令

命令格式: 命令 [-選項] [參數]

如:ls -la /usr

**說明: **

大部分命令遵從該格式

多個選項時,可以一起寫 eg:ls –l –a à ls –la

簡化選項與完整選項(註:並非所有選項都可使用完整選項) eg:ls –all à ls –a

作用:切換用戶身份

語法:su [選項] 用戶名

-c 僅執行一次命令,而不切換用戶身份

$ su – root

env

$ su – root –c 「useradd longjing」

文件或目錄的CRUD

英文:change directory 命令路徑:內部命令 執行許可權:所有用戶

作用: 切換目錄

語法:cd [目錄] / 切換到根目錄

.. 回到上一級目錄

. 當前目錄

~ 當前用戶的宿主目錄(eg:# cd ~用戶名 進入某個用戶的家目錄)

英文:list 命令路徑:/bin/ls 執行許可權:所有用戶

作用:顯示目錄文件

語法:ls [-alrRd] [文件或目錄]

-a all 顯示所有文件,注意隱藏文件,特殊目錄.和..

-l(long) 顯示詳細信息

-R(recursive) 遞歸顯示當前目錄下所有目錄

-r (reverse) 逆序排序

-t(time) 按修改時間排序(降序)

英文:print working directory 命令路徑:/bin/pwd 執行許可權:所有用戶

作用:顯示當前工作目錄

語法:pwd [-LP]

-L 顯示鏈接路徑,當前路徑,默認

-P 物理路徑

eg:# cd /etc/init.d

英文:make directories 命令路徑:/bin/mkdir 執行許可權:所有用戶

作用:創建新目錄

語法:mkdir [-p] 目錄名

-p 父目錄不存在情況下先生成父目錄 (parents)

eg: mkdir linux/test 如果目錄linux不存在,則報錯,使用參數-p即可自動創建父目錄。

命令路徑:/bin/touch 執行許可權:所有用戶

作用:創建空文件或更新已存在文件的時間

語法:touch 文件名

eg:touch a.txt b.txt touch {a.txt,b.txt} 同時創建多個文件

創建帶空格的文件 eg:touch "program files" 在查詢和刪除時也必須帶雙引號

注意:生產環境中,文件名,一定不要加空格

英文: 命令路徑:/bin/cp 執行許可權:所有用戶

作用:復制文件或目錄

語法:cp [–rp] 源文件或目錄 目的目錄

-r -R recursive 遞歸處理,復制目錄

-p 保留文件屬性 (原文件的時間不變)

eg:

1,相對路徑 cp –R /etc/* . cp –R ../aaa ../../test/

2,,絕對路徑 cp –R / ect/service /root/test/aa/bb

英文:move 命令路徑:/bin/mv 執行許可權:所有用戶

作用:移動文件或目錄、文件或目錄改名

語法:mv 源文件或目錄 目的目錄

英文:remove 命令路徑:/bin/rm 執行許可權:所有用戶

作用:刪除文件

語法: rm [-rf] 文件或目錄

-r (recursive)刪除目錄,同時刪除該目錄下的所有文件

-f(force) 強制刪除文件或目錄 即使原檔案屬性設為唯讀,亦直接刪除,無需逐一確認

注意:工作中,謹慎使用rm –rf 命令。

擴展點 :刪除亂碼文件

一些文件亂碼後使用rm -rf 依然無法刪除

此時,使用ll -i 查找到文件的inode節點

然後使用find . -inum 查找到的inode編號 -exec rm {} -rf ;

就能順利刪除了

英文:concatenate 命令路徑:/bin/cat 執行許可權:所有用戶

作用:顯示文件內容

語法:cat [-n] [文件名]

-n 顯示行號

eg:cat /etc/services

命令路徑:/bin/more 執行許可權:所有用戶

作用:分頁顯示文件內容

語法:more [文件名]

空格或f 顯示下一頁

Enter鍵 顯示下一行

q或Q 退出

命令路徑:/usr/bin/head 執行許可權:所有用戶

作用:查看文件前幾行(默認10行)

語法:head [文件名]

-n 指定行數

eg:head -20 /etc/services head –n 3 /etc/services

命令路徑:/usr/bin/tail 執行許可權:所有用戶

作用:查看文件的後幾行

語法:tail [文件名]

-n 指定行數

-f (follow) 動態顯示文件內容

獲取一個大文件的部分文件,可使用head或tail命令

head -n 100 /etc/services >config.log

英文: link 命令路徑:/bin/ln 執行許可權:所有用戶

作用:產生鏈接文件

語法:

ln -s [源文件] [目標文件] 創建軟鏈接 源文件 使用 絕對路徑

ln [源文件] [目標文件] 創建硬鏈接

eg:ln -s /etc/service ./service.soft

創建文件/etc/service的軟鏈接service.soft

eg:/etc/service /service.hard

創建文件/etc/service的硬鏈接/service.hard

軟連接類似於windows下的快捷方式

軟連接文件格式:

lrwxrwxrwx. 1 root root 13 Jul 20 07:50 service -> /etc/services

1 硬鏈接數量,如果該文件沒有硬鏈接,就只有本身一個硬鏈接。

13鏈接文件的長度

格式解析(特徵):

1, 軟連接的文件類型是 l(軟連接),軟連接文件的許可權 都是 lrwxrwxrwx

2,-> 箭頭指向到源文件

真正的許可權取決於對源文件的許可權

時間值為創建軟連接的時間

軟連接可以跨文件系統生成

硬鏈接特徵

1,相當於 cp -p +同步更新

2,通過i節點識別,與源文件有相同的inode節點

3,硬鏈接不能跨分區,ln /home/test/issuels /boot/test (錯誤)

4,不能針對目錄使用 ln /tmp/ aa.hard (無法將目錄/tmp 生成硬鏈接)

刪除軟連接

rm -rf symbolic_name

英文:manual 命令路徑:/usr/bin/man 執行許可權:所有用戶

作用:獲取命令或配置文件的幫助信息

語法:man [命令/配置文件]

eg:man ls man services

(查看配置文件時,不需要配置文件的絕對路徑,只需要文件名即可)

調用的是more命令來瀏覽幫助文檔,按空格翻下一頁,按回車翻下一行,按q退出。

使用/加上關鍵的參數可直接定位搜索, n 查找下一個,shift+n 查找上一個

eg: /-l 直接查看-l的介紹

擴展:man的級別 (幫助文檔的類型, 了解1 5即可)

man man-pages 查看每一種類型代表的含義 man文檔的類型(1~9)

1是命令,5是配置文件 man優先顯示命令,可指定幫助類型

eg:man 5 passwd (5代表配置文件級別)

[圖片上傳失敗...(image-6718d2-1624438708895)]

help 查看shell內置命令的幫助信息

eg:help cd

內置命令,使用whereis,which,man都不能查看

type 命令 查看內部命令還是外部命令

命令名 --help 列舉該命令的常用選項

eg: cp --help

命令路徑:/bin/find 執行許可權:所有用戶

作用:查找文件或目錄

語法:find [搜索路徑] [匹配條件]

如果沒有指定搜索路徑,默認從當前目錄查找

find命令選項

-name 按名稱查找 精準查找

eg:find /etc -name 「init」 在目錄/etc中查找文件init

-iname 按名稱查找

find查找中的字元匹配:

*:匹配所有

?:匹配單個字元

eg:find /etc -name 「init???」 在目錄/etc中查找以init開頭的,且後面有三位的文件

模糊匹配的條件,建議使用單引號或雙引號括起來。如果*被轉義,可使用 單雙引號括住查詢條件,或者使用*。

eg: # find . –name *g

-size ****按文件大小查找

以block為單位,一個block是512B, 1K=2block +大於 -小於 不寫是等於

eg:find /etc -size -204800 在etc目錄下找出大於100MB的文件

100MB=102400KB=204800block

**-type ** 按文件類型查找

f 二進制文件l 軟連接文件 d 目錄 c 字元文件

eg: find /dev -type c

find****查找的基本原則

佔用最少的系統資源,即查詢范圍最小,查詢條件最精準

eg:

如果明確知道查找的文件在哪一個目錄,就直接對指定目錄查找,不查找根目錄/

命令路徑:/bin/grep 執行許可權:所有用戶

作用:在文件中搜尋字串匹配的行並輸出

語法:grep [-cinv] '搜尋字元串' filename

選項與參數:

-c :輸出匹配行的次數(是以行為單位,不是以出現次數為單位)

-i :忽略大小寫,所以大小寫視為相同

-n :顯示匹配行及行號

-v :反向選擇,顯示不包含匹配文本的所有行。

eg:grep ftp /etc/services

eg:#grep -v ^# /etc/inittab 去掉文件行首的#號

eg:# grep -n 「init」/etc/inittab 顯示在inittab文件中,init匹配行及行號

eg:# grep -c「init」/etc/inittab 顯示在inittab文件中,init匹配了多少次

命令路徑:/usr/bin/which 執行許可權:所有用戶

作用: 顯示系統命令所在目錄(絕對路徑及別名)

which命令的作用是,在PATH變數指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令

alias ls='ls --color=auto'

/bin/ls

/usr/bin/which: no zs in (/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/ch/bin)

命令路徑:/usr/bin/whereis 執行許可權:所有用戶

作用:**搜索命令所在目錄 配置文件所在目錄 及幫助文檔路徑 **

eg: which passwd 和 whereis passwd

eg:查看/etc/passwd配置文件的幫助,就用 man 5 passwd

英文:GNU zip 命令路徑:/bin/gzip 執行許可權:所有用戶

作用:壓縮(解壓)文件,壓縮文件後綴為.gz

gzip只能壓縮文件,不能壓縮目錄;不保留原文件

語法:gzip 文件

-d將壓縮文件解壓(decompress)

解壓使用gzip –d或者 gunzip

命令路徑:/usr/bin/bzip2 執行許可權:所有用戶

作用: 壓縮(解壓)文件,壓縮文件後綴為.bz2

語法:bzip2 [-k] [文件]

-k:產生壓縮文件後保留原文件(壓縮比高)

-d 解壓縮的參數(decompress)

解壓使用bzip2 –d或者 bunzip2

命令路徑:/usr/bin/zip 執行許可權:所有用戶

作用: 壓縮(解壓)文件,壓縮文件後綴為.zip

語法:zip 選項[-r] [壓縮後文件名稱] [文件或目錄]

-r壓縮目錄

eg:zip services.zip /etc/services 壓縮文件;

zip -r test.zip /test 壓縮目錄

如果不加-r選項,壓縮後的文件沒有數據。

解壓使用unzip

命令路徑:/bin/tar 執行許可權:所有用戶

作用:文件、目錄打(解)包

語法:tar [-zcf] 壓縮後文件名 文件或目錄

-c 建立一個壓縮文件的參數指令(create),後綴是.tar

-x 解開一個壓縮文件的參數指令(extract)

-z 以gzip命令壓縮/解壓縮

-j 以bzip2命令壓縮/解壓縮

-v 壓縮的過程中顯示文件(verbose)

-f file 指定文件名,必選項

1, 單獨的打包 ,解包 tar –cf tar –xf

2, 打包之後,進行壓縮 gzip bzip2

3, 一步到位 tar –zcvf tar -zxvf

tar -cf -xf 單獨 壓縮 解壓縮

tar -z 以gzip打包目錄並壓縮 文件格式.tar.gz(.tgz)

tar -j 以bzip2打包目錄並壓縮 文件格式.tar.bz2

eg:tar -zcvf dir1.tar.gzdir1 使用gzip將目錄dir1壓縮成一個打包並壓縮文件dir1.tar.gz

eg: tar -cvf bak.tar . 將當前目錄的文件打包為bak.tar

eg: tar -xvf bak.tar 解壓

eg: tar -zcvf bak.tar.gz bak.tar 或 gzip bak.tar使用gzip將打包文件bak.tar壓縮為bak.tar.gz

eg: tar -jcvf bak.tar.bz2 bak.tar 或 bzip2 bak.tar 使用bzip2將打包文件bak.tar壓縮為bak.tar.bz2

eg: tar -rvf bak.tar /etc/password 將/etc/password追加文件到bak.tar中(r)

eg:tar -cjvf test.tar.bz2 test 生成test.tar.bz2的壓縮文件

eg:tar -xjf test.tar.bz2 解壓

最常用: tar + gzip

tar –zcvf 壓縮

tar –zxvf 解壓

補充:

1,文件路徑, 壓縮包帶文件路徑

2,源文件是保留的,不會被刪除

**shutdown **[選項] 時間

選項: -c: 取消前一個關機命令

-h:關機

-r:重啟

eg:

shutdown -h now 立即關機 shutdown -h 20:30 定時關機

其他關機命令 halt poweroff init 0

其他重啟命令

**reboot **重啟系統 reboot -h now立即重啟

init 6

注意:生產環境中,關機命令和重啟命令謹慎執行。

善於查看man help等幫助文檔

利用好Tab鍵 自動補全

掌握好一些快捷鍵

ctrl + c(停止當前進程)

ctrl + z 掛起當前進程,放後台

ctrl + r(查看命令歷史) history

ctrl + l(清屏,與clear命令作用相同)

方向箭頭 上 下 可以查看執行過的命令

ctrl + a 行首 ctrl + e 行尾

ctrl + k 清除 ctrl+ w 清除單詞

vim/vi是Unix / Linux上最常用的文本編輯器而且功能非常強大。

只有命令,沒有菜單。

《大碗》編輯器版

周圍的同事不是用VI就是Emacs,你要是用UltraEdit都不好意思跟人家打招呼...什麼插件呀、語法高亮呀、拼寫檢查呀,能給它開的都給它開著,就是一個字:酷!你說這么牛X的一東西,怎麼著學會也得小半年吧。半年!?入門都遠著呢!能學會移動游標就不錯了,你還別說耗不起,就這還是左右移動!!!

:

[圖片上傳失敗...(image-a08366-1624438708894)]

命令模式:又稱一般模式

編輯模式:又稱底行模式,命令行模式

|

命令

|

作用

|
|

a

|

在游標後附加文本

|
|

A(shift + a)

|

在本行行末附加文本 行尾

|
|

i

|

在游標前插入文本

|
|

I(shift+i)

|

在本行開始插入文本 行首

|
|

o

|

在游標下插入新行

|
|

O(shift+o)

|

在游標上插入新行

|

|

命令

|

作用

|
|

:set nu

|

設置行號

|
|

:set nonu

|

取消行號

|
|

gg

G

|

到第一行

到最後一行

|
|

nG

|

到第n行

|
|

:n

|

到第n行

|

|

命令

|

作用

|
|

:w

|

保存修改

|
|

:w new_filename

|

另存為指定文件

|
|

:w >> a.txt

|

內容追加到a.txt文件中 文件需存在

|
|

:wq

|

保存修改並退出

|
|

shift+zz(ZZ)

|

快捷鍵,保存修改並退出

|
|

:q!

|

不保存修改退出

|
|

:wq!

|

保存修改並退出(文件所有者可忽略文件的只讀屬性)

|

不保存並退出:

1, 有修改,但是修改後的內容是不保存的

2, 有突發情況,導致窗口退出。修改文件之後,直接刪除同名的.swp文件

|

命令

|

作用

|
|

x

|

刪除游標所在處字元 nx 刪除游標所在處後n個字元

|
|

dd

|

刪除游標所在行,ndd刪除n行

|
|

:n1,n2d

|

刪除指定范圍的行(eg :1,3d 刪除了123這三行)

|
|

dG

|

刪除游標所在行到末尾的內容

|
|

D

|

刪除從游標所在處到行尾

|

|

命令

|

作用

|
|

yy、Y

|

復制當前行

|
|

nyy、nY

|

復制當前行以下n行

|
|

dd

|

剪切當前行

|
|

ndd

|

剪切當前行以下n行

|
|

p、P

|

粘貼在當前游標所在行下 或行上

|

|

命令

|

作用

|
|

r

|

取代游標所在處字元

|
|

R(shift + r)

|

從游標所在處開始替換字元,按Esc結束

|
|

u

|

undo,取消上一步操作

|
|

ctrl+r

|

redo,返回到undo之前

|

|

命令

|

作用

|
|

/string

|

向後搜索指定字元串 搜索時忽略大小寫 :set ic

|
|

?string

|

向前搜索指定字元串

|
|

n

|

搜索字元串的下一個出現位置,與搜索順序相同

|
|

N(Shift + n)

|

搜索字元串的上一個出現位置,與搜索順序相反

|
|

:%s/old/new/g

|

全文替換指定字元串

|
|

:n1,n2s/old/new/g

|

在一定范圍內替換指定字元串

|

% 指全文,s 指開始,g 指全局替換

eg: :41,44/yang/lee/c 從41行到44行,把yang替換為lee,詢問是否替換

eg: :41,44/yang/lee/g 同上,不詢問,直接替換

使用替換命令來添加刪除注釋

:% s/^/#/g 來在全部內容的行首添加 # 號注釋

:1,10 s/^/#/g 在1~10 行首添加 # 號注釋

vi裡面怎麼查命令??

:!which cp

vi裡面怎麼導入命令的結果?

:r !which cp

v 可視字元模式

V****(shift+v) 可視行模式,選擇多行操作

**ctrl+v **可視塊模式(列模式),操作列

I或者O進入插入模式。

1,圖形化界面

2,setup 命令虛擬界面

3,修改配置文件(以網路方式為NAT示例)

vi /etc/sysconfig/network-scripts/ifcfg-eth0

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.168.2.129

NETMASK=255.255.255.0

GATEWAY=192.168.2. 2 #網段2任意,IP地址2固定,網段為vmnet8的設置的IP網段

DNS1=114.114.114.114

DNS2=8.8.8.8

重啟網路生效:

service network restart

命令路徑:/bin/ping 執行許可權:所有用戶

作用:測試網路的連通性

語法:ping 選項 IP地址

-c 指定發送次數

ping 命令使用的是icmp協議,不佔用埠

eg: # ping -c 3 127.0.0.1

英文:interface configure 命令路徑:/sbin/ifconfig 執行許可權:root

作用:查看和設置網卡網路配置

語法:ifconfig [-a] [網卡設備標識]

-a:顯示所有網卡信息

ifconfig [網卡設備標識] IP地址 修改ip地址

英文:network statistics 命令路徑:/bin/netstat 執行許可權:所有用戶

作用:主要用於檢測主機的網路配置和狀況

-a all顯示所有連接和監聽埠

-t (tcp)僅顯示tcp相關選項

-u (udp)僅顯示udp相關選項

-n 使用數字方式顯示地址和埠號

-l (listening) 顯示監控中的伺服器的socket

eg:# netstat -tlnu 查看本機監聽的埠

tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN

協議 待收數據包 待發送數據包 本地ip地址:埠 遠程IP地址:埠

netstat –antpl

臨時生效:

hostname 主機名

[圖片上傳失敗...(image-ceed36-1624438708893)]

永久生效:修改配置文件

vi /etc/sysconfig/network

[圖片上傳失敗...(image-2b9d9e-1624438708893)]

修改主機名和ip地址之間的映射關系

vi /etc/hosts

192.168.2.120 node-1.e.cn node-1

可配置別名

[圖片上傳失敗...(image-ec86cf-1624438708893)]

進程和程序的區別:

1、程序是靜態概念,本身作為一種軟體資源長期保存;而進程是程序的執行過程,它是動態概念,有一定的生命期,是動態產生和消亡的。

2、程序和進程無一一對應關系。一個程序可以由多個進程共用;另一方面,一個進程在活動中有可順序地執行若干個程序。

進程和線程的區別:

進程: 就是正在執行的程序或命令,每一個進程都是一個運行的實體,都有自己的地址空間,並佔用一定的系統資源。

線程: 輕量級的進程;進程有獨立的地址空間,線程沒有;線程不能獨立存在,它由進程創建;相對講,線程耗費的cpu和內存要小於進程。

進程管理的作用?

判斷伺服器的健康狀態

查看系統所有的進程

殺死進程

作用:查看系統中的進程信息

語法:ps [-auxle]

常用選項

查看系統中所有進程

ps應用實例 # ps -u or ps -l 查看隸屬於自己進程詳細信息

作用: 查看當前進程樹

語法:pstree [選項]

-p 顯示進程PID

-u 顯示進程的所屬用戶

作用:查看系統健康狀態

顯示當前系統中耗費資源最多的進程,以及系統的一些負載情況。

語法:top [選項]

-d 秒數,指定幾秒刷新一次,默認3秒(動態顯示)

作用:關閉進程

語法:kill [-選項] pId

kill -9 進程號(強行關閉) 常用

kill -1 進程號(重啟進程)

添加用戶

語法:useradd [選項] 用戶名

修改密碼命令

語法:passwd [選項] [用戶名]

用戶密碼:生產環境中,用戶密碼長度8位以上,設置大小寫加數字加特殊字元,要定期更換密碼。

ys^h_L9t

刪除用戶

-r 刪除賬號時同時刪除宿主目錄(remove)

作用:用於查看Linux文件系統的狀態信息,顯示各個分區的容量、已使用量、未使用量及掛載點等信息。看剩餘空間

語法:df [-hkam] [掛載點]

-h(human-readable)根據磁碟空間和使用情況 以易讀的方式顯示 KB,MB,GB等 -k 以KB 為單位顯示各分區的信息,默認

-M 以MB為單位顯示信息 -a 顯示所有分區包括大小為0 的分區

作用:用於查看文件或目錄的大小(磁碟使用空間)

語法: [-abhs] [文件名目錄]

-a 顯示子文件的大小

-h以易讀的方式顯示 KB,MB,GB等

-s summarize 統計總佔有量

eg:
-a(all) /home 顯示/home 目錄下每個子文件的大小,默認單位為kb

-b /home 以bytes為單位顯示/home 目錄下各個子目錄的大小

-h /home 以K,M,G為單位顯示/home 文件夾下各個子目錄的大小

-sh /home 以常用單位(K,M,G)為單位顯示/home 目錄的總大小 -s summarize

df命令和命令的區別:

df命令是從文件系統考慮的,不僅考慮文件佔用的空間,還要統計被命令或者程序佔用的空間。

命令面向文件,只計算文件或目錄佔用的空間。

作用:查看內存及交換空間使用狀態

語法: free [-kmg]

選項:

-k: 以KB為單位顯示,默認就是以KB為單位顯示

-m: 以MB為單位顯示

-g: 以GB為單位顯示

清理緩存命令:

echo 1 > /proc/sys/vm/drop_caches

❹ 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

#!/bin/bashA=Becho"PIDfor1.shbeforeexec/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:$Ais$A"


2.sh

#!/bin/bash
echo"PIDfor2.sh:$$"
echo"2.shget$A=$Afrom1.sh"
A=C
exportA
echo"2.sh:$Ais$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+NGINX下的php shell_exec()函數執行linux命令 2019-08-08

LINUX+NGINX下的PHP shell_exec()函數執行linux命令

環境說明

手燃衫頭有一台linux的測試伺服器,最近因為業務需要,需要通過php訪問另一台伺服器去執行某些命令。

由於另一台伺服器已經對這台伺服器開了私鑰,所以在終端上是可以直接執行命令而不需要輸入密碼的。

問題

PHP無法使用exec命令,沒有任何返回值。

解決途徑

1.php.ini的配置有問題。

由於php是7.0以上的版本,取消了安全模式,所以考慮PHP.ini文件配置。

打開php配置文件,裡面有一行disabel_function的值,此處記錄了禁止運行的函數,在裡面講exec和shell_exec,system等函數刪除。

2.許可權問題

修改以後PHP可以運行部分命令了,但是部分外部程序和命令仍然不能運行。使用sudo返回失敗。

於是運行「whoami」查看,環境下php-frm的運行角色鎮段唯是www。

於是修改sudoers文件。

vi /etc/sudoers

將www添加到

## Allow root to run any commands anywhere

root ALL=(ALL) ALL

下面:

## Allow root to run any commands anywhere

root ALL=(ALL) ALL

www ALL=(ALL) NOPASSWD:ALL

然後找到Default requiretty這一行,把他注釋掉

# Default requiretty

ps:意思就是sudo默認需要tty終端,注釋掉就可以在後台執行了.

重啟nginx和php-fpm

service nginx restart

service php-fpm restart

這樣,PHP就可以在需要御培執行外部命令的時候使用sudo利用root身份執行命令,而不會報錯或者執行失敗了!

❻ 關於Linux的shell的exec命令

wall是向所有登錄系統的用戶發送信息,消息的內容是 "Thanks for all the fish" , 相當於簡訊群發。
exec 3<afile 打開文件afile,文件描述符是3,然後這個3就可以代表文件afile,比如
cat <&3 查看文件afile的內容

熱點內容
e卡通初始密碼是多少 發布:2025-02-01 10:31:55 瀏覽:127
phppost上傳文件 發布:2025-02-01 10:26:42 瀏覽:105
伺服器不能寫入ip地址 發布:2025-02-01 10:18:56 瀏覽:129
青驕如何重置賬號密碼 發布:2025-02-01 09:57:51 瀏覽:520
阿里雲伺服器鏡像市場 發布:2025-02-01 09:46:04 瀏覽:525
任子行伺服器管理口默認地址 發布:2025-02-01 09:42:58 瀏覽:996
設備作為FTP客戶端時 發布:2025-02-01 09:35:07 瀏覽:936
安卓如何登錄ios明日之後 發布:2025-02-01 09:31:59 瀏覽:306
怎麼查看手機存儲卡 發布:2025-02-01 09:31:51 瀏覽:341
java知識點總結 發布:2025-02-01 09:08:32 瀏覽:685