Bash Script - تشغيل المثيل الحالي أو الجديد للتطبيق
سؤال
لقد قمت بإضافة اختصار لتطبيق في أوبونتو.في كل مرة أضغط فيها على مفاتيح الاختصار، يتم إنشاء مثيل جديد للتطبيق.أحتاج إلى مثيل واحد فقط، ما البرنامج النصي الذي يمكنني استخدامه لفتح المثيل الحالي للتطبيق أو إنشاء مثيل جديد إذا لم يكن التطبيق قيد التشغيل؟
المحلول
ذلك يعتمد بشكل كبير على التطبيق.الحالة الأكثر تافهة هي اسم العملية المعروفة التي لا يمكن تشغيلها إلا بواسطتك (أي لا توجد مثيلات ضالة على النظام):
pidof applicaton || /usr/bin/application
قد يكون فتح تطبيق موجود أمرًا صعبًا، ومرة أخرى، يعتمد ذلك على التطبيق.أقترح عليك إلقاء نظرة على com.alltray شيء وإيلاء اهتمام خاص ل alltray --help
انتاج.
تحرير بواسطة ypnos:إذا كنت تريد قصر هذا على المستخدم الحالي فقط، فيجب عليك استخدام pgrep بدلاً من pidof، مثل هذا:
pgrep -u `id -u` application || application
نصائح أخرى
ويمكنك أيضا محاولة نصي مثل هذا:
#! /bin/bash
user=`id -un`
lock=/tmp/$user-$1-lock
if [ -e $lock ]; then
exit #app is already running
fi
touch $lock
$@
rm $lock
إذا دعا البرنامج النصي 'runner.sh "، يمكنك استخدام مثل هذا:
runner.sh xcalc
هل في الحالات التي لا يعمل pidof. آخر يذهب لحل القراصنة، والذي هو أيضا أكثر قوة.