LINUX.ORG.RU

Помощь с crontab

 


0

1

Простой пример: если в файле есть ип адрес, то создаем каталог.

Содержимое crontab

* * * * * /root/run.sh
Содержимое run.sh
#!/bin/bash
wget "http://192.168.0.11/list.txt"
if [ $? -eq 0 ] ;then
myip=$(ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}')
if grep --quiet $myip list.txt; then
mkdir "HELLO"
rm -rf list.txt
else
rm -rf list.txt
exit
fi
else 
rm -rf list.txt
exit
fi
wget отработал фаил загрузился, но папка не создается. Если просто запустить скрипт, то все работает


Ответ на: комментарий от vbox

Хорошо! тогда почему вместо mkdir «HELLO» я пишу reboot но не чего не происходит ?

Правильный ответ. Что-то в if происходит не то, что хотелось бы. Вопрос только в каком именно if? Логируй, скидывай все значения в какой-нибудь файл echo-м.

Deleted ()
Ответ на: комментарий от vbox

Потому что reboot это алиас. Объяви все необходимые переменные окружения и пиши полный путь до команд, а не алиасов.

anonymous ()
Ответ на: комментарий от funky

env из крона пользователя root:

cat /tmp/root.env
LANGUAGE=en_US:en
LC_TIME=ru_RU.UTF-8
HOME=/root
LC_MONETARY=ru_RU.UTF-8
LOGNAME=root
PATH=/usr/bin:/bin
LC_ADDRESS=ru_RU.UTF-8
LANG=en_US.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
SHELL=/bin/sh
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
PWD=/root
LC_NUMERIC=ru_RU.UTF-8
LC_PAPER=ru_RU.UTF-8

и интерактив:
# env
LC_MEASUREMENT=ru_RU.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s
LC_PAPER=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LANG=en_US.UTF-8
SUDO_GID=1000
DISPLAY=:0
COLORTERM=truecolor
USERNAME=root
SUDO_COMMAND=/bin/su
LC_NAME=ru_RU.UTF-8
XDG_SESSION_ID=3
USER=root
PWD=/home/user
HOME=/root
SUDO_USER=user
LC_ADDRESS=ru_RU.UTF-8
LC_NUMERIC=ru_RU.UTF-8
SUDO_UID=1000
MAIL=/var/mail/root
SHELL=/bin/bash
TERM=xterm-256color
SHLVL=1
LANGUAGE=en_US:en
LC_TELEPHONE=ru_RU.UTF-8
LOGNAME=root
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus
XDG_RUNTIME_DIR=/run/user/0
XAUTHORITY=/home/user/.Xauthority
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
LC_IDENTIFICATION=ru_RU.UTF-8
LESSOPEN=| /usr/bin/lesspipe %s
LC_TIME=ru_RU.UTF-8
_=/usr/bin/env


это раз. и два: https://unix.stackexchange.com/questions/90817/command-not-running-in-cron-systemctl-suspend - c systemd старые трюки с простым reboot в кроне не катят.

SevikL ★★★★★ ()
Ответ на: комментарий от SevikL

Про env я знаю, а вот reboot никогда не пробовал.

funky ()

rm -rf list.txt

(Offtop)

Кроме того, что тут не нужен -r, используй unlink для удаления одного файла. С rm -rf одна опечатка — и полсистемы унесло. Unlink удаляет строго один файл.

Aceler ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.