TLDR:Ответ на то, что вы хотите, представлен здесь с хорошим сервисом типа «не одноразовый»:
На случай, если ты захочешь поиграть, я уже делал это до того, как нашел правильный ответ. Иногда это срабатывало, потому что было неправильно настроено. Если вы используете -bg или любой другой скрипт, который завершает работу сразу после выполнения, он вам понадобится, в противном случае просто перейдите по первой ссылке, чтобы правильно запустить службу x11vnc. Я закончил использовать его, работает идеально.
Рекомендовано:Все, что ниже, только для игры
Прежде всего, вы должны использовать службу Type=oneshot
вместе с RemainAfterExit=yes
, чтобы действие «стоп» сработало. Я боролся, пока не заработал.
Чтобы остановить сервер x11vnc с помощью «отображения», как вы сделаете сvncserver -kill :1
(:1 здесь означает :5901, потому что vnc использует порты 590x по умолчанию ), которые вам нужно использовать в примере lsof
, чтобы получить pid, затем убейте его, изящно или нет, вы выбираете -9 вариант или другой по вашему выбору.
Если вы всегда используете сервис (, то тот же rfbport )с сервисом, вы уже знаете порт прослушивания, так что может быть так:
ExecStop=/bin/bash -c "/bin/kill -9 `lsof -i:5901 -t`"
Поскольку эти параметры принимают только двоичные файлы и не допускают конвейера, вам нужно заключить все внутрьbash -c "command"
Мой выглядит какhttps://gist.github.com/erm3nda/37e5720b4197a7a16c564418d377aac0и не работает при загрузке, но работает при перезагрузке или запуске вручную.
Сервер не будет уничтожен, если вы снова запустите start, но перезагрузка подойдет.
Если вы планируете запустить несколько серверов x11 на разных портах, вы должны добавить @ к имени службы, а затем вызвать с нужным номером и изменить сценарий, чтобы использовать %i в качестве аргумента.
Просто используйте x11vnc@NUMBER для запуска службы:
Имя файла службы :x11vnc@.service Включите его с портом 5901:sudo systemctl enable x11vnc@1
Пример Service ExecStart :/usr/bin/x11vnc -навсегда -общий -bg -rfbport 590%i -дисплей :0 -геометрия 800x600 -rfbauth /etc /x11vnc.pass -слушать 127.0.0$ Пример службы ExecStop :/bin/sh -c "/bin/kill -9 lsof -i:590%i -t
" Запустите его:sudo service x11vnc@1 start
для работы под портом 5901
Мой выглядит какhttps://gist.github.com/erm3nda/fa0bfb8f3737dc6398889adb50fdc84bи не работает при загрузке, но работает, если вы перезапустите его или запустите вручную.
Does the page for a command get installed with it
Да, обычно так и есть, но, конечно же, вы всегда можете добавить новую пользовательскую справочную страницу в свою систему, не используя локальную систему управления пакетами. Вы можете использовать системный менеджер пакетов, чтобы узнать, какой пакет данная man-страница com из. Большая часть справочных страниц для Linux -основана на системы исходит из справочных страниц Linux -. проект .
If it brings it from the network, then how secure is it?
Это не так, но, как говорили другие, возможно, кто-то написал свою собственную реализацию, которая делает это. Я предполагаю, что ваше замешательство может быть связано с первой строкой в man man
, которая гласит:
man - an interface to the on-line reference manuals
Или в версии BSD:
man — display online manual documentation pages
См. этот LQ вопрос для объяснения.
Ради интереса см. такжеhttps://explainshell.com. Это хороший сайт, который может быстро объяснить значение параметров в данной команде, напримерhttps://explainshell.com/explain?cmd=ls+-Alhtrно помните, что ваш локальная реализация данной команды может отличаться или может не поддерживаться все параметры (это особенно актуально при использовании небольших Busybox -, таких как основанные системы ).
И, конечно же, man
может работать по сети в том смысле, что вы можете смонтировать удаленный каталог локально и скажите man
искать там man-страницы, т.к. Например, я могу читать man-страницы с удаленной машины FreeBSD вот так:
$ sshfs freebsd:/usr/share/man /mnt/bsd-manpages
$ MANPATH=/mnt/bsd-manpages man man
$ MAN(1)
BSD General Commands Manual MAN(1)
NAME
man — display online manual documentation pages
Does man cache the pages locally? If it does, should I clear it on a regular basis?
Уже хорошо объяснено в ответ .
В современных unix -подобных системах, следующих Стандарту иерархии файловой системы , справочные страницы обычно хранятся в дереве каталогов, расположенном по адресу /usr/share/man
. В более старых системах типа unix -вместо этого может использоваться /usr/man
.
Обычно man
вообще не использует сеть, хотя возможно, что кто-то где-то сделал сетевую -реализацию.
Обычно справочные страницы пишутся с использованием старой системы форматирования документов, первоначально известной как roff
(, ее реализация GNU называетсяgroff
). При просмотре справочной страницы команда man
запустит исходный код справочной страницы через средство форматирования, что создаст выходные данные, адаптированные к ширине окна, которое вы используете в данный момент. Средство форматирования также может создавать версии man-страниц в формате PostScript, PDF и, возможно, в формате HTML из одного и того же исходного кода, которые не будут ограничиваться моноширинным текстом в стиле терминала -.
Команда man
может кэшировать отформатированные текстовые версии справочных страниц как cat
страницы для более быстрого -просмотра, обычно в/var/cache/man
(FHS )или отдельных подкаталогах -справочной страницы. иерархия каталогов (старые системы ). Вы можете обнаружить, что в системе уже есть задание по умолчанию (, обычно еженедельное )задание cron, которое автоматически очищает этот кеш.
Если у вас есть система печати CUPS с включенной функцией печати PDF с -по -, запустите man -t ls | lp -d <name of your PDF virtual printer>
и просмотрите полученный результат в любой программе просмотра PDF. Или man -Thtml ls > ls_man_page.html
, чтобы получить HTML-версию. (Это относится к man-db
реализации команды man
в Debian 10. :параметры форматирования могут отличаться в других реализациях.)