Проблема при запуске vncserver через cronjob - PullRequest
0 голосов
/ 27 мая 2020

Следующий сценарий, который я использую для запуска vn c,

cd $HOME; vncserver -kill :12 
cd $HOME; vncserver :12 -geometry 1280x1024 -name myvnc --alwaysshared

Он работает, когда я запускаю с терминала, но выдает ошибку при запуске из cronjob

Скриншот vn c при запуске с cron

введите описание изображения здесь

Конфигурация машины

Operating System: Red Hat Enterprise Linux Server 7.6 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.6:GA:server
Kernel: Linux 3.10.0-957.el7.x86_64
Architecture: x86-64

Машина работала последние 141 день, после перезагрузки машины вышеуказанная проблема решена. Может ли кто-нибудь сказать мне, как выяснить, в чем причина возникновения этой проблемы?

Обновление: Тем не менее, проблемы возникают каждые 3-4 дня после перезагрузки.

1 Ответ

1 голос
/ 15 июля 2020

Подозреваемые:

  1. Пользователь задания cron был изменен на / с root, поэтому $ HOME изменился соответствующим образом. чтобы убедиться, что -kill завершился, прежде чем вводить следующую команду.
  2. У вас установлено MAX сеансов? Это было достигнуто? И проблема может быть в X.

Любопытно, какова реакция системы, когда вы делаете следующее? Предыдущий сеанс все еще работает? Команда -kill завершена? Всегда ли?

vncserver -kill :12
ps -fU "$USER" | grep vnc  # or try:  ps -e | grep vnc

Могу я предложить следующее, чтобы помочь процессу отладки ...

#!/bin/sh
cd "$HOME" || exit 1         # a good habit, don't assume the landing.
echo "$HOME"                 # confirm that the value is what you expect.
vncserver -kill :12 && wait  # wait for the kill to complete before restarting
vncserver :12 -geometry 1289x1024 -name myvnc --alwaysshared
exit 0

Возможно, даже лучше:

#!/bin/sh
cd "$HOME" || exit 1
if ! vncserver -kill :12 ; then
    vncserver :12 -geometry 1289x1024 -name myvnc --alwaysshared
else
    echo "Error: vncserver 12 Process NOT KILLED, $? "  # $? will give you the return/exit value of previous
fi
exit 0

Примечания:

  1. Вы не сказали, какую оболочку вы используете, но вы можете заменить #! / Bin / sh
  2. Вы не указали #! / Bin / bash Не вставлять сообщение об ошибке.
...