Решение для Ubuntu 15.10 (думаю в 15.04 и выше работает тоже):
Не забываем менять user на свой
Создадим новый файл, я назвал его finish-yandex, с таким содержанием:
[Unit] Description=Save Yandex config After=systemd-user-sessions.service [Service] ExecStop=/bin/bash '/home/user/.yandex_ram/finish-yandex.sh' Type=oneshot RemainAfterExit=yes [Install] WantedBy=multi-user.target reboot.target poweroff.target
Немного о файле
[spoiler]Unit - общая информация.
Description - описание сервиса.
After - задаёт порядок загрузки. В моём случае после старта сессии пользователя.
Service - содержит информацию о службе
ExecStop - Выполняет команду при остановке сервиса.
Type - Типы службы. oneshot полезен для скриптов, которые выполняют одно задание и завершаются
Install - когда юнит должен быть активирован[/spoiler]
finish-yandex.sh для теста содержит:
#!/bin/sh echo "it works test" >> /home/user/.yandex_ram/test.log
Делаем файл finish-yandex исполняемым:
sudo chmod +x /home/user/.yandex_ram/finish-yandex
Копируем файл в /etc/systemd/system с расширением *.service:
sudo cp /home/user/.yandex_ram/finish-yandex /etc/systemd/system/finish-yandex.service
Перезагружаем systemd для поиска новых или измененных юнитов:
sudo systemctl daemon-reload
Включаем юнит в автозапуск при загрузке системы:
sudo systemctl enable finish-yandex.service
Перезагружаемся и проверяем. У меня все заработало, файл test.log появился после перезагрузки.
Что бы проверить для начало без перезагрузки, можно запустить и остановить юнит:
sudo systemctl start finish-yandex.service sudo systemctl stop finish-yandex.service
Для отключения юнита из автозапуск при загрузке системы:
sudo systemctl disable finish-yandex.service
Полезная ссылка о systemd - тык.
В первом посте решение скорей всего подойдет для Ubuntu 14.10 и ниже
Проблема не в этом, скрипт из консоли отрабатывает, если нет файла то он его создает.
Мне нужно что бы скрипт выполнялся при выключении или перезагрузке.
ps: Почти сделал...
Не знал.
Можно уточню, то есть если я нажму перезагрузку, то он сначала выполнит скрип, а потом уже перезагрузиться?
ps: Это не сервер..
и при перезагрузке =)---------- Добавлено 31.01.2016 в 18:36 ----------
Я уже тут был http://tuksik.ru/auto-start-and-shutdown/, сделал примерно то же самое. Но мне тут подсказали, что
"Ubuntu имеет смешанную систему инициализации. В Ubuntu 14.10 и ниже - sysv и upstart, в Ubuntu 15.04 - upstart и systemd." тык.---------- Добавлено 31.01.2016 в 18:58 ----------
baas, В документации cron пишут что
@reboot Запуск при загрузке
То есть мне это не подходит получается...
Пробую делать на phantomjs...
Сайт чужой.
Отправлять на обработку php скрипту.
Пробовал реализовать через fsockopen:
Пример на тестовом сайте
$fp = fsockopen("multeor.com", 80, $errno, $errstr, 30);if (!$fp) { echo "$errstr ($errno)<br />\n";} else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: multeor.com\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp);}
В результате js скрипт не грузятся...
Вопрос на будущие, а можно к websocket подключиться и отправлять данные на обработку как только они поступают?
Так и сделал =)
Теперь понятно, заменил на .on(), спасибо.
Да в консоли ошибки появились, заменил на live на delegate и вот что получил в консоли если интересно:
Uncaught TypeError: (b || "").match is not a function n.event.add @ jquery.min.js:3 (anonymous function) @ jquery.min.js:3 n.extend.each @ jquery.min.js:2 n.fn.n.each @ jquery.min.js:2 n.fn.extend.on @ jquery.min.js:3 n.fn.extend.delegate @ jquery.min.js:4 (anonymous function) @ contacts.php:20 n.Callbacks.j @ jquery.min.js:2 n.Callbacks.k.fireWith @ jquery.min.js:2 n.extend.ready @ jquery.min.js:2 I @ jquery.min.js:2
Но в принципе у меня все заработало, заменил live на click. Но где-то на днях прочитал, что
click не рекомендуется использовать, а почему не было написано. Вот и не знаю теперь, правильно ли так как я сделал или нет...
Спасибо, подтолкнул в правильном направление :)
zexis, хорошо, сейчас займусь этим.
Окей, спасибо, сейчас буду экспериментировать.