1. 程式人生 > >Android之在linux終端執行shell指令碼直接列印當前執行app的日誌

Android之在linux終端執行shell指令碼直接列印當前執行app的日誌

1、問題

我們一般很多時候會需要在ubuntu終端上列印當前執行app的日誌,我們一般常見的做法是

1)、獲取包名

      開啟當前執行的app,然後輸入如下命令,然後在第一行TASK後面的就可以看到包名

adb shell dumpsys activity top

2)、我們的終端安裝了pidcat.py指令碼,然後執行如下的命令就可以列印當前執行app的全日誌,

pidcat.py packageName

3)、思考,為什麼每次都需要這樣重複的操作呢?一說到重複,我們應該立馬想到是否可以用指令碼解決重複操作

2、解決辦法

通過執行指令碼檔案獲取包名,然後再執行pidcat.py packageName命令

3、程式碼實現

1)、新建pcat檔案
#!/bin/bash

dev="device"

devices=$(adb devices)

if [[ ${devices} == *$dev ]]
then
   echo "手機已經連線好終端"
   info=$(adb shell dumpsys activity top | awk -F " " '/TASK/ {print $2}')
   echo "當前執行app的包名是:${info}"
   pidcat.py --hw ${info}
else
  echo "手機沒有連線好終端"
fi


2)、把pcat檔案複製到下面目錄

/usr/local/bin/

4、測試結果

1)、開啟手機"遊戲中心"的app

2)、在終端輸入pcat

3)、終端執行結果

*****~$ pcat 
手機已經連線好終端
當前執行app的包名是:com.huawei.gamebox
                 Zygote  D  CtrlSocket libc.so ctrl_sockets_set_addr pfunc is not exist!

                            Process com.huawei.gamebox created for activity com.huawei.gamebox/.GameBoxActivity
                            PID: 29758   UID:    GIDs: 

         ActivityThread  D  ActivityThread,attachApplication
                 HwCust  D  Create obj success use class android.content.res.HwCustHwResourcesImpl
          AnalyticUtils  D  experience = 1
       StoreApplication  D  create application.
        HwPolicyFactory  V  : success to get AllImpl object and return....
        HwWidgetFactory  V  : successes to get AllImpl object and return....
         ActivityThread  V  ActivityThread,callActivityOnCreate

5、總結

重複的操作我們可以用指令碼解決問題,提高開發效率,要記得用這個之前確保你的終端能執行pidcat

相關推薦

Androidlinux終端執行shell指令碼直接列印當前執行app日誌

1、問題我們一般很多時候會需要在ubuntu終端上列印當前執行app的日誌,我們一般常見的做法是1)、獲取包名      開啟當前執行的app,然後輸入如下命令,然後在第一行TASK後面的就可以看到包名adb shell dumpsys activity top2)、我們的終

Linux學習2shell指令碼計算程式碼段執行的時間(精確到毫秒)

簡潔且成功的程式碼: [email protected]:~/cloud/adam/xubo/data/test20160310/test$ cat a.sh #!/bin/bash startTime=`date +"%s.%N"` #bwa aln .

linux下使用shell指令碼開啟多個terminal並在其中執行程式的方法

gnome-terminal(是一種模擬終端器,一說是ubuntu的terminal就叫gnome-terminal)命令用於開啟一個新的終端,直接在命令列 $ gnome-terminal 就可以開啟一個新的終端,有一些常用引數: 開啟後自動最大化 $ gnome-terminal --maxim

linux下使用shell指令碼獲取終端寬度

獲取終端大小時候的學習 學習日期:2018/11/3 問題來源: 在寫shell指令碼時想輸出一行佔滿整個終端螢幕寬度的 橫槓 發現for迴圈會導致執行緩慢 解決方法: 使用yes 命令 sed '50q' 顯示50行 tr -d '\n' 刪除 \n 多次重複輸入相同字元可用yes yes "

Linux Centos7通過shell指令碼來監控mysql的執行狀態

vim checkmysql.sh #!/bin/sh #create by mingongge at 2018-10-10 port=`netstat -lnt|grep 3306|wc -l` if  [ $post -ne 1 ] ;then    now

通過Linux定時任務加shell指令碼檢測RabbitMQ消費者執行狀況以及自啟

