Здесь есть пара вещей, которые вызывают некоторые проблемы.
Во-первых, когда вы используете exec
для запуска процесса в оболочке, это означает, что вы хотите заменить существующую оболочкуобработайте с программой, которую вы упомянули.Когда вы делаете это в сеансе SSH, вы заменяете процесс оболочки, запущенный демоном SSH (и вы намеревались использовать его для входа в систему).Затем SSH будет ждать завершения этого процесса (чего не произойдет, пока том не будет отключен), поэтому вы видите зависание.Вы можете пропустить exec
в конфигурации вашей оболочки, которая будет порождать процесс без замены вашей оболочки.
Во-вторых, причина, по которой вы видите ошибку, состоит в том, что процесс монтирования предназначен для запуска один раз., как вы заметили.Если вы хотите пропустить монтирование папки, если она уже смонтирована, вы можете использовать в качестве сценария оболочки что-то вроде следующего:
#!/bin/sh
if ! grep " $HOME/Documents/examplefolder " /proc/mounts
then
rclone mount remoterep:/examplefolder ~/Documents/examplefolder
fi
Обратите внимание на пробелы внутри кавычек, которые гарантируют, что вы не сопоставили что-то ещеслучайно.Это гарантирует, что ваш скрипт не будет монтироваться несколько раз.
В-третьих, вы, вероятно, захотите выполнить эту команду в фоновом режиме и отсоединиться от оболочки, чтобы выход из оболочки незаставить его получить SIGHUP
и выйти (или перезапустить, в зависимости от того, как он настроен).Вы можете сделать это, записав вызов в вашей конфигурации оболочки как nohup ~/mount_examplefolder >/dev/null 2>&1 &
.nohup
запрещает программе получать SIGHUP
, а перенаправление вывода запрещает ей печатать сообщения или создавать файлы nohup.out
повсюду.
Наконец, вы можете (или не можете) настроить это назапускать только при использовании интерактивной оболочки;то есть, когда вы входите в систему, чтобы запустить оболочку для интерактивного использования, а не использования сценариев.Если это так, вы можете сделать вызов условия nohup
для PS1
следующим образом:
if [ -n "$PS1" ]
then
nohup ~/mount_examplefolder >/dev/null 2>&1 &
fi