Как запускать скрипты при запуске?

Как я могу запускать скрипты автоматически при запуске Ubuntu, чтобы мне не приходилось запускать их вручную после запуска?

Комментарии к вопросу (3)

Один из подходов заключается в добавлении задачи @reboot cron:

  1. Запуск crontab -e позволит вам отредактировать ваш cron.

  2. Добавьте в него следующую строку:

     @reboot /path/to/script

    выполнит этот скрипт после загрузки компьютера.

Комментарии (30)
Решение

В зависимости от того, какие скрипты нужно запустить.. за услуги и как вы должны использовать выскочка. Но для скрипта пользователей они должны быть запущены как сессия скрипты гном! Посмотри в разделе Система и GT; предпочтения и GT; запуск приложений.

На стороне записки, Если вам нужны скрипты для запуска на вход терминала вы можете добавить их на .bash_login все файл в вашем домашнем каталоге.

Для 14.04 и старше

Нужен простой команды (тот, который не'т продолжать бег) можно использовать выскочка работы, как:

start on startup
task
exec /path/to/command

Сохранить это в .файл Conf в /etc/инит (если вам это нужно, чтобы запустить как root при загрузке системы), или в `~/.конфиг/выскочка (если вам это нужно для запуска в качестве пользователя, когда вы входите в игру).

Комментарии (9)

Вы можете добавить команды из/etc/rc автомобиль.местные`:

sudo nano /etc/rc.local

Этот выполняет команды как root.

Для выполнения команд от имени определенного пользователя, используйте команду sudo -я -у(-i, чтобы запустить оболочку). Например, чтобы установить постоянное SSH туннель, где окружения myhost, которая является definde вjohndoe в в ~/.файл SSH/config файл:

sudo -i -u johndoe autossh -nNT -L 1234:localhost:1234 myhost

Обратите внимание, что если в/etc/файл RC.местные/была пуста, она не может существовать, так что вы должны добавить [притон линия](https://en.wikipedia.org/wiki/Shebang_%28Unix%29) на вершине (например,#! /бин/Баш`), и убедитесь, что файл является исполняемым:

sudo chmod +x /etc/rc.local
Комментарии (8)

Для 15.04 и позже:

Чтобы запустить (короткоживущих)<суп>1</с SUP> команда на запуск, используя systemd в, Вы можете использовать блок инициализации по умолчанию для типа одноразовые. Например, создать файл/etc/systemd в/системы/ФОО.услуг, содержащий:

[Unit]
Description=Job that runs your user script

[Service]
ExecStart=/some/command
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Затем выполните:

sudo systemctl daemon-reload
sudo systemctl enable foo.service

По сути, это просто преобразования типичный выскочка работа к systemd в один (см. systemd для пользователей выскочка).

Можно выполнять несколько команд из одной файловой службы, через несколько ExecStart линий:

[Service]
ExecStart=/some/command
ExecStart=/another/command some args
ExecStart=-/a/third/command ignore failure

Команда всегда должна быть дана с указанием полного пути. Если одна из команд не удается, остальные же'т бежать. - Перед путь говорит нет причин продолжать игнорировать ненулевой статус выхода (не считая ее провал).

Актуальны:


Для сеансов пользователей, вы можете создать блок systemd в в ~/.конфиг/systemd в Вместо. Это должно работать с 16.04 года, но не ранее выпусков Ubuntu с systemd (поскольку эти выскочки до сих пор используется для сеансов пользователей). Сессии единицы пользователей могут управляться с теми же самыми командами как с системными службами, но с опцией--пользователь добавил:

systemctl --user daemon-reload
systemctl --user status foo.service

Синтаксис# раковина

Обратите внимание, что в отличие от выскочки, systemd в не'т выполнять команды метод exec* через оболочку. Он выполняет некоторые ограниченные вычисления переменной и нескольких команд (разделенных символом;) сама по себе, но, что&#39;ы об этом так далеко, как Shell-подобный синтаксис идет. На что-то более сложное, скажем перенаправление или трубы, обернуть команду вШ-с '...'или Баш-с &#39;...&#39;.


<суп>1</хлебать>в отличие от долгоживущих демонов.

Комментарии (8)

Существуют различные способы для автоматического запуска команд:

  1. В выскочка система будет выполнять все скрипты, из которого он обнаруживает конфигурации в директорию /и т. д./init. Эти сценарии будут запущены при запуске системы (или в ответ на определенные события, например, запрос на выключение) и место для выполнения команд, которые не взаимодействуют с пользователем; все серверы начали использовать этот механизм.

Вы можете найти читаемое введение в тему: http://upstart.ubuntu.com/getting-started.html страницы man человек 5 init и `человек 8 инициализации дадим вам полную информацию.

  1. Shell-скрипт с именем `.gnomerc в свой домашний каталог автоматически поступает каждый раз при входе в сеанс гнома. Вы можете поставить произвольные команды там; переменные окружения, которые вы установили в этот скрипт будет видно с любой программой, которую можно запускать в ваш сеанс.

Отметим, что сессия не начнется до тех пор, пока .сценарий gnomerc завершена; поэтому, если вы хотите автозапуск некоторые долгоиграющие программы, нужно добавить & для вызова программы, для того, чтобы отсоединить его от оболочки.

  1. Меню *системы -и gt; Настройки -> запуск приложений позволяет определить, какие приложения должен быть запущен, когда ваш графический сессия начинается (Убунту, соответственно, совсем немного), и добавить или удалить их на свой вкус. Это почти те же цели и сферы применения .сценарий gnomerc, кроме вас, Дон'т должны знать ш синтаксис (но ни вы можете использовать любые " ш " программная конструкция).
Комментарии (3)
$HOME/.config/autostart
  • Этот каталог содержит список приложений автозагрузки.
  • `.файл рабочего стола можно поставить здесь, который будет выполняться при запуске.

Образец пример .файл рабочий стол:

Поставив следующий .файл рабочий стол в $дома/.файл config/автостарт и дал команду chmod +х:

[Desktop Entry]
Type=Application
Exec=""
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Startup Script

Здесь в "</путь/к/скрипт>" в заменяется на путь к вашему script.sh<БР>(обычно рекомендуют /usr/местные/Бен так что может быть выполнена путем непосредственного командования говорят универсальный заменить " и</путь/к/скрипт>"в).

Образец пример script.sh`:

#!/bin/bash

exit

Результат: .файл рабочий стол будет запущен с$дома/.конфиг/автостарт, которые выполняют сценарийметод exec=`

Таким образом, Вы можете запустить нужный скрипт при запуске!

Комментарии (0)

Для простых вещей вы можете добавить команду в System->Preferences->Sessions, указывающую на расположение вашего скрипта.

Также вы можете добавить его в /etc/init.d/rc.local или сделать задание upstart, если это более низкий уровень.

Посмотрите на https://help.ubuntu.com/community/UbuntuBootupHowto для получения дополнительной информации.

Комментарии (0)

ответ #хрон реализованы различные сверху голосовал

Этот ответ до сих пор использует хрон, но использует другой метод, чем топ-проголосовали ответ. Это работает начиная с Ubuntu 16.04, но, вероятно, гораздо раньше. Это's просто, что я начал использовать хрон для выполнения задания, когда компьютер загружается с 16.04.

При запуске делает хрон?

В комментариях кто-то спрашивал "Когда же они бегут?&и". Вы можете сказать в syslog / journalctl:

$ journalctl -b | grep cron
Jan 02 16:54:40 alien cron[919]: (CRON) INFO (pidfile fd = 3)
Jan 02 16:54:40 alien cron[919]: (CRON) INFO (Running @reboot jobs)
Jan 02 16:54:40 alien systemd[1]: Started Run anacron jobs.
Jan 02 16:54:40 alien anacron[949]: Anacron 2.3 started on 2018-01-02
Jan 02 16:54:40 alien anacron[949]: Normal exit (0 jobs run)
Jan 02 16:54:40 alien CRON[952]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[954]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[951]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[950]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[985]: (root) CMD (   /usr/local/bin/cron-reboot-cycle-grub-background)
Jan 02 16:54:40 alien CRON[954]: pam_unix(cron:session): session closed for user root
Jan 02 16:54:40 alien cron[919]: sendmail: Cannot open smtp.gmail.com:587
Jan 02 16:54:40 alien CRON[952]: pam_unix(cron:session): session closed for user root
Jan 02 16:54:40 alien cron[919]: sendmail: Cannot open smtp.gmail.com:587
Jan 02 16:54:40 alien CRON[950]: pam_unix(cron:session): session closed for user root

Одна вещь, чтобы отметить хрон может вам по электронной почте статусе выполнения заданий и @перезагрузке выполнения заданий так рано диспетчер сети и электронной почты выиграл&#39;т быть запущена, если вы положили насон` команду в скрипт(ы).

Куда положить свои скрипты

Положить скрипты в директорию /и т. д./cron.д:

$ ll /etc/cron.d
total 44
drwxr-xr-x   2 root root  4096 Nov 26 19:53 ./
drwxr-xr-x 139 root root 12288 Dec 31 13:58 ../
-rw-r--r--   1 root root   244 Dec 28  2014 anacron
-rw-r--r--   1 root root   148 Feb 18  2017 cycle-grub-background
-rw-r--r--   1 root root   138 Mar  5  2017 display-auto-brightness
-rw-r--r--   1 root root   460 Nov 26 19:53 nvidia-hdmi-sound
-rw-r--r--   1 root root   102 Feb  9  2013 .placeholder
-rw-r--r--   1 root root   224 Nov 19  2016 touch-vmlinuz
-rw-r--r--   1 root root   700 Aug  5 11:15 turn-off-hyper-threading

Что делает скрипт выглядит?

Вот пару скриптов у меня есть установки для запуска каждой загрузке:

$ cat /etc/cron.d/cycle-grub-background SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
@reboot   root    /usr/local/bin/cron-reboot-cycle-grub-background

$ cat /etc/cron.d/touch-vmlinuz
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot   root    touch "/boot/vmlinuz-"`uname -r`
Комментарии (5)

Для этого следует использовать upstart. Upstart используется для процессов Ubuntu, которые запускаются автоматически. Это усовершенствованное решение, подобное старым скриптам System-V init.d. Он также позволяет вам вводить предварительные условия для запуска вашего скрипта (например, нужна ли вам работающая сеть? и т.д.).

Комментарии (0)