Как запустить скрипт Bash при запуске на Linux?

Вот пошаговое руководство о том, что я сделал, чтобы заставить Nvidia Optimus работать на Kubuntu 15.10 64-bit. Обратите внимание, что я описываю удобный для пользователя способ, потому что он предназначен для того, чтобы все пользователи могли это сделать.

  1. В диспетчере устройств выберите рекомендуемый драйвер, в моем случае nvidia-352
  2. Если у вас его еще нет, в Muon Discover найдите Muon Package Manager и установите его
  3. Запустите Muon Package Manager, введите nvidia
  4. Убедитесь, что все следующие пакеты установлены, поскольку вам, вероятно, придется установить некоторые из них

    Nvidia Packages

  5. Из меню запустите Konsole и введите sudo kate /etc/bumblebee/bumblebee. conf

  6. Измените следующие строки

Driver=

на

Driver=nvidia

и

KernelDriver=nvidia-current

на

KernelDriver=nvidia-352

и

LibraryPath=

Извините, я не помню, что там было.

на

LibraryPath=/usr/lib/nvidia-352:/usr/lib32/nvidia-352

и

XorgModulePath=

Извините, я не помню, что там было.

to

XorgModulePath=/usr/lib/nvidia-352/xorg,/usr/lib/xorg/modules

  1. Reboot

  2. Из меню запустите Konsole и введите optirun steam, если вы играете в игры через Steam.

1
25.07.2018, 03:02
2 ответа

Если вы выполнили все, например, chmod +x /etc/rc.local, то ваша команда работает, просто она нигде не регистрируется, чтобы вы могли ее увидеть.

Пример

Это мой/etc/rc.local:

$ cat /etc/rc.local
#!/bin/bash
touch /var/lock/subsys/local
echo "hickory stick"

Здесь я использовал модифицированный Bash, который регистрируется в системном журнале, который я обсуждал в других вопросах и ответах U&L под названием:Отправка истории bash в системный журнал .

Когда моя система загружается, я вижу следующее сообщение, регистрируемое через Bash:

/var/log/bash-log/127.0.0.1.log:2018-07-24T22:04:24.609094-04:00 centos7 rc.local: hickory stick

Но больше нигде. Чтобы заставить это войти в syslog/rsyslog, вы обычно можете использовать команду loggerдля этого :

.
$ logger hi

Затем вы можете увидеть это в своем /var/log/messagesили /var/log/syslogили journal -xef. Здесь я использую journald:

$ journalctl -xef
Jul 24 20:23:04 centos7 bash[1629]: HISTORY: PID=1629 UID=0 USER=root CMD=man logger
Jul 24 20:23:24 centos7 bash[1629]: HISTORY: PID=1629 UID=0 USER=root CMD=logger hi
Jul 24 20:23:24 centos7 vagrant[1811]: hi

Вы должны иметь возможность использовать loggerдля захвата вывода команд в сценариях, подобных этому:

$ cat /etc/rc.local
#!/bin/bash
touch /var/lock/subsys/local
echo "hickory stick" | logger

Теперь при перезагрузке:

$ journalctl -xef
...
Jul 24 20:31:41 centos7 bash[1629]: HISTORY: PID=1629 UID=0 USER=root CMD=journalctl -xe
Jul 24 22:24:00 centos7 logger[1286]: hickory stick
Jul 24 22:24:00 centos7 sshd[1270]: Server listening on 0.0.0.0 port 22.
Jul 24 22:24:00 centos7 sshd[1270]: Server listening on :: port 22.
Jul 24 22:24:00 centos7 systemd[1]: Starting Permit User Sessions...

Там мы видим наше сообщение через logger, которое мы добавили в /etc/rc.local.

Дополнительная информация

loggerочень полезен, и вы можете записывать его в файл, а не через переключатель -f,вы также можете управлять тегом, отображаемым в журналах, с помощью переключателя -t.

$ logger -t "smurfs" hi
$ journalctl -xe | grep smurfs
Jul 24 20:38:24 centos7 smurfs[1764]: hi

Ссылки

0
28.01.2020, 00:31

Пробовали ли вы поместить его в свой профиль.bash _? Это файл, который запускается при входе в систему. Таким образом, он не включится, когда все войдут в систему или технически при запуске... но если вы используете одного пользователя, это может быть простым решением для того, что вам нужно.

Перейдите в свой домашний каталог, который, если вы root, на самом деле /root, а не /home/root (, по крайней мере, в дистрибутивах, с которыми я знаком. Возможно, "echo $HOME" подтвердит ваш домашний каталог.)

Оказавшись там, выполните:

ls -la

Должен быть виден скрытый файл с именем.bash _profile Откройте его и посмотрите. В большинстве из них есть некоторые инструкции, закомментированные. Вы можете запустить свой скрипт прямо там или просто вызвать его с помощью:

sh '/home/root/test.sh'

0
28.01.2020, 00:31

Теги

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