目的:防止RabbitMQ消費者程序中斷影響業務 1、編寫 rabbitmq_consumer.php消費者檔案 (關於消費者和生產者請移步:https://blog.csdn.net/why444216978/article/details/84987011) 2、編寫she

linux中利用shell指令碼條件執行linux命令

linux中利用shell指令碼條件執行命令 在linux環境中,我們總會有一些命令需要經常用,例如經常跳轉到某些目錄下或者執行某些命令,輸入一連串的命令是很煩的,此時我們可以預先寫一些指令碼然後根據我們的選擇自動執行命令,那豈不是完美,本指令碼就是為此而生的(以跳轉不

sh命令 /Linux執行shell指令碼的4種方法總結

bash shell 指令碼的方法有多種,現在作個小結。假設我們編寫好的shell指令碼的檔名為hello.sh,檔案位置在/data/shell目錄中並已有執行許可權。 方法一:切換到shell指令碼所在的目錄(此時,稱為工作目錄)執行shell指令碼:此種方法為阿里雲推

Linux安裝nginx(shell指令碼)&軟體安裝nginx

1.編寫installNginx.sh檔案 #!/bin/bash mydir=`pwd` if [ ! -f "$mydir/nginx-1.10.2.tar.gz" ];then

Linux下使用shell指令碼自動執行指令碼檔案

一、定時複製檔案   a、在/usr/local/wfjb_web_back目錄下建立 tomcatBack.sh檔案   檔案內容: ? 1 2 #將tomcat中的應用wfjb_web 複製到 /usr/local/wfjb_web_bac

linux定時執行shell指令碼

寫一個shell指令碼,定時執行簡單示例 很多時候我們有希望伺服器定時去執行一個指令碼來觸發一個操作,比如說定時去備份伺服器資料、資料庫資料等 不適合人工經常做的一些操作這裡簡單說下 Shell俗稱殼,類似於DOS下的command和後來的cmd.exe。它接收使用者

Linux shell指令碼使用while迴圈執行ssh的注意事項

如果要使用ssh批量登入到其它系統上操作時,我們會採用迴圈的方式去處理,那麼這裡存在一個巨大坑,你必須要小心了。 一、場景還原: 我現在是想用一個指令碼獲取一定列表伺服器的執行時間,首先我建立一個名字為ip.txt的IP列表(一個IP一行),再建好金鑰實現不用密碼直接登入。然後寫指令碼如下: [co

使用crontab,讓linux定時執行shell指令碼

使用crontab你可以在指定的時間執行一個shell指令碼或者一系列Linux命令。例如系統管理員安排一個備份任務使其每天都執行 入門 # crontab –e 這樣可以已編輯模式打開個人的crontab配置檔案,然後加入一下這行: 0 0 * * * /home

android手機上執行shell指令碼

public class MainActivity extends AppCompatActivity { TextView editText; @Override public void onCreate(Bundle savedInstanceState) {

一個簡單的linux下設定定時執行shell指令碼的示例

很多時候我們有希望伺服器定時去執行一個指令碼來觸發一個操作,比如說定時去備份伺服器資料、資料庫資料等 不適合人工經常做的一些操作這裡簡單說下 shell Shell俗稱殼,類似於DOS下的command和後來的cmd.exe。它接收使用者命令,然後呼叫相應的應用程式。作為命

linux 定時執行shell指令碼 定時任務

在oracle 中可以利用dbms_job包定時執行pl/sql、sql過程,在像備份等需要在作業系統級定時任務只能採用crontab來完成 本文講述crontab具體用法,以供備忘. 在oracle 中可以利用dbms_job包定時執行pl/sql、sql過程,在

Linux執行shell指令碼的4種方法總結

這篇文章主要介紹了Linux中執行shell指令碼的4種方法總結,即在Linux中執行shell指令碼的4種方法,需要的朋友可以參考下bash shell指令碼的方法有多種,現在作個小結。假設我們編寫好的shell指令碼的檔名為hello.sh,檔案位置在/data/sh

shell指令碼直接執行和crontab結果不一樣

問題描述: 案例1. 以前寫了個更新svn然後cp到別外一個目錄(簡稱目錄a)的指令碼,達到另外一個目錄的程式定期svn同步的效果。(當然,你可能要問為啥目錄a不裝個svn up,這個你可以先不管) 指令碼寫好後,執行沒有問題,結果放到crontab中定時跑,卻怎麼也不行

linux crontab執行shell指令碼中包含相對路徑的問題

例項一 test.sh檔案 echo `date`>test.log 配置crontab 設定 */1 * * * * sh /data/test.sh 在/data/目錄下,未找到test.log檔案,重啟了crontab服務,service cronb rest

Linux執行Shell 指令碼的方式(三種方法)

Shell 指令碼的執行方式通常有如下三種: (1)bash script-name 或者 sh script-name;(2)path/script-name或者./script-name;(3)sourcescript-name或者. script-name。下面,分別