Какая ссылка на / bin / systemctl is / sbin / reboot?

Принтеры Brother могут быть обнаружены Ubuntu, но без правильных драйверов они не будут работать должным образом (по крайней мере, не для всех функций).

Брат предоставляет драйверы Linux на своем веб-сайте. Драйверы имеют сценарий установки, но я обнаружил, что он не работает очень хорошо, и мне пришлось вручную установить драйверы для моей модели.

Брат также перечисляет Брат предоставляет драйверы Linux на его сайт , такой как

ia32-libs ИЛИ lib32stdc++, должен быть установлен. Вы правы, что ia32-libs не находится в стандартных репозиториях Ubuntu, но lib32stdc ++ 6 (обратите внимание на «6» в конце), и этого должно быть достаточно. Создайте /usr/lib/cups/filter/, если он не существует. Создайте /usr/share/cups/model/, если он не существует. Создайте /var/spool/lpd/, если он не существует. Пакет sane-utils должен быть установлен, если вы используете brscan, brscan2 или brscan3 (что может быть не так для вашей модели из того, что я вижу, но с sane-utils не повредит). Пакет apparmor-utils должен быть установлен (для команды aa-complain, хотя я думаю, что это плохая идея, и я обнаружил, что это не было необходимо при установке драйверов вручную).

Убедитесь, что у вас есть требования к вашей ситуации, а затем установите драйверы с веб-сайта Brother

$ sudo dpkg -i [driver_file.deb]

(я не думаю, что опция --force-all, которую рекомендует Brother необходимо.)

Вам может потребоваться несколько дополнительных шагов, чтобы заставить сканер работать, но это должно заставить вас, по крайней мере, иметь возможность печатать. Если он все еще не работает, нам, вероятно, понадобится дополнительная информация о проблеме.

4
задан 11 April 2018 в 11:20

6 ответов

Хороший вопрос, я нашел ответ, предоставленный @slm ♦, на Unix & amp; Linux Q & amp; A:

Многие программы используют эту технику, где есть один исполняемый файл, который изменяет его поведение на основе того, как он был выполнен. Обычно внутри программы называется оператор case / switch, который определяет имя, с которым был вызван исполняемый файл, а затем вызывает соответствующие функции для этого исполняемого имени. Это имя обычно является первым аргументом, который получает программа. Прочтите примеры ...

Хотя в исходном ответе приводятся два примера с C и Perl, вот пример с Bash. В Bash позиционный параметр $0 содержит имя скрипта, который выполняется. Итак, давайте создадим простой скрипт под названием program.sh и сделаем его исполняемым:

cat << EOF > program.sh && chmod +x program.sh
#!/bin/bash
echo "I was called as \"\${0##*/}\""
EOF
\$ будет избегать специального значения $ в cat во время создания сценария. ${0##*/} выводит только имя исполняемого файла без пути во время выполнения скрипта.

Далее создадим три символических ссылки на этот скрипт:

for link in call-{1..3}; do ln -s program.sh $link; done

Теперь, в зависимости от того, как мы называем program.sh - напрямую или какой-либо из символических ссылок, ve created - вывод будет другим:

$ ./program.sh 
I was called as "program.sh"

$ ./call-1 
I was called as "call-1"

$ ./call-2
I was called as "call-2"

$ ./call-3
I was called as "call-3"
3
ответ дан 22 May 2018 в 11:30

Хороший вопрос, я нашел ответ, предоставленный @slm ♦, на Unix & amp; Linux Q & amp; A:

Многие программы используют эту технику, где есть один исполняемый файл, который изменяет его поведение на основе того, как он был выполнен. Обычно внутри программы называется оператор case / switch, который определяет имя, с которым был вызван исполняемый файл, а затем вызывает соответствующие функции для этого исполняемого имени. Это имя обычно является первым аргументом, который получает программа. Прочтите примеры ...

Хотя в исходном ответе приводятся два примера с C и Perl, вот пример с Bash. В Bash позиционный параметр $0 содержит имя скрипта, который выполняется. Итак, давайте создадим простой скрипт под названием program.sh и сделаем его исполняемым:

cat << EOF > program.sh && chmod +x program.sh #!/bin/bash echo "I was called as \"\${0##*/}\"" EOF \$ будет избегать специального значения $ в cat во время создания сценария. ${0##*/} выводит только имя исполняемого файла без пути во время выполнения скрипта.

Далее создадим три символических ссылки на этот скрипт:

for link in call-{1..3}; do ln -s program.sh $link; done

Теперь, в зависимости от того, как мы называем program.sh - напрямую или какой-либо из символических ссылок, ve created - вывод будет другим:

$ ./program.sh I was called as "program.sh" $ ./call-1 I was called as "call-1" $ ./call-2 I was called as "call-2" $ ./call-3 I was called as "call-3"
3
ответ дан 17 July 2018 в 17:03

Хороший вопрос, я нашел ответ, предоставленный @slm ♦, на Unix & amp; Linux Q & amp; A:

Многие программы используют эту технику, где есть один исполняемый файл, который изменяет его поведение на основе того, как он был выполнен. Обычно внутри программы называется оператор case / switch, который определяет имя, с которым был вызван исполняемый файл, а затем вызывает соответствующие функции для этого исполняемого имени. Это имя обычно является первым аргументом, который получает программа. Прочтите примеры ...

Хотя в исходном ответе приводятся два примера с C и Perl, вот пример с Bash. В Bash позиционный параметр $0 содержит имя скрипта, который выполняется. Итак, давайте создадим простой скрипт под названием program.sh и сделаем его исполняемым:

cat << EOF > program.sh && chmod +x program.sh #!/bin/bash echo "I was called as \"\${0##*/}\"" EOF \$ будет избегать специального значения $ в cat во время создания сценария. ${0##*/} выводит только имя исполняемого файла без пути во время выполнения скрипта.

Далее создадим три символических ссылки на этот скрипт:

for link in call-{1..3}; do ln -s program.sh $link; done

Теперь, в зависимости от того, как мы называем program.sh - напрямую или какой-либо из символических ссылок, ve created - вывод будет другим:

$ ./program.sh I was called as "program.sh" $ ./call-1 I was called as "call-1" $ ./call-2 I was called as "call-2" $ ./call-3 I was called as "call-3"
3
ответ дан 23 July 2018 в 17:54

Как говорит pa4080, это просто нормальная символическая ссылка, а сама systemctl проверяет, какое имя она была запущена, чтобы решить, какое действие выполнить. Такой вид может быть достигнут с помощью любого механизма, который запускает один и тот же исполняемый файл под несколькими именами; на практике это достигается за счет использования символических ссылок или жестких ссылок. В GNU / Linux системах, таких как Ubuntu, наиболее распространено использование символических ссылок для этой цели.

В версиях Ubuntu с pa4080 говорит (который в настоящее время включает все поддерживаемые релизы, кроме 14.04 LTS, который использует символическую ссылку ), а не только команду reboot, но также halt, poweroff, systemctl , shutdown и symlinks - все символические ссылки на /bin/systemctl:

$ file /sbin/{halt,poweroff,reboot,runlevel,shutdown,telinit}
/sbin/halt:     symbolic link to /bin/systemctl
/sbin/poweroff: symbolic link to /bin/systemctl
/sbin/reboot:   symbolic link to /bin/systemctl
/sbin/runlevel: symbolic link to /bin/systemctl
/sbin/shutdown: symbolic link to /bin/systemctl
/sbin/telinit:  symbolic link to /bin/systemctl

Точные действия systemctl берутся на основе имени, которое вы используете для его запуска, а также других способов, которыми вы можете указать эти действия подробно описаны в , поддерживаемом JdeBP, на не только командой reboot, но также halt, poweroff на Unix.SE. Как это объясняет, эти команды (кроме runlevel) работают как сокращенные для команд systemctl isolate ... с заменой ... на разные цели.

Если вам интересно, код C, который считает, какое имя вы использовали для вызова systemctl при определении того, какое действие для выполнения находится в функции parse_argv, определенной в JdeBP , которая в настоящее время начинается в строке 6972 этого файла. Чтобы найти его, вы можете искать:

static int parse_argv(int argc, char *argv[]) {

Соответствующие части охватывают большую часть этой функции, но все это примерно похоже на этот фрагмент, продолжающийся аналогично, но с различным кодом для каждой строки и с некоторыми другие проверки и логика ветвления:

                if (strstr(program_invocation_short_name, "halt")) {
                        arg_action = ACTION_HALT;
                        return halt_parse_argv(argc, argv);
                } else if (strstr(program_invocation_short_name, "poweroff")) {
                        arg_action = ACTION_POWEROFF;
                        return halt_parse_argv(argc, argv);
                } else if (strstr(program_invocation_short_name, "reboot")) {

Другие примеры команд, которые проверяют, как они были вызваны (иногда) действуют по-разному, включают в себя vim, который ведет себя по-разному при запуске как vim, ex , view, gvim, gview и несколько других; Unix.SE , см. shutdown ; gksu, см. жесткие ссылки ; less, который меняет внешний вид, если он назван more (но все же позволяет вам прокручивать двунаправленный текст, в отличие от more Ubuntu]; [F30]; и большинство оболочек типа Bourne, таких как bash и zsh, которые автоматически ведут себя более совместимо с требованиями POSIX для sh, если они выполняются как sh.

2
ответ дан 22 May 2018 в 11:30

Как говорит pa4080, это просто нормальная символическая ссылка, а сама systemctl проверяет, какое имя она была запущена, чтобы решить, какое действие выполнить. Такой вид может быть достигнут с помощью любого механизма, который запускает один и тот же исполняемый файл под несколькими именами; на практике это достигается за счет использования символических ссылок или жестких ссылок. В GNU / Linux системах, таких как Ubuntu, наиболее распространено использование символических ссылок для этой цели.

В версиях Ubuntu с pa4080 говорит (который в настоящее время включает все поддерживаемые релизы, кроме 14.04 LTS, который использует символическую ссылку ), а не только команду reboot, но также halt, poweroff, systemctl , shutdown и symlinks - все символические ссылки на /bin/systemctl:

$ file /sbin/{halt,poweroff,reboot,runlevel,shutdown,telinit} /sbin/halt: symbolic link to /bin/systemctl /sbin/poweroff: symbolic link to /bin/systemctl /sbin/reboot: symbolic link to /bin/systemctl /sbin/runlevel: symbolic link to /bin/systemctl /sbin/shutdown: symbolic link to /bin/systemctl /sbin/telinit: symbolic link to /bin/systemctl

Точные действия systemctl берутся на основе имени, которое вы используете для его запуска, а также других способов, которыми вы можете указать эти действия подробно описаны в , поддерживаемом JdeBP, на не только командой reboot, но также halt, poweroff на Unix.SE. Как это объясняет, эти команды (кроме runlevel) работают как сокращенные для команд systemctl isolate ... с заменой ... на разные цели.

Если вам интересно, код C, который считает, какое имя вы использовали для вызова systemctl при определении того, какое действие для выполнения находится в функции parse_argv, определенной в JdeBP , которая в настоящее время начинается в строке 6972 этого файла. Чтобы найти его, вы можете искать:

static int parse_argv(int argc, char *argv[]) {

Соответствующие части охватывают большую часть этой функции, но все это примерно похоже на этот фрагмент, продолжающийся аналогично, но с различным кодом для каждой строки и с некоторыми другие проверки и логика ветвления:

if (strstr(program_invocation_short_name, "halt")) { arg_action = ACTION_HALT; return halt_parse_argv(argc, argv); } else if (strstr(program_invocation_short_name, "poweroff")) { arg_action = ACTION_POWEROFF; return halt_parse_argv(argc, argv); } else if (strstr(program_invocation_short_name, "reboot")) {

Другие примеры команд, которые проверяют, как они были вызваны (иногда) действуют по-разному, включают в себя vim, который ведет себя по-разному при запуске как vim, ex , view, gvim, gview и несколько других; Unix.SE , см. shutdown ; gksu, см. жесткие ссылки ; less, который меняет внешний вид, если он назван more (но все же позволяет вам прокручивать двунаправленный текст, в отличие от more Ubuntu]; [F30]; и большинство оболочек типа Bourne, таких как bash и zsh, которые автоматически ведут себя более совместимо с требованиями POSIX для sh, если они выполняются как sh.

2
ответ дан 17 July 2018 в 17:03

Как говорит pa4080, это просто нормальная символическая ссылка, а сама systemctl проверяет, какое имя она была запущена, чтобы решить, какое действие выполнить. Такой вид может быть достигнут с помощью любого механизма, который запускает один и тот же исполняемый файл под несколькими именами; на практике это достигается за счет использования символических ссылок или жестких ссылок. В GNU / Linux системах, таких как Ubuntu, наиболее распространено использование символических ссылок для этой цели.

В версиях Ubuntu с pa4080 говорит (который в настоящее время включает все поддерживаемые релизы, кроме 14.04 LTS, который использует символическую ссылку ), а не только команду reboot, но также halt, poweroff, systemctl , shutdown и symlinks - все символические ссылки на /bin/systemctl:

$ file /sbin/{halt,poweroff,reboot,runlevel,shutdown,telinit} /sbin/halt: symbolic link to /bin/systemctl /sbin/poweroff: symbolic link to /bin/systemctl /sbin/reboot: symbolic link to /bin/systemctl /sbin/runlevel: symbolic link to /bin/systemctl /sbin/shutdown: symbolic link to /bin/systemctl /sbin/telinit: symbolic link to /bin/systemctl

Точные действия systemctl берутся на основе имени, которое вы используете для его запуска, а также других способов, которыми вы можете указать эти действия подробно описаны в , поддерживаемом JdeBP, на не только командой reboot, но также halt, poweroff на Unix.SE. Как это объясняет, эти команды (кроме runlevel) работают как сокращенные для команд systemctl isolate ... с заменой ... на разные цели.

Если вам интересно, код C, который считает, какое имя вы использовали для вызова systemctl при определении того, какое действие для выполнения находится в функции parse_argv, определенной в JdeBP , которая в настоящее время начинается в строке 6972 этого файла. Чтобы найти его, вы можете искать:

static int parse_argv(int argc, char *argv[]) {

Соответствующие части охватывают большую часть этой функции, но все это примерно похоже на этот фрагмент, продолжающийся аналогично, но с различным кодом для каждой строки и с некоторыми другие проверки и логика ветвления:

if (strstr(program_invocation_short_name, "halt")) { arg_action = ACTION_HALT; return halt_parse_argv(argc, argv); } else if (strstr(program_invocation_short_name, "poweroff")) { arg_action = ACTION_POWEROFF; return halt_parse_argv(argc, argv); } else if (strstr(program_invocation_short_name, "reboot")) {

Другие примеры команд, которые проверяют, как они были вызваны (иногда) действуют по-разному, включают в себя vim, который ведет себя по-разному при запуске как vim, ex , view, gvim, gview и несколько других; Unix.SE , см. shutdown ; gksu, см. жесткие ссылки ; less, который меняет внешний вид, если он назван more (но все же позволяет вам прокручивать двунаправленный текст, в отличие от more Ubuntu]; [F30]; и большинство оболочек типа Bourne, таких как bash и zsh, которые автоматически ведут себя более совместимо с требованиями POSIX для sh, если они выполняются как sh.

2
ответ дан 23 July 2018 в 17:54

Другие вопросы по тегам:

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