Существует ли команда завершения работы/перезапуска для x11VNC? - Linux (Debian)

использование .zshrc изменить мои переменные среды

Это - первопричина Вашей проблемы. .zshrc файл запуска для интерактивных сессий оболочки. Используйте его, чтобы установить настройки оболочки, не установить переменные среды. Переменные среды обычно устанавливаются в файле сессии такой как .profile. Посмотрите Альтернативу .bashrc (что идет для .bashrc также идет для .zshrc).

Если zsh является Вашей оболочкой входа в систему, он не читает ~/.profile, но это читает ~/.zprofile. Обратите внимание, что zsh не должен быть Вашей оболочкой входа в систему, даже если это - Ваша интерактивная оболочка: можно использовать /bin/sh как Ваша оболочка входа в систему и набор SHELL=$(command -v zsh) в Вашей среде так, чтобы эмуляторы терминала и т.п. выполненный zsh. Так как Вы говорите что, определяя Ваши переменные среды в ~/.zprofile не работал, это, вероятно, как Ваша система уже настраивается, но трудно сказать без информации, более точной, что “не работал”.

Если Ваша оболочка входа в систему является zsh, вставьте следующую строку Ваш ~/.zprofile читать .profile:

emulate ksh -c '. ~/.profile'

Можно обычно сходить с рук плоскость . ~/.profile, потому что несовместимости между zsh и оболочками стиля Границы вряд ли подойдут в a .profile.

5
09.12.2016, 00:00
5 ответов

Если Вы используете systemd необходимо смочь настроить его как услуга. Я нашел этот поток, который разоблачает подобную задачу установки x11vnc как услуги Systemd. Поток назван: Индекс» Угол Новичка», как включить x11vnc при запуске с помощью systemd?.

Из комментария в том потоке

  1. Создайте файл: /etc/systemd/system/x11vnc.service

    [Unit]
    Description=VNC Server for X11
    Requires=display-manager.service
    After=display-manager.service
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/x11vnc -norc -forever -shared -bg -rfbauth /etc/x11vnc.pass -allow 192.168.1. -autoport 5900 -o /var/log/x11vnc.log
    
  2. Создайте файл: /etc/systemd/system/graphical.target

    #  This file is part of systemd.
    #
    #  systemd is free software; you can redistribute it and/or modify it
    #  under the terms of the GNU Lesser General Public License as published by
    #  the Free Software Foundation; either version 2.1 of the License, or
    #  (at your option) any later version.
    
    [Unit]
    Description=Graphical Interface
    Documentation=man:systemd.special(7)
    Requires=multi-user.target
    After=multi-user.target
    Conflicts=rescue.target
    Wants=display-manager.service
    Wants=x11vnc.service
    AllowIsolate=yes
    
    [Install]
    Alias=default.target
    
  3. Включите сервис Systemd

    $ sudo systemctl enable graphical.target
    

    Это должно создать ссылку как это:

    /etc/systemd/system/default.target->/etc/systemd/system/graphical.target

  4. Перезагрузка

5
27.01.2020, 20:32
  • 1
    Извините, но как это останавливает сервис? Я не вижу, что что-либо для уничтожает/останавливает, только для запуска его. –  m3nda 31.03.2018, 01:29
  • 2
    @Shamaoke типичное использование должно закрыть дополнительный FDs, который Вы открыли прежде: exec 3>/path/to/file; : do something ; exec 3>&-; exec 3>/path/to/another/file ; : ... ---------121 остановка--------180293----Systemctl.... –  slm♦ 31.03.2018, 17:11
  • 3
    Слабый ответ......... Op попросил x11vnc "программу" и не especifically "один и только один сервис". У Вас могут быть многие сервисы или много экземпляров. Systemctl работают только на сервисы. Ваш сервис не имеет никакого ExecStop, таким образом, я не могу понять то, что делает Вы ожидаете при останавливании сервиса, но не экземпляра x11vnc. Рабочие сервисы так же как onehot с - навсегда и-bg повредят Ваш материал. Вы используете свой сервис? Я дам выстрел, но я попробовал много вещей, и я думаю, что Вы просто записали вещи, которые не могут работать. –  m3nda 31.03.2018, 17:26

Решение для этого, которое работает для меня:

$ x11vnc -clear-all
2
27.01.2020, 20:32

Попробуйте:

killall x11vnc && /usr/bin/x11vnc -rfbport 5900 -bg -vncconnect -xvnc -forever 

Добавьте любые персонализированные опции.

0
27.01.2020, 20:32

Так как вы знаете, как запускать сервер, вот способ изящно остановить его:

x11vnc -R stop

в основном вы отправляете удаленную команду ( См. -Роте ) к запущенному экземпляру.

11
27.01.2020, 20:32

TLDR:Ответ на то, что вы хотите, представлен здесь с хорошим сервисом типа «не одноразовый»:

http://www.lueckdatasystems.com/Successfully_running_x11vnc_as_a_Systemd_Service_in_Xubuntu_16.04_Xenial-Xerus

На случай, если ты захочешь поиграть, я уже делал это до того, как нашел правильный ответ. Иногда это срабатывало, потому что было неправильно настроено. Если вы используете -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и не работает при загрузке, но работает, если вы перезапустите его или запустите вручную.

0
27.01.2020, 20:32

Теги

Похожие вопросы