Можно отправить сообщение во все консоли со стеной команды.
Для отправки уведомлений под X существует, уведомляют - отправляют, который отправляет уведомление текущему пользователю на текущем дисплее. (От Вашего вопроса я предполагаю, что Вы уже знаете этого.) Можно положиться на это с некоторыми сценариями удара. В основном необходимо узнать, какие пользователи включены который X-дисплеи. После того как Вы получили эту информацию, которую можно использовать, уведомляют - отправляют как это:
DISPLAY=:0 sudo -u fschmitt notify-send "Message"
Где fschmitt является пользователем в дисплее 0. Можно проанализировать вывод, "кто" управляет для нахождения всех пользователей и их дисплеев. Вывод похож на это
[edinburgh:~]$ who
markmerk3 tty7 2010-09-23 10:59 (:0)
markmerk3 pts/1 2010-09-30 13:30 (:0.0)
fschmitt pts/2 2010-10-08 11:44 (ip-77-25-137-234.web.vodafone.de)
markmerk3 pts/0 2010-09-29 18:51 (:0.0)
seamonkey pts/6 2010-09-27 15:50 (:1.0)
markmerk3 pts/5 2010-09-27 14:04 (:0.0)
seamonkey tty8 2010-09-27 15:49 (:1)
markmerk3 pts/13 2010-09-28 17:23 (:0.0)
markmerk3 pts/3 2010-10-05 10:40 (:0.0)
Вы видите, существует два пользователя, выполняющие X сессий, markmerk3 в дисплее 0 и seamonkey в дисплее 1. Я думаю, что Вам нужно к grep для tty [0-9] * затем, гарантирует, что в конце строки существует (: [0-9]. *) избавиться от консольных логинов и извлечь идентификатор дисплея из строки между круглыми скобками.
mpirun
вероятно, использование execv()
звоните для запущения программы вместо execvp()
один (который искал бы его в PATH
).
Первое обходное решение: спросите оболочку к поиску для команды отдельно:
mpirun -np 4 $(which PyroDist) -in C005.dat -out foo
Иначе: два (не настолько хороший) обходные решения я могу думать:
Использовать /usr/bin/env
с аргументом PyroDist
, но это требует этого mpirun
позволяет передавать аргументы наряду с программой так или иначе.
Запишите свою собственную обертку как:
#!/bin/sh
PyroDist
и поместите его куда-нибудь с “фиксированным” относительным путем.
execv()
мятежникexecvp()
? Я был бы предварительный друг перекомпилировать mpi для поддержки последнего, если это помогает. Предложенные обходные решения не помогут мне, так как это - только один бит большой платформы (QIIME) и существует много программ как PyroDist и также, mpirun убран в нескольких обертках. глюк – Martin 06.10.2011, 14:07