Bash Script - تشغيل المثيل الحالي أو الجديد للتطبيق

StackOverflow https://stackoverflow.com/questions/1423521

  •  07-07-2019
  •  | 
  •  

سؤال

لقد قمت بإضافة اختصار لتطبيق في أوبونتو.في كل مرة أضغط فيها على مفاتيح الاختصار، يتم إنشاء مثيل جديد للتطبيق.أحتاج إلى مثيل واحد فقط، ما البرنامج النصي الذي يمكنني استخدامه لفتح المثيل الحالي للتطبيق أو إنشاء مثيل جديد إذا لم يكن التطبيق قيد التشغيل؟

هل كانت مفيدة؟

المحلول

ذلك يعتمد بشكل كبير على التطبيق.الحالة الأكثر تافهة هي اسم العملية المعروفة التي لا يمكن تشغيلها إلا بواسطتك (أي لا توجد مثيلات ضالة على النظام):

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. آخر يذهب لحل القراصنة، والذي هو أيضا أكثر قوة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top