Давным-давно я установил серию виртуальных принтеров с CUPS, чтобы съесть PS и отрендерить папку, полную файлов PDF. Аналогичным образом был сделан факсимильный виртуальный принтер, а также некоторые преобразователи ps2ps для автоматического преобразования страниц в настоящий принтер PS.
В любом случае, я думаю, что вы уже на правильном пути, и вам просто нужно бороться с некоторой неясной документацией и традиционным UTSL (используйте исходный код, luke) и RTFS (прочитайте дружественный источник).
Я пишу это, исходя из личного опыта решения той же проблемы, но не могу процитировать какие-либо ссылки на отрывки из документации или что-то еще. Я создал CUPS, когда он был совершенно новым и замечательным, примерно 15 лет назад. Я помню, что это был суперкомплекс и барокко по сравнению с очередями печати lpr.
Другим способом было бы использовать lpr и настроить некоторые записи printcap для виртуальных принтеров, вызывая ghostscript из входных фильтров, указанных в printcap. Фильтрами, скорее всего, должны быть сценарии оболочки, и я совершенно уверен, что в пакете GS есть достаточно инструментов, которые помогут вам создать сценарий входного фильтра.
http://www.ghostscript.com/doc/5.50/Unix-lpr.htm
В зависимости от ваших взглядов подходы CUPS и lpr / GS имеют как свои положительные, так и отрицательные стороны. CUPS позволяет пользователям вашего сетевого принтера лучше видеть очереди печати, в то время как lpr намного проще настроить. По крайней мере, если вы знакомы с инструментами командной строки и текстовыми файлами конфигурации.
То, является ли файл символической ссылкой на другой файл, не влияет на то, как он работает. telinit
, как и systemctl
, работает как «обычный» процесс.
На основании этого вопроса и Запускаются ли в sysvinit `telinit `и `init `в одном и том же процессе? Думаю, вы не понимаете, как программы могут взаимодействовать с символическими ссылками.
Когда программа имеет несколько имен, (символические ссылки, жесткие ссылки ), она может выполнять разные действия в зависимости от того, как она вызывается.
Например, вот простой сценарий оболочки
$ кот х
#!/bin/bash
pname=${0##*/}
case $pname in
tina) echo "Tina Tuner doesn't need another hero" ;;
fred) echo "The current date is: $(date)" ;;
harry) sleep 3 ;;
*) echo Call me tina or fred or harry
esac
Имеет символические ссылки:
$ ls -l x tina fred harry
lrwxrwxrwx 1 sweh sweh 1 Dec 19 09:47 fred -> x*
lrwxrwxrwx 1 sweh sweh 1 Dec 19 09:48 harry -> x*
lrwxrwxrwx 1 sweh sweh 1 Dec 19 09:48 tina -> x*
-rwxr-xr-x 1 sweh sweh 217 Dec 19 09:48 x*
Итак, теперь я могу получить разные результаты, в зависимости от того, как я это назову:
$./tina
Tina Tuner doesn't need another hero
$./fred
The current date is: Wed Dec 19 09:50:00 EST 2018
$./harry
$./x
Call me tina or fred or harry
$ ln -s x something
$./something
Call me tina or fred or harry
Теперь программа sysv-init
делает что-то подобное. Если он запущен как telinit
, то он просто сигнализирует основной программе init
. Если запущен какinit
(и, возможно, также, если PID равен 1, но это становится все глубже в сорняки ), тогда он запускается как основной процесс инициализации системы.
Итак, нет; telinit
это не демон.
init is run as a daemon. Is telinit run as a daemon?
Нет, двоичный файл init имеет другое поведение при вызове как telinit.