Я решил проблему, похоже, это связано как шмелю, так и драйверу Nvidia. См. Также этот выпуск Bumblebee.
Когда Bumblebee хочет выключить карту Nvidia, он попытается запустить rmmod nvidia
. Но когда я запускаю эту команду, Arch сообщает, что не может выгрузить этот модуль, потому что он используется nvidia_modeset
. По-видимому, этот новый модуль был недавно добавлен в драйвер Nvidia и заставляет Bumblebee блокировать систему при запуске startx (потому что он не может выключить карту Nvidia).
В настоящее время решения нет, но когда выйдет Bumblebee 4.0, оно, вероятно, будет.
Перенаправить стандартную ошибку ssh
в файл в рамках подстановки команды, а затем проверить, является ли файл пустым или нет:
output="$( ssh server 'command' 2>ssh.err )"
if [[ -s ssh.err ]]; then
echo 'SSH error:' >&2
cat ssh.err >&2
fi
rm -f ssh.err
, который отображает ошибку SSH:
следует записанными сообщениями об ошибках из ssh
.
Из справочной страницы ssh в Ubuntu 16.04 (LTS):
EXIT STATUS
ssh exits with the exit status of the remote command or with 255 if an error occurred.
Зная это, мы можем проверить статус выхода команды ssh
. Если статус выхода был 225
, мы знаем, что это ошибка ssh
, а если это любое другое ненулевое значение - это ошибка ls
.
#!/bin/bash
TEST=$(ssh $USER@localhost 'ls /proc' 2>&1)
if [ $? -eq 0 ];
then
printf "%s\n" "SSH command successful"
elif [ $? -eq 225 ]
printf "%s\n%s" "SSH failed with following error:" "$TEST"
else
printf "%s\n%s" "ls command failed" "$TEST"
fi
Насколько я помню, должен работать какой-то вариант. Попробуйте это:
cmd 2>>>$errmsg
возможно тройная переадресация... Это было много лет назад... в переменной errmsg должно быть выведено сообщение об ошибке. Может быть, я ошибаюсь. В этом случае этот вариант получит сообщение со 100% гарантией:
errmsg=`cmd 2>/dev/null`
Этот вариант подавляет сообщение об ошибке, если оно необходимо или может быть не нужно. Но и обычный вывод его лови. Таким образом, вы можете различить эти два случая с помощью $? значение и исправить ваш сценарий.