Я установил crontab задание как это:
@reboot xmodmap -e \"keycode 105=Delete\"
@reboot xmodmap -e \"keycode 66=Home\"
и экономил на каталоге по умолчанию, предложенном НАНО (/tmp/..../.../cron
), но это не работает. Я могу перечислить задание крона, услуга крона работает, вывод journalctl -b 0 _SYSTEMD_UNIT=cron.service
отображает задания без ошибок и так далее. Помимо этого, я также не могу запустить скрипт при начальной загрузке: @reboot /home/user/scripts/myscript.sh
Почему cron
не работа, как я ожидаю?
xmodmap изменяет код клавиши, отображающийся для текущей сессии. Таким образом, при выполнении его в crontab это открывает сессию, изменяет отображение и закрыло сеанс снова - и его эффекта не стало.
Необходимо вместо этого выполнить команды xmodmap в профиле $HOME/.profile
(или в Вашем $HOME/.xinitrc
если Вы запускаете X сессий только при входе в систему).
man xmodmap
говорит:
Это обычно выполняется из сценария запуска сессии пользователя для конфигурирования клавиатуры согласно персональным вкусам.
Смотрите на man cron
, или другие примеры в Интернете. Я полагаю, что проблема, которую Вы имеете, Вы не используете полный путь двоичные файлы.
| melon@pc ~>$ which xmodmap
/usr/bin/xmodmap
В Вашем cron -e
, вместо xmodmap
, Вы поместили бы /usr/bin/xmodmap
.
Но, даже с этим изменением, Вы не будете видеть ключевых изменений.
Linux является большим в этом, он предоставляет различные решения проблем, но изучите, как другие решили подобные проблемы. Например, xmodmap
обычно вызывается в .xinitrc
, который выполняется, когда Ваши X сессий запускаются. xmodmap
действительно не проложит себе путь, Вы пробуете, по крайней мере, для Вашего обычного пользователя.
Так как Вы интересуетесь xmodmap
, Я рекомендую, чтобы Вы посмотрели на документацию и примеры и забыли о cron
полностью для этой текущей проблемы.
Если Вы не желаете посмотреть на документацию и другие примеры, или хотеть реальное понимание того, как вещи работают, можно искать man
страницы:
XMODMAP(1) General Commands Manual XMODMAP(1)
NAME
xmodmap - utility for modifying keymaps and pointer button mappings in X
SYNOPSIS
xmodmap [-options ...] [filename]
DESCRIPTION
The xmodmap program is used to edit and display the keyboard modifier map and keymap table
that are used by client applications to convert event keycodes into keysyms. It is usually
run from the user's session startup script to configure the keyboard according to personal
tastes.
Это последнее предложение имеет ответы на Вашу проблему.
На данном этапе Вы не знаете если cron
не работает (это - Ваше подозрение), или если xmodmap
запущенный, но Вы не видите эффектов. Последний является вероятным сценарием. Ваш пользователь должен выполниться xmodmap
в токе X сессий для xmodmap
изменения, чтобы быть эффективным.
После того как Вы добираетесь xmodmap
работа без cron
, можно решить следующую проблему. Как отмечалось ранее, Вам нужны все системные пути, но также необходимо сказать cron
как петлять. Вы просто указали на файл, который работает над Вашим терминалом, поскольку он использует хижину/интерпретатор (т.е.: #!/bin/bash
). Так, для cron
выполнять a bash
файл...
| melon@nifflheim ~>$ which bash
/usr/bin/bash
| melon@nifflheim ~>$ crontab -e
...
@reboot /usr/bin/bash /home/user/scripts/myscript.sh
Хотя, сделайте Вас, действительно хотят root
запущение скрипта найдено в Вашем пользовательском каталоге? С тем, что Вы изучили до сих пор, возможно, Вы добавляете /usr/bin/bash /home/user/scripts/myscript.sh
(или source
это) в ~/.xinitrc
вместо этого ^ _ ~.