Основным различием между выполнением задания крона на командной строке и в кроне является своя среда. Другие разности потенциалов включают текущий каталог, доступность терминала, и какая оболочка используется.
Это - довольно точное моделирование выполнения задания крона через крон. Для предотвращения различий из-за оболочки поместите задание в сценарий и поместите только путь к тому сценарию в crontab. Обратите внимание, что точный набор и значения переменных среды, переданных кроном, являются зависящими от реализации; проверьте crontab(5)
страница справочника в Вашей системе. ifne
команда, которая выполняет команду, указанную в аргументах, если она получает некоторый вход; существует один в moreutils.
env -i HOME="$HOME" LOGNAME="$LOGNAME" PATH=/usr/bin:/bin SHELL=/bin/sh USER="$USER" \
/path/to/script &1 |
ifne mail -r "Cron Daemon" -s "Cron <$USER@$(hostname)> /path/to/script" "$USER"
Другой способ создать подобную крону установку через at
. Но at
заботится о выполнении команды с переменными среды что at
процесс получил, таким образом, все еще необходимо эмулировать эту часть.
echo /path/to/script |
env -i HOME="$HOME" LOGNAME="$LOGNAME" PATH=/usr/bin:/bin SHELL=/bin/sh USER="$USER" \
at now
Глупый я! У меня есть xflux с активированным fluxgui, каждый раз, когда я хотел бы изменить настройки xflux, будет в моем пути. Все команды работали, просто что xflux вернется он назад.
Использовать xrandr
перечислять Ваши выводы:
$ xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
DVI-0 connected 1024x768+0+0 (normal left inverted right x axis y axis) 304mm x 228mm
Поскольку Вы видите, что мой вывод DVI-0
изменить яркость:
xrandr --output DVI-0 --brightness 2
Изменить гамму:
xrandr --output DVI-0 --gamma 2:2:1
Я надеялся, что есть какая-нибудь интерактивная программа для настройки xrandr
параметров (гаммы/яркости в частности ), но ничего не нашел.
Итак, я написал этот сценарий оболочки, который позволяет интерактивную настройку яркости/гаммы, а также сохранение/восстановление настроек.
Сохраните файл в irandr.sh
, выполните chmod u+x irandr.sh
, чтобы сделать его исполняемым, и запустите как ./irandr.sh <outputname>
.
d / f / D / F / j / k / J / K Клавиши регулируют яркость(d / f / D / F)или гамма(j / k / J / K)настройки с шагом 5 (нижний регистр )или 1 (верхний регистр.)
s
сохраняет настройки в точечный файл l
загружает настройки из файла точек r
сбрасывает яркость/гамму на значения по умолчанию (1,0)q
уходит. Точечный файл для данного вывода: ~/irandr-<outputname>.dat
. Если вы запустите без аргумента, он отобразит действительные выходные данные xrandr
.
Вы можете добавить аргумент -setonly
в командную строку, которая будет считывать настройки для файла точек данного дисплея, обновлять дисплей и выходить. (Полезно, наверное, в файле ~/.bashrc
для автоматической установки гаммы/яркости.)
#!/bin/bash
# irandr.sh, by Dale Gass (dale@gass.ca)
# Wed Apr 10 16:43:22 EDT 2019
# Process arguments
if [ "$1" != "" ]
then
output="$1"
else
echo "Usage: irandr.sh <outputname> [-setonly]"
echo "(Settings saved to ~/.xrandr-<outputname>.dat)"
echo
echo "Valid outputs:"
xrandr | egrep -v '^( |Screen)'
exit 1
fi
setonly=0
if [ "$2" = "-setonly" ]; then setonly=1; fi
# Initialize variables, read for dotfile if exists
cmdhelp="d/f/D/F=brightness j/k/J/K=gamma r=reset s=save l=load q=quit"
brightness=100
gamma=100
dotfile=~/.irandr-"$output".dat
if [ -s "$dotfile" ]; then read brightness gamma <"$dotfile"; fi
if [ $setonly -eq 0 ]; then
echo $cmdhelp
stty -echo raw intr $'\000' # Allow single character input
fi
# Main loop for setting adjustment
echo 'Bright Gamma'
while :
do
b=$(bc <<< "scale=2; $brightness/100") # Make 0.0-1.0
g=$(bc <<< "scale=2; $gamma/100")
xrandr --output "$output" --brightness "$b" --gamma "$g:$g:$g"
printf "\r%4d %4d " $brightness $gamma
if [ $setonly -eq 1 ]; then echo; exit 0; fi
read -n1 ch # Get input character from user
case $ch in
d) let brightness=brightness-5;; D) let brightness=brightness-1;;
f) let brightness=brightness+5;; F) let brightness=brightness+1;;
j) let gamma=gamma-5;; J) let gamma=gamma-1;;
k) let gamma=gamma+5;; K) let gamma=gamma+1;;
r) brightness=100; gamma=100;;
s) echo "$brightness $gamma" >"$dotfile" && echo -e "Saved\r";;
l) read brightness gamma <"$dotfile" && echo -e "Loaded\r";;
q|$'\003') break;;
*) echo -e "$cmdhelp\r";;
esac
done
stty echo -raw intr $'\003' # Undo single character input