কোনও প্রোগ্রাম চলছে কিনা বা ব্যবহারকারী ইনপুট চাইছে কীভাবে তা বলবেন
এটি প্রোগ্রাম এবং আপনি কীভাবে আহ্বান করবেন তার উপর নির্ভর করে।
প্রায়শই তবে সর্বদা একটি প্রম্পট থাকে না, এটি নির্দেশ করে যে প্রোগ্রামটি ইনপুট চেয়েছে।
আপনি যদি নিশ্চিত না হন তবে আপনি প্রোগ্রামটির প্রক্রিয়াটি ব্যস্ত কিনা তা পরীক্ষা করে দেখতে পারেন
এবং প্রোগ্রামটি শেষ হয়ে গেলে, আপনি শেলের প্রম্পটটি দেখতে পাবেন।
হোস্টনেম running
আমার কাছে একটি শেলসক্রিপ্ট ছিল যা পরীক্ষা করে দেখেছে যে কোনও প্রোগ্রাম চলছে কিনা এবং এখন ... সন্ধান পেলে আমি -s
এটি চালানোর জন্য বিকল্পটি যোগ করেছি sudo strace -f -p <PID>
(সার্জি কোলোডিয়াজনির উত্তর অনুসারে)।
শেলস্ক্রিপ্ট ব্যবহার করে
ব্যবহার
$ ./running
Usage: ./running <program-name>
./running <part of program name>
Examples: ./running firefox
./running term # part of program name
./running dbus
./running 'dbus-daemon --session' # words with quotes
./running -v term # verbose output
./running -s term # strace checks activity
আপনি যদি শেলসক্রিপ্টটি running
কোনও ডিরেক্টরিতে PATH
এটি সহজে অ্যাক্সেস করতে চান তবে ইনস্টল করতে পারেন।
শেলসক্রিপ্ট কোড
#!/bin/bash
# date sign comment
# 2019-02-14 sudodus version 1.0
verbose=false
strace=false
if [ "$1" == "-v" ]
then
verbose=true
shift
fi
if [ "$1" == "-s" ]
then
strace=true
shift
fi
if [ $# -ne 1 ]
then
echo "Usage: $0 <program-name>
$0 <part of program name>
Examples: $0 firefox
$0 term # part of program name
$0 dbus
$0 'dbus-daemon --session' # words with quotes
$0 -v term # verbose output
$0 -s term # strace checks activity"
exit
fi
inversvid="\0033[7m"
resetvid="\0033[0m"
redback="\0033[1;37;41m"
greenback="\0033[1;37;42m"
blueback="\0033[1;37;44m"
runn=false
#tmpfil=$(mktemp)
tmpdir=$(mktemp -d)
tmpfil="$tmpdir/tmpfil"
vtfile="$tmpdir/vtfile"
vthead="$tmpdir/vthead"
# check by systemctl
systemctl is-active --quiet "$1"
if [ $? -eq 0 ]
then
echo "systemctl is-active:"
runn=true
fi
# check by ps
ps -ef | tr -s ' ' ' ' | cut -d ' ' -f 8- | grep "$1" | grep -vE -e "$0 *$1" -e "$0 *.* *$1" -e "grep $1" | sort -u > "$tmpfil"
#cat "$tmpfil"
if $verbose || $strace
then
ps -ef |head -n1 > "$vthead"
ps -ef | grep "$1" | grep -vE -e "$0 *.* *$1" -e "grep $1" | sort -u > "$vtfile"
fi
tmpstr=$(head -n1 "$tmpfil")
#echo "tmpstr=$tmpstr"
tmpess=$(grep -om1 "$1" "$tmpfil")
#echo "tmpess=$tmpess"
if [ "$tmpstr" == "$1" ] || [ "${tmpstr##*/}" == "$1" ] || [ "${1##*/}" == "${0##*/}" ] || [ "$tmpess" == "$1" ]
then
echo "ps -ef: active:"
runn=true
if $verbose
then
cat "$vthead" "$vtfile"
fi
elif test -s "$tmpfil"
then
if $runn
then
echo "----- consider also ------------------------------------------------------------"
if $verbose
then
cat "$vthead" "$vtfile"
else
cat "$tmpfil"
fi
echo "--------------------------------------------------------------------------------"
else
echo "----- try with: ----------------------------------------------------------------"
if $verbose
then
cat "$vthead" "$vtfile"
else
cat "$tmpfil"
fi
echo "--------------------------------------------------------------------------------"
fi
fi
if $runn
then
echo -en "$greenback '$1"
if [ "$tmpstr" != "$tmpess" ]
then
echo -n " ..."
fi
echo -e "' is running $resetvid"
if $strace
then
which xterm
if [ $? -eq 0 ]
then
pid=$(head -n1 "$vtfile" | sed 's/^ *//' | tr -s ' ' '\t' | cut -f 2)
echo "checking pid=$pid; quit with 'ctrl + c' in the xterm window"
xterm -title "'strace' checks '$1'" 2> /dev/null -e sudo strace -f -p $pid
else
echo "Please install 'xterm' for this function to work"
exit
fi
fi
else
inpath=$(which "$1")
if [ "$inpath" == "" ]
then
echo -e "$redback no path found to '$1' $resetvid"
else
echo -e "$blueback '$1' is not running $resetvid"
fi
fi
rm -r "$tmpdir"
ডেমো
লুবুন্টুতে টার্মিনাল উইন্ডোগুলি পরীক্ষা করা হচ্ছে (এলএক্সটার্মিনালটি x-terminal-emulator
কাস্টম gnome-terminal
উইন্ডো হিসাবে শুরু হয়েছিল ),
$ running -v -s term
----- try with: ----------------------------------------------------------------
UID PID PPID C STIME TTY TIME CMD
sudodus 2087 1384 0 13:33 ? 00:00:00 x-terminal-emulator
sudodus 2108 1269 0 13:33 ? 00:00:17 /usr/lib/gnome-terminal/gnome-terminal-server
--------------------------------------------------------------------------------
no path found to 'term'
$ running -v -s x-terminal-emulator
ps -ef: active:
UID PID PPID C STIME TTY TIME CMD
sudodus 2087 1384 0 13:33 ? 00:00:00 x-terminal-emulator
'x-terminal-emulator' is running
/usr/bin/xterm
checking pid=2087; quit with 'ctrl + c' in the xterm window
টার্মিনাল উইন্ডোতে কার্সারটি হওয়ার সাথে সাথে সেখানে প্রচুর ক্রিয়াকলাপ ঘটে।
শুরু হচ্ছে grep
(এর থেকে ইনপুটটির জন্য অপেক্ষা করছে /dev/stdin
)
$ grep -i --color 'hello'
asdf
Hello World
Hello World
এটি চেক করা হচ্ছে
$ running -s grep
ps -ef: active:
'grep ...' is running
/usr/bin/xterm
checking pid=14982; quit with 'ctrl + c' in the xterm window
খুব বেশি ক্রিয়াকলাপ নেই এবং আপনি যা ঘটছে তা সনাক্ত করতে পারেন।
PS1
প্রম্পট পাবেন না ।