查看shell腳本
1. 如何編寫一個shell腳本查看某個進程是否在運行
1 、編寫一個shell腳本來查看某個進程是否在運行,用戶可以通過ps命令獲取所有的進程,然後通過awk命令提取進程名,再用grep提取相應的進程名即可。
2、參考代碼如下:
ps-aux|awk'{print$11}'|grep"^$1">/dev/null
case$?in
0)
echo"findprocess$1"
;;
1)
echo"$1isnotrunning"
;;
*)
echo"unknowerror"
esac
3、腳本運行結果如下
2. shell腳本
牙叔教程 簡單易懂
用autojs執行shell腳本, 腳本所在目錄為 /data/local/tmp
做息屏運行腳本, 要用到類似的方法,
比如息屏使用adb去調用dex文件, 來達到息屏效果,
兩者相同的地方是
手機: Mi 8
Android版本: 10
Autojs版本: 9.0.10
非常不幸, 沒有許可權, 復制文件失敗,
所以我們需要要提高許可權, Shizuku 可以提升我們的許可權到adb級別,
Shizuku的使用請查閱上一篇教程, 激活Shizuku
將許可權提升為adb級別之後, 我們重新復制文件
首先, 檢查有沒有adb許可權
復制文件
查看文件yashu.sh許可權
可以看到許可權是-rw-rw----, 沒有執行許可權, 接下來, 我們就添加執行許可權
code=0, 0表示沒有發生錯誤, 沒有錯誤就意味著, 命令正常執行,
再次查看文件yashu.sh許可權
可以看到許可權是-rwxrwx--x, 有了執行許可權, 接下來, 我們就執行這個shell腳本
shell腳本內容
執行shell腳本的命令
息屏運行腳本使用到的命令與執行shell腳本類似, 這也是我寫這篇教程的原因,
方便以後復制黏貼
思路是最重要的, 其他的網路, bing, stackoverflow, github, 安卓文檔, autojs文檔, 最後才是群里問問
--- 牙叔教程
部分內容來自網路
本教程僅用於學習, 禁止用於其他用途
3. 查看linux內存使用情況的shell腳本
在
linux
中,/proc/$PID/status
文件提供了該進程資源(內存,堆棧,信號量,子父進程)的使用情況,雖然linux提供了不少查看內存的命令,但都是看整體的使用情況,無法對單個進程的內存使用情況進行查看。
本文為大家提供的這個腳本,通過查看status文件中VmRSS的欄位來查看系統或進程使用的內存情況,有需要的朋友不妨參考下。
復制代碼:
#!
/bin/bash
echo
-n
PidName
>
/root/script/pid.f
echo
MeMery
>>
/root/script/pid.f
PIDPATH=/proc/
TOTLE=0
cd
$PIDPATH
DOC=`ls`
for
DOCNAME
in
$DOC
do
if
[
-d
$DOCNAME
];
then
cd
$DOCNAME
if
[
-f
status
];then
MEMERY=`grep
VmRSS
status
|
awk
-F':'
'{print
$2}'
|
awk
'{print
$1}'`
PIDNAME=`grep
Name
status
|
awk
-F':'
'{print
$2}'`
if
[
$MEMERY
];
then
echo
-n
$PIDNAME
>>
/root/script/pid.f
echo
-n
>>
/root/script/pid.f
echo
$MEMERY
>>
/root/script/pid.f
TOTLE=`expr
$TOTLE
+
$MEMERY`
cd
..
else
cd
..
fi
else
cd
..
fi
fi
done
TOTLE=`expr
$TOTLE
/
1024`
echo
TOTLE
USERD:
$TOTLE
MB
>>
/root/script/pid.f
cat
/root/script/pid.f
4. 如何查看shell腳本是否正常運行,跪求liunx大神
因為不知道你的是什麼腳本,不好判斷。
bash -x 檢測整個腳本實際運行過程是否正確
對腳本執行加以監控,你可以通過在腳本中加入一些腳本執行狀態結果的語句比如導出個日誌文件啦,或者對執行結果進行判斷啦,如果腳本是駐留在進程里,判斷進程中是否有腳本啦,然後給你發個執行結果郵件。還是得根據實際情況寫。
5. Shell腳本
因為-c的意思是command,所以bash -c後面應該跟一個command。
shell運行腳本的兩種方法:
1、bash xx.sh
2、bash -c "cmd string"
使用bash -c需要注意兩點:
1、bash -c "cmd string"接的是shell命令字元串,用雙引號括起來
2、bash -c "/path/to/file"接的是文件絕對路徑,用雙引號括起來,並且文件需要可執行許可權
參考鏈接:
1.1、 linux shell -c,【bash】關於shell中 bash -c 執行命令或者可執行文件
1.2、 【bash】關於shell中 bash -c 執行命令或者可執行文件
示例:/usr/libexec/PlistBuddy -c "cmd string"
參考鏈接: XCode添加自定義Run Script Phase
由於PlistBuddy並不在Mac默認的Path里,所以我們得通過絕對路徑來引用這個工具:
參考鏈接: PlistBuddy簡單使用
6. 第七章 SHELL腳本
在linux里可以直接使用shell腳本進行管理,shell就是命令解釋器,把用戶的命令翻譯成機器語言,在把機器語言翻譯成人類語言返回給用戶。
shell有Bshell和Cshell區分,經常在linux裡面用的shell都是Bshell,Bshell和Cshell完全不兼容。我在Centos裡面看見支持的幾種shell解釋器有sh,bash,csh。然後用的最多的就是base(標准shell)。
shell腳本可以添加執行許可權,然後在base命令界面直接輸入腳本路徑即可執行;所有的腳本開頭要聲明腳本shell,常見的聲明是#!/bin/bash,其他的還有#!/bin/sh,#!/bin/csh
寫第一個shell腳本吧
可以使用alias命令查看系統當前的別名,也可以用alias 別名=『真實命令』 來執行;
重定向輸出是將輸出到標准輸出設備的數據重新定向到另一個地方;
將標准(鍵盤)輸入重定向到其他一個設備上;
格式:命令1 | 命令2
表示把命令1的執行結果當成命令2的執行條件
跟正則表達式不一樣啊,剛才的grep -P就是使用正則,但是這里通配符比較簡單啊。
用引號表示,其中單引號標識不解析字元串中的特殊字元,雙引號則解析特殊字元。
如果字元串中有存在$(ls)這種,那麼這個表示ls命令的執行結果啊
當然這也可以用\進行轉義
7. Linux Shell腳本的執行過程
用戶登錄時,將會取得一個 bash ,這個 bash 在系統中有一個全局唯一的ID,也就是進程的ID,使用命令 ps -ef 並配合 grep 來查看進程ID。 ps -ef|grep bash ,此命令還能查看進程對應的父進程ID,系統中所有進程的祖先進程都是INIT進程(進程ID=1),它是最先啟動運行的。
回到 bash 進程,也就是我們的命令行界面,進程的執行都有其附屬的執行環境,環境變數就屬於其中之一。並且環境變數是可以完全被子進程繼承的,也就是說,子進程可以使用父進程的環境變數,但是不能使用父進程的自定義變數。
簡而言之: 子進程繼承父進程的環境變數,不繼承父進程的自定義變數。
shell腳本有4種執行方式,不同的執行方式可能導致結果不一致
四種方式的執行結果如下: