Запуск dhcpcd
напрямую конфликтует с системой конфигурации сети. (В вашем случае конфигурация сети находится в /etc/network/interfaces
или /etc/network/interfaces.d
). Обычно вам достаточно вызвать dhcpcd
для целей тестирования.
Во избежание конфликта с системой настройки сети Debian используйте ifdown eth0
перед тестированием dhcpcd
.
Ожидается, что система настройки сети Debian ifupdown
не будет реагировать на статус соединения (кабель отключен и снова подключен). Если вам нужна эта функция, NetworkManager может предоставить ее. NetworkManager также работает таким образом, чтобы избежать блокировки всего процесса загрузки, когда сеть не работает. В противном случае для переключения сетей необходимо
ifdown eth0
— сделайте это в первую очередь, чтобы избежать конфликта адресов с другим компьютером в новой сети! ifup eth0
Наконец, из вашего ответа следует, что вы нашли обходной путь для необычной аппаратной проблемы (указывает на r8169 = дешевые чипы RealTek), который вы хотите запустить раньше ifupdown
запускает для вас DHCP-клиент. Отредактируйте файл /etc/network/interfaces
, содержащий конфигурацию вашей сети. Сразу после строки
iface eth0 inet dhcp
добавить
pre-up ethtool -s eth0 autoneg off speed 100 duplex full
Пробел/отступ в начале принято, но не обязательно.
Чтобы убедиться, что эти команды действительно выполняются, вы можете использовать регистратор
.Примечание. Я изменил строку с помощью ethtool, а также добавил строки до и после.
pre-up logger -- running ethtool...
pre-up ethtool -s eth0 autoneg off speed 100 duplex full 2>&1 | logger
pre-up logger -- finished running ethtool
Строки журнала должны появиться в системном журнале (например, journalctl -b
), а внутри них любые выходные данные ethtool, за которыми следуют сообщения от dhclient
. Если от ethtool нет вывода, то он считает, что это удалось. Я полагаю, что сообщения журнала также будут перенаправлены в ваши постоянные файлы системного журнала (/var/log/messages или /var/log/syslog?).
Чтобы избежать пятиминутной задержки при тестировании, вы можете начать с комментирования строки auto eth0
(добавьте # в начале, чтобы отключить ее). Тогда компьютер загрузится без попыток поднять интерфейс eth0, и вы сможете запустить ifup
вручную, чтобы проверить, работает ли он. Хотя, к сожалению, возможно, что это работает так, но не во время загрузки из-за какой-то неприятной проблемы с синхронизацией.
Поиск в Google показывает, что NetworkManager не поддерживает предварительное подключение. К сожалению, если вы хотите переключиться на NetworkManager, вам придется зайти в systemd и создать службу. Вероятно, нужно, чтобы служба запускалась до NetworkManager.
У этого сценария есть две основные проблемы:
Пути являются относительными. Это означает, что при запуске предполагается, что home / pi
существует в текущем каталоге . У меня такое чувство, что все экземпляры home / pi
в сценарии должны быть изменены на / home / pi
.
Команда tar
, вероятно, предназначена для резервного копирования файлов в файле backuplist.txt
. В том виде, в каком он написан сейчас, вы получите архив tar
, содержащий сам файл backuplist.txt
и ничего больше. Если вы хотели прочитать содержимое этого файла, используйте tar -zcvf "$ DESDIR / $ FILENAME" -T "$ SRC"
.
В скрипте также есть переменные без кавычек.
Вот что, я думаю, вам нужно:
#!/bin/bash
TIME="$(date +%b-%d-%y)"
FILENAME="backup-$TIME.tar.gz"
DESDIR="/home/pi/backups"
SRC="/home/pi/backuplist.txt"
find /home/pi -iname '*.orig' -o -iname '*.py' >"$SRC"
tar -zcvf "$DESDIR/$FILENAME" -T "$SRC"
/ home / pi
в командной строке find
- безумная догадка. Я предполагаю, что без него GNU find
будет использовать текущий каталог.
Я думаю, что этот немного другой сценарий решит ваше первоначальное желание передать список файлов непосредственно в tar
.
Я процитировал переменные, где они используются, и заменил обратные кавычки `...`
современной конструкцией $ (...)
.
Наконец, я предположил, что вы хотите, чтобы это запускалось из /
, чтобы пути, которые вы использовали, могли существовать.
#!/bin/bash
WHEN=$(date +%b-%d-%y)
FILENAME="backup-$WHEN.tar.gz"
DESDIR=/home/pi/backups
SRC=/home/pi/backuplist.txt
mkdir -p "$DESDIR"
cd /
find -iname '*.orig' -o -iname '*.py' |
tee "$SRC" |
tar zcvf "$DESDIR/$FILENAME" --no-recursion --verbatim-files-from --files-from -
Вы можете полностью опустить две строки, ссылающиеся на $ SRC
, если вам не нужно создавать список файлов во время процесса резервного копирования.