Crontab и C, которые должны быть выполнены в окне терминала

Только для luls: я нашел какое-то твердое решение под названием OSGi и одну из популярных реализаций: Apache Felix

Но я думаю, что ответ sdfsdfsdf будет работать лучше для моих обстоятельств.

2
задан 14 September 2017 в 19:13

3 ответа

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

* * * * * /home/<user>/Desktop/a.out

Если пути внутри программы относительны, их исходная точка должна быть правильно определена , иначе выходной файл будет помещен, например, в каталог $HOME вместо $HOME/Desktop, где вы предполагаете быть.

Если программа не записывает никакого выходного файла и просто генерирует некоторые данные внутри stdout, вы должны перенаправить его в файл, чтобы увидеть его в подходящее место (эта часть 2>&1 перенаправляет и сообщения об ошибках в stdout):

* * * * * /home/<user>/Desktop/a.out >> /home/<user>/Desktop/a.out.log 2>&1

Пока stdout не перенаправляется, Cron отправит пользователю stdout пользователю , если это не отменено установкой переменной MAILTO в crontab:

MAILTO="my@custom.mail"
* * * * * /home/<user>/Desktop/a.out
Ссылки: Как обнаружить ошибку в заданиях cron | Как сделать cron create cron.log?

Выполнение приложения GUI через Cron является более сложной задачей, поскольку Cron не предназначен для работы с графическим интерфейсом. Необходимо экспортировать несколько переменных окружения, и лучший способ сделать это - создать дополнительный сценарий запуска. Вот пример, как это сделать в Ubuntu Unity / Gnome:

Ссылки: Как обнаружить ошибку в заданиях cron | Как сделать cron create cron.log? Теперь создайте задание пользователя Cron - crontab -e - как это:
* * * * * /home/<user>/Desktop/a-cron.sh > /home/<user>/Desktop/a-cron.log 2>&1</pre>
В отличие от вышеприведенного раздела, файл журнала играет здесь разную роль. Сообщения об ошибках от выполнения a-cron.sh должны быть записаны внутри a-cron.log - поэтому, если все в порядке, оно должно быть пустым. Сохраните и закройте crontab, чтобы применить задание. Подождите около минуты, чтобы увидеть результат.

Ссылки:

Теперь создайте задание пользователя Cron - crontab -e - как это:
* * * * * /home/<user>/Desktop/a-cron.sh > /home/<user>/Desktop/a-cron.log 2>&1</pre>
В отличие от вышеприведенного раздела, файл журнала играет здесь разную роль. Сообщения об ошибках из выполнения a-cron.sh должны быть записаны внутри a-cron.log - поэтому, если все в порядке, оно должно быть пустым.

Теперь создайте задание пользователя Cron - crontab -e - как это:

Сохраните и закройте crontab, чтобы применить задание. Подождите около минуты, чтобы увидеть результат.

Сохраните и закройте crontab, чтобы применить задание. Подождите около минуты, чтобы увидеть результат.

Откройте программный ключ gnome и выполните команды после выполнения bashrc. Как программно найти текущее значение DISPLAY, когда DISPLAY не установлен? (для использования в crontab) | Как получить номер дисплея, который я назначил X

В этом вопросе OP использует корневой файл Crontab, но это не очень хорошая идея, потому что в рамках этого подхода право собственности на некоторые файлы и каталоги внутри /run/user/<uid>/dconf/ будет (! d35)

Как открыть одно (или более) окно gnome-terminal с несколькими вкладками, каждый с различным профилем, при запуске / перезагрузке компьютера? [!d42 ]

5
ответ дан 22 May 2018 в 18:30
  • 1
    Итак, как мне изменить его, чтобы я мог видеть результат? – IDK 14 September 2017 в 00:54
  • 2
    @IDK, вы можете проверить, размещен ли вывод в вашем домашнем каталоге - /home/username? Btw, * * * * * в cronjobs означает каждую минуту. – pa4080 14 September 2017 в 00:58
  • 3
    Я не вижу выхода в моем домашнем каталоге – IDK 14 September 2017 в 01:03
  • 4
    вывод находится на терминале, я не вижу больше создаваемых файлов – IDK 14 September 2017 в 01:11
  • 5
    Хорошая работа и +1! Незначительная нить выбирает таймер «Bash». в вашей демонстрации: вам не нужно использовать подстановку команд и echo -ne, чтобы переместить курсор терминала в начало строки, если у вас есть встроенная команда printf Bash в вашем распоряжении: printf '%(%c)T\r' -1. Это также экономит некоторые ресурсы, потому что системе не нужно постоянно переводить + fork + exec. – David Foerster 15 September 2017 в 05:17

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

* * * * * /home/<user>/Desktop/a.out

Если пути внутри программы относительны, их исходная точка должна быть правильно определена , иначе выходной файл будет помещен, например, в каталог $HOME вместо $HOME/Desktop, где вы предполагаете быть.

Если программа не записывает никакого выходного файла и просто генерирует некоторые данные внутри stdout, вы должны перенаправить его в файл, чтобы увидеть его в подходящее место (эта часть 2>&1 перенаправляет и сообщения об ошибках в stdout):

* * * * * /home/<user>/Desktop/a.out >> /home/<user>/Desktop/a.out.log 2>&1

Пока stdout не перенаправляется, Cron отправит пользователю stdout пользователю , если это не отменено установкой переменной MAILTO в crontab:

MAILTO="my@custom.mail" * * * * * /home/<user>/Desktop/a.out Ссылки: Как обнаружить ошибку в заданиях cron | Как сделать cron create cron.log?

