Это только происходит, если Вы работаете ztail
(или любая другая команда) как новый процесс корневого уровня (т.е. без родительского процесса), например, в фоновом режиме или через крон.
Обычно, когда Вы запускаете стандарт ssh
сессия Вы получаете процесс оболочки, который является корневым процессом для всех программ, которые Вы запускаете. Если ssh
сессия завершается, ядро уничтожает все дочерние процессы также. (Вот почему люди обычно используют screen
или сопоставимые вещи сохранить сессии.)
Таким образом, самая легкая вещь для Вас состояла бы в том, чтобы использовать это поведение по умолчанию. Взгляните на ps axjf
проверять что ztail
корневой процесс, затем выясните, почему он переживает завершенный ssh
сессия.
Чтобы клонировать установку Debian, используйте утилиту apt-clone
. Она доступна (как отдельный пакет, не входит в установку по умолчанию) в Debian с 12.04 в wheezy и в Ubuntu. На существующей машине запустите
apt-clone clone foo
и получите файл foo.apt-clone.tar.gz
. Скопируйте его на целевую машину и запустите
apt-get install apt-clone
apt-clone restore foo.apt-clone.tar.gz
Если вы работаете со старой системой, где apt-clone
недоступен, или если вы хотите просто скопировать список установленных пакетов, но не конфигурационный файл, вот шаги, описанные в руководстве.
На исходной машине:
cat /etc/apt/sources.list /etc/apt/sources.list.d >sources.list.
dpkg - get-selections >selections.list
apt-mark showauto >auto.list
На целевой машине:
cp sources.list /etc/apt/
своевременное получение обновлений
/usr/lib/dpkg/methods/apt/update /var/lib/dpkg/
dpkg --set-selections
Я считаю, что на тебя повлияла несовместимая смена dpkg, которая сначала сделала его хрипящим. Смотри жучок #703092 для фона.
Короткая история заключается в том, что dpkg --set-selections
теперь принимает только имена пакетов, которые присутствуют в файле /var/lib/dpkg/status
или /var/lib/dpkg/available
. Если вы используете APT только для управления пакетами, как и большинство других, то /var/lib/dpkg/available
не поддерживается в актуальном состоянии.
После выполнения apt-get update
и перед выполнением dpkg --set-selections
и apt-get -u dselect-upgrade
выполните следующую команду:
apt-cache dumpavail >/tmp/apt.avail
dpkg --merge-avail /tmp/apt.avail
Начиная с jessie, вы можете упростить это до
apt-cache dumpavail | dpkg --merge-avail
Альтернативно, запустите
/usr/lib/dpkg/methods/apt/update /var/lib/dpkg/
или даже проще
apt-get install dctrl-tools
sync-available
Другой простой метод, который не требует установки дополнительного пакета, но загрузит списки пакетов снова, это
dselect update
Смотрите dpkg FAQ для получения дополнительной информации. (Об этом упоминается на странице dpkg man, но больше способом, напоминающим о проблеме, если вы уже знаете, а не способом, объясняющим, как решить проблему!)
Обратите внимание, что клонирование установки пакета с помощью dpkg --set-selections
не восстанавливает автоматическую/ручную пометку в APT. Смотрите Восстановление всех данных и зависимостей из dpkg --set-selections '*' для более подробной информации. Вы можете сохранить метки на исходной системе с помощью
apt-mark showauto >auto.list
и восстановить их на целевой системе с помощью
xargs apt-mark auto <auto.list