Как в Ubuntu автоматически запускать файл с параметрами?
Все привет.
ОС - Ubuntu 16.04
И так. В папке есть исполняемый файл. Его запускаю через командную строку командой: ./name_file -c cp-conf.json . И далее скрипт выполняется циклично, пока его не выключить. После ребута системы, приходится заново проводить процедуру запуска. Подскажите, как сделать автоматическую загрузку скрипта с параметрами в командной строке чтобы этого не делать каждый раз ручками?
Всем спасибо. С этим более менее разобрался. Но вот автозагружаться в упор отказывается. Запускал, скрипт так работает, но после ребута не грузится. Подскажите правильные варианты реализации автозагрузки скрипта после ребута.
Я правильно сделал? Если да, то как его теперь автоматически загрузить после загрузки графической оболочки системы? Должен запустить терминал в котором как раз и будет идти выполнение скрипта.
Нарисовать скрипт
/etc/systemd/system/my_name_file.service
с таким содержимым
[Unit]
Description=My service for ./name_file -c cp-conf.json
[Service]
Type=simple
ExecStart=/path/to/name_file -c /path/to/cp-conf.json
[Install]
WantedBy=multi-user.target
Как то так, простейший скрипт.
Далее реиндксируешь systemd скрипты и проверяешь работоспособность своего
$ sudo systemctl daemon-reload
$ sudo systemctl start my_service.service
если все ок включаешь в автозагрузку
$ sudo systemctl enable my_service.service
Type=simple т.к. у тебя процесс после запуска работает все время. измени если по другому
Если процесс нужно пускать от имени пользователя, то пропиши User
да и вообще почитай маны systemd они бездонные :)
соотвествующие /path/to/cpuminer -c /path/to/cpuminer-conf.json правильно указывают на нужные файлы ??
просто лучше указывать все файлы с полными путями к ним, чтобы не было проблем
тут надо не тупо копировать, а правильно прописать пути
pfg21: понял. по статусу заработало но после ребута терминал не запускается и я не вижу выполнения скрипта. Как сделать чтобы запускался терминал и в нем было выполнение скрипта?
наверное можно как-нибудь, но это не правильно.
весь вывод автозапуска сливается в логи смотри их
$ journalctl -xe
$ journalctl -u miner.service
второе выдаст тебе что в сислог записано с твоего юнита.
pfg21: тогда это не подходит. это майнер. там столько данных выводится, что смысла нет. а какие есть варианты именной моей реализации? Чтобы после запуска системы запускался терминал и шел процес майнинга.
Gordon Frimen: наверное, автологин и автостарт програмки гденить да описан, но неправильно сие.
Кстати вспомнил, можно перенастроить вывод юнита в любое место, смотри systemd.exec
По твоему варианту удобнее будет перенаправить вывод на /dev/tty1 и он тебе будет сорить выводом майнера на экран сразу как скрипт стартует :)
без всяких входов и автологинов в систему.
а входить с клавиатуры будешь через второй терминал - alt-F2
Могу только в общих чертах описать, потому что на память не помню всех команд и деталей.
Надо создать upstart/systemd файл(ы), который(ые) описывает(ют):
1) какую команду(ы) он запускает
2) когда он их запускает - runlevel, запуск после того, как поднимется сетевой интерфейс или монтирование файловой системы - тут возможны различные варианты и комбинации.
3) описывает коллбэки - что сделать перед стартом, что сделать после старта, что сделать после остановки
4) описывает, перезапускать ли программу, если она падает, максимальное число попыток и т.д
5) описывает, запускать ли в виде демона или как-есть.
... и т.д и т.п - там хватает нюансов.
Поэтому, гугли в этом направлении. Точнее, к сожалению, не подскажу.
P.S, systemd пока сам до конца не осилил - уж больно от отличается от upstart, к которому я привык.
Есть гораздо более простой, но МЕНЕЕ предпочтительный вариант: rc.local.
1) Включаем rc.local sudo systemctl enable rc-local.service
2) В /etc/rc.local пишем: /path/to/name_file -c cp-conf.json
Здесь надо иметь ввиду, что желательно указывать полный путь до исполняемого файла, а также интерпретатор: