Я думаю, что можно получить это при помощи proc файловой системы:
$ cat /proc/<PID>/fd/1
При использовании socat
на сервере
socat tcp-listen:8001,reuseaddr,fork tcp:localhost:8000
По умолчанию socat
прослушивает порт TCP 8001 любой IPv4 или адрес IPv6 (если поддерживается) на компьютере. Вы можете ограничить его IPv4/6, заменив tcp-listen
на tcp4-listen
или tcp6-listen
, или на определенный локальный адрес, добавив , bind = that-address
.
Для подключаемого сокета, к которому выполняется прокси, можно использовать любой адрес вместо localhost
и заменить tcp
на tcp4
или tcp6
, если требуется ограничить разрешение адреса IPv4 или IPv6 адресами.
Обратите внимание, что для сервера, прослушивающего порт 8000, подключение будет отображаться как исходящее от прокси (в случае localhost
, то есть localhost
), а не от исходного клиента. Необходимо использовать DNAT-подходы (но которые требуют привилегий суперпользователя), чтобы сервер мог определить, кто является клиентом.
Неподходящий ответ, но он слишком длинный для комментария:
В зависимости от данных на каждом из дисков можно попытаться сжать dd
образ самого сжимаемого жесткого диска, затем dd
этого диска на следующий диск (используя dd, если =/dev/sda of =/dev/sdc
или любые другие имена дисков), dd
он возвращается на исходный диск ( sda
в моем предыдущем примере) путем выполнения gzcat
для переноса данных в окончательный dd
(аналогично тому, что они делают здесь ).
Вы также можете попытаться максимально сжать соответствующие разделы и только взять dd
изображение отдельных разделов, чтобы увидеть, экономит ли это вам больше места.
Как правило, модель прямо сейчас заключается в том, чтобы запустить приложение непосредственно как отдельный процесс в контейнере. Этот подход имеет свои недостатки, но, как представляется, и является в настоящее время основным подходом к усилиям по контейнеризации.
Другие модели - контейнеры как нечто более похожее на облегченную виртуальную машину с более поддерживающей инфраструктурой - также полезны, но в настоящее время у нас (я работаю над Fedora) нет встроенной/предопределенной модели для мультисервисных контейнеров, кроме systemd. Цель - в конечном итоге заставить систему работать и в непривилегированных контейнерах. (См. Спецификация интерфейса контейнера для планов восходящего направления или этот пост от Дэна Уолша с кратким обновлением работы в Fedora .) В то же время, некоторые люди взломали его, чтобы работать - см., например, этот блог .
Существует отличный проект--docker -systemctl -замена , где вы можете получить альтернативную systemctl
команду для запуска/остановки служб без systemd .
systemctl
не является полной повторной -реализацией исходного systemctl
, но на практике работает достаточно хорошо.
Его можно установить следующим образом:
wget https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py -O /usr/local/bin/systemctl