Выполнение приложения GUI через Cron является более сложной задачей, поскольку Cron не предназначен для работы с графическим интерфейсом. Необходимо экспортировать несколько переменных окружения, и лучший способ сделать это - создать дополнительный сценарий запуска. Вот пример, как это сделать в Ubuntu Unity / Gnome:

Ссылки: Как обнаружить ошибку в заданиях cron | Как сделать cron create cron.log? Теперь создайте задание пользователя Cron - crontab -e - как это: * * * * * /home/<user>/Desktop/a-cron.sh > /home/<user>/Desktop/a-cron.log 2>&1</pre> В отличие от вышеприведенного раздела, файл журнала играет здесь разную роль. Сообщения об ошибках от выполнения a-cron.sh должны быть записаны внутри a-cron.log - поэтому, если все в порядке, оно должно быть пустым. Сохраните и закройте crontab, чтобы применить задание. Подождите около минуты, чтобы увидеть результат.

Ссылки:

Теперь создайте задание пользователя Cron - crontab -e - как это: * * * * * /home/<user>/Desktop/a-cron.sh > /home/<user>/Desktop/a-cron.log 2>&1</pre> В отличие от вышеприведенного раздела, файл журнала играет здесь разную роль. Сообщения об ошибках из выполнения a-cron.sh должны быть записаны внутри a-cron.log - поэтому, если все в порядке, оно должно быть пустым.

Теперь создайте задание пользователя Cron - crontab -e - как это:

Сохраните и закройте crontab, чтобы применить задание. Подождите около минуты, чтобы увидеть результат.

Сохраните и закройте crontab, чтобы применить задание. Подождите около минуты, чтобы увидеть результат.

Откройте программный ключ gnome и выполните команды после выполнения bashrc. Как программно найти текущее значение DISPLAY, когда DISPLAY не установлен? (для использования в crontab) | Как получить номер дисплея, который я назначил X

В этом вопросе OP использует корневой файл Crontab, но это не очень хорошая идея, потому что в рамках этого подхода право собственности на некоторые файлы и каталоги внутри /run/user/<uid>/dconf/ будет (! d35)

Как открыть одно (или более) окно gnome-terminal с несколькими вкладками, каждый с различным профилем, при запуске / перезагрузке компьютера?

5
ответ дан 18 July 2018 в 06:55

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

* * * * * /home/<user>/Desktop/a.out

Если пути внутри программы относительны, их исходная точка должна быть правильно определена , иначе выходной файл будет помещен, например, в каталог $HOME вместо $HOME/Desktop, где вы предполагаете быть.

Если программа не записывает никакого выходного файла и просто генерирует некоторые данные внутри stdout, вы должны перенаправить его в файл, чтобы увидеть его в подходящее место (эта часть 2>&1 перенаправляет и сообщения об ошибках в stdout):

* * * * * /home/<user>/Desktop/a.out >> /home/<user>/Desktop/a.out.log 2>&1

Пока stdout не перенаправляется, Cron отправит пользователю stdout пользователю , если это не отменено установкой переменной MAILTO в crontab:

MAILTO="my@custom.mail" * * * * * /home/<user>/Desktop/a.out Ссылки: Как обнаружить ошибку в заданиях cron | Как сделать cron create cron.log?

Выполнение приложения GUI через Cron является более сложной задачей, поскольку Cron не предназначен для работы с графическим интерфейсом. Необходимо экспортировать несколько переменных окружения, и лучший способ сделать это - создать дополнительный сценарий запуска. Вот пример, как это сделать в Ubuntu Unity / Gnome:

Ссылки: Как обнаружить ошибку в заданиях cron | Как сделать cron create cron.log? Теперь создайте задание пользователя Cron - crontab -e - как это: * * * * * /home/<user>/Desktop/a-cron.sh > /home/<user>/Desktop/a-cron.log 2>&1</pre> В отличие от вышеприведенного раздела, файл журнала играет здесь разную роль. Сообщения об ошибках от выполнения a-cron.sh должны быть записаны внутри a-cron.log - поэтому, если все в порядке, оно должно быть пустым. Сохраните и закройте crontab, чтобы применить задание. Подождите около минуты, чтобы увидеть результат.

Ссылки:

Теперь создайте задание пользователя Cron - crontab -e - как это: * * * * * /home/<user>/Desktop/a-cron.sh > /home/<user>/Desktop/a-cron.log 2>&1</pre> В отличие от вышеприведенного раздела, файл журнала играет здесь разную роль. Сообщения об ошибках из выполнения a-cron.sh должны быть записаны внутри a-cron.log - поэтому, если все в порядке, оно должно быть пустым.

Теперь создайте задание пользователя Cron - crontab -e - как это:

Сохраните и закройте crontab, чтобы применить задание. Подождите около минуты, чтобы увидеть результат.

Сохраните и закройте crontab, чтобы применить задание. Подождите около минуты, чтобы увидеть результат.

Откройте программный ключ gnome и выполните команды после выполнения bashrc. Как программно найти текущее значение DISPLAY, когда DISPLAY не установлен? (для использования в crontab) | Как получить номер дисплея, который я назначил X

В этом вопросе OP использует корневой файл Crontab, но это не очень хорошая идея, потому что в рамках этого подхода право собственности на некоторые файлы и каталоги внутри /run/user/<uid>/dconf/ будет (! d35)

Как открыть одно (или более) окно gnome-terminal с несколькими вкладками, каждый с различным профилем, при запуске / перезагрузке компьютера?

5
ответ дан 24 July 2018 в 18:41

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

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