GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie richte ich einen Anzeigetisch schön aus?

Ich versuche, ein Skript zu erstellen, das als ps-Befehl mit eigenen Eigenschaften fungiert, die ich anzeigen möchte. Sagen wir, so würden Prozesse im ps-Befehl aussehen:

sas 24431     1  0 Oct10 ?        00:51:08 /usr/lib/jvm/java-1.7.0-oracle-1.7.0.25.x86_64/jre/bin/java -Denv=DEV -Dapp.name=myApp -Xms512m -Xmx1g -Dlog.dir=/apps/java/logs

Ich möchte wie folgt anzeigen:

UID  PID    APPNAME
sas  24431  -Dapp.name=myApp
sas  24432  -Dapp.name=myApp2
sas  24433  -Dapp.name=myApp3

Hinweis: der app.name Eigenschaft ist ein Befehlsargument, das aus dem Befehl ps extrahiert wird

Dies ist mein Skript:

echo -e "PIDtUSERIDttAPPNAME"
ps -u $USER -f |grep "java"|grep -v "grep"|
while read LINE 
do 
  #Get pid from the line
  PID=$(cut -d" " -f2 <<< $LINE);
  #Get parameter value called "-Dapp.name or -DprojectName" 
  #from the ps command for the process
  APPNAME=$(ps -f $PID | awk 'BEGIN {RS=" "}; /-Dapp.name|-DprojectName/');
  USERID=$(cut -d" " -f1 <<< $LINE);

 echo -e $PID"t"$USERID"t"$APPNAME;
done;

Im Moment funktioniert es so wie ich es will. Aber manchmal wird die Ausrichtung geschraubt. Kann dieses Skript auch in einen Einzeilenbefehl optimiert werden?

Jede Hilfe wäre willkommen.

Akzeptierte Antwort:

Kann dieses Skript auch in einen Einzeilenbefehl optimiert werden?

Ich würde die Verwendung des -o in Betracht ziehen Option des ps Befehl, (soweit möglich) nur die interessierenden Felder auszugeben und diese dann nachzubearbeiten, damit sie mit java übereinstimmen Prozesse und bestimmte Befehlsargumente, die Sie benötigen – so etwas wie

ps -u $USER -o uname=,pid=,args= | 
  gawk -vOFS='t' '/java/ {print $1,$2,substr($0,match($0,"-D(app[.]name)|(projectName)[^[:space:]]*"),RLENGTH)}'

oder vielleicht so etwas in perl (HAFTUNGSAUSSCHLUSS:Meine Perl-Kenntnisse sind lückenhaft )

ps -u $USER -o uname=,pid=,args= | 
  perl -anle 'print join "t", @F[0], @F[1], grep /-D(app[.]name)|(projectName)/,@F if /java/'

Linux
  1. So verwenden Sie den Su-Befehl unter Linux

  2. So verwenden Sie den Befehl type (Informationen zum Befehl anzeigen) unter Linux

  3. Wie plane ich einen Rsync-Befehl?

  4. So zeigen Sie die Routing-Tabelle in Linux an

  5. Wie zeige ich den aktuellen Pfad in der Eingabeaufforderung in Linux sh (nicht bash) an?

So zeigen Sie den Bash-Verlauf ohne Zeilennummern an

So zeigen Sie System- und Hardwaredetails in CentOS 8 an

So zeigen Sie GIF-Dateien im Ubuntu-Terminal an

So zeigen Sie zwei Dateien nebeneinander in Linux an

So verwenden Sie den PS-Befehl

So verwenden Sie den TOP-Befehl