-f
опция подавляет подсказки подтверждения при удалении файла только для чтения. Это также подавляет ошибки, когда один или несколько предоставил файл, не существует.
-f
опция полезна, когда Вы знаете, что некоторые файлы, которые Вы удаляете, могут быть только для чтения, и Вы не хотите быть предложенными об этом.
f
опция также полезна, когда Вы хотите удалить некоторые файлы в случае, если они существуют и не хотят заботиться, существуют ли они или нет. Это является очень наиболее часто используемым в make-файлах, для создания команды, которая удаляет файлы, которые могут быть повторно созданы от исходных файлов. Например, если foo.o
может быть восстановлен от foo.c
, bar.o
может быть восстановлен от bar.c
, и myapp
может быть восстановлен от foo.o
и bar.o
, затем цель make-файла
clean:
rm -f *.o myapp
удаляет myapp
, foo.o
и bar.o
если они существуют, и не жалуется, не существует ли какой-либо из них.
Включая -f
в инструкциях удалить дерево каталогов не необходимо в большинстве случаев. Это может быть выровнено по ширине, потому что, если Вы уверены, что хотите удалить то дерево каталогов независимо от того, что находится в нем, затем можно указать -f
постараться не запрашиваться в случае, если некоторые файлы только для чтения. Однако люди, которые говорят для выполнения rm -rf
часто просто повторяют мистическое колдовство для избавлений от чего-то, независимо от ли опции -r
и -f
на самом деле необходимы. Если опции не необходимы, они не желательны, потому что они увеличивают риск, что опечатка в аргументе уничтожит что-то важное.
Было бы неплохо использовать rungetty для запуска на неиспользуемом виртуальном терминале. control alt f n для просмотра вывода.
Вы можете поместить что-то вроде этого в свой /etc/rc.local
файл (непроверенный):
{ while ! ping -c 1 -W 1 8.8.8.8; do sleep 1; done; /home/youruser/Desktop/rpiMainProgram > /home/youruser/Desktop/rpiMainProgram.log 2>&1; }&
ping -c 1 -W 1 8.8.8.8
: отправляет один пакет ping и ожидает возврата в течение 1 секунды.
Цикл while
продолжается до тех пор, пока команда ping
завершается с кодом состояния> 0, то есть до тех пор, пока не удается выполнить команду.
Когда у вас есть сетевое соединение и вы можете успешно пинговать 8.8.8.8
, цикл остановится и выполнит вашу программу (проверьте, имеет ли значение такой вызов, например, с помощью pwd
).
С помощью {}
мы превращаем его в особую команду, так что мы можем отодвинуть все это на задний план, используя &
. В противном случае он заблокирует остальную часть /etc/rc.local
, пока у вас не будет сеть.
Могут быть более элегантные решения, но у меня есть что-то похожее на то, что есть на моем Pi.
Запустите вашу программу в мультиплексор терминала, такой как screen или tmux . Используйте его для создания отдельного терминала, в котором вы запускаете свою программу, и подключения к этому терминалу, когда вы хотите с ним взаимодействовать. Например, с экраном, запустите это во время запуска:
screen -S rpiMainProgram -d -m /home/nixda/Desktop/rpiMainProgram
и используйте это, чтобы присоединиться к экземпляру экрана, на котором работает программа:
screen -S rpiMainProgram -r -d
Чтобы отсоединиться от экземпляра экрана, нажмите Ctrl + A , затем d .
В Debian для запуска программы после включения сетевого интерфейса добавьте сценарий в /etc/network/if-up.d
. Вам нужно будет проверить, какой интерфейс запускается (на практике вы не хотите запускать программу при запуске интерфейса обратной связи). Создайте /etc/network/if-up.d/local_rpiMainProgram
, содержащий что-то вроде
#!/bin/sh
case "$IFACE" in
ppp0) screen -S rpiMainProgram -d -m /home/nixda/Desktop/rpiMainProgram
esac
или
#!/bin/sh
if ping -q -W1 -c1 8.8.8.8; then
screen -S rpiMainProgram -d -m /home/nixda/Desktop/rpiMainProgram
fi