Моя самая большая проблема находится в понимании всей непрозрачной терминологии, которую они изобрели для него. Я вижу, как повторно отобразить единственный ключ в его различных измененных формах, но существует не, "ИГНОРИРУЮТ ЭТОТ КЛЮЧ
В Вашем случае "игнорируют этот ключ", переводит ни на что для "переотображения".
Откройте терминал и работайте:
xmodmap -e 'keycode 112='
Ваша клавиша Page Up перенесет внезапную смерть.
Повторно включите его с:
xmodmap -e 'keycode 112= Prior'
Для постоянного отключения его, добавьте:
keycode 112=
к Вашему ~/.Xmodmap
Протестируйте свой файл конфигурации:
xmodmap ~/.Xmodmap
Нет, Крон знает только день недели, день месяца и месяц.
Выполнять команду дважды в месяц в фиксированные дни (например, 1-е и 16-е) легко:
42 4 1,16 * * do_stuff
Выполнять команду раз в две недели - другое дело. Лучшее, что вы можете сделать - это запускать команду каждую неделю и заставлять ее ничего не делать каждую вторую неделю. В Linux вы можете разделить количество секунд с эпохи (date +%s
) на количество секунд в неделю, чтобы получить число, которое переворачивает четность каждую неделю. Обратите внимание, что в кронтабе %
нужно экранировать (крон превращает %
в новые строки перед выполнением команды).
42 4 * * 1 case $(($(date +\%s) / (60*60*24*7))) in *[02468]) do_stuff;; esac
Вы не можете напрямую иметь CRON
. Запустите задание в две недели (каждые две недели). Тем не менее, это достаточно просто, чтобы гарантировать, что основная часть работы проходит только каждую в другую неделю. @Gilles предложил одно решение; Вот еще один:
42 4 * * 1 test 1 -eq $(($(date +\%g) & 1)) && do_stuff...
Дата +% G
команда возвращает текущую неделю номер (года), и это побитовое и для возврата либо 1 или 0, прежде чем использовать, чтобы определить, может ли реальную работу быть запущенным.
Такое же оговорку на процентном символе %
вход необходимо избежать, чтобы предотвратить %
: в Crontab
Crontab CRON
.
Я знаю, что опаздываю на вечеринку, но всем нужно одно или три решения любой проблемы...
Я нашел этот пост, когда хотел сделать то же самое, что и ОП, за исключением воскресенья.
@user140906 имеет действительную проблему, которую можно наблюдать при запуске этого фрагмента;
for n in $(seq 17 33); do ncal -A1 -bw dec 20${n}; done
Кажется, что сначала это повторяется каждые 6 лет. -Я не проверял их все!:-)
Затем я нашел эту ссылку , которая предлагает два решения, одно из которых похоже на @gilles -, поэтому -перестать -быть -злом, это должно работать, наиболее очевидным является ниже;
#!/bin/bash
# a file marking the state on disk
mark_file=$HOME/.job-run-marker-1
# check whether the job run last time it is invoked
if [ -e $mark_file ] ; then
rm -f $mark_file
else
touch $mark_file
exit 0
fi
# job command is here
В сочетании с записью crontab, например;
0 2 * * 2 my_script
Легко адаптируется для использования с несколькими crontab
записями (передает значение для mark_file
или ID
вместо жесткого -кодирования )или расширяет ту же логику с некоторыми grep
/ awk
/ sed
для добавления/удаления/добавления строк в файле, представляющих идентификатор и статус/дату выполнения каждого задания.
В любом случае, надеюсь, это поможет кому-то, возможно, даже будущему мне!