История изменений
Исправление
Psych218,
(текущая версия)
:
Ты вызываешь date, who и uptime дважды. Теоретически между первым и вторым вызовом время и аптайм уже могут измениться, соответственно, на экран и в лог попадут разные значения. К тому же это просто дублирование кода и вызов команд (тут они лёгкие совсем, но в теории могли бы быть тяжёлые) дважды, когда результат нужен один раз. Поэтому целесообразно будет вызвать это дело один раз, результат присвоить переменной, а потом уже эту переменную вывести куда надо. Как-то например так:
#!/bin/sh
log_dir=/var/log
data="$(date;who;uptime)"
echo $data
if cd "$log_dir"; then
echo $data >> messages
else
echo "Необходима магия" 1>&2
exit 1
fi
Далее, тебе в принципе не надо переходить в /var/log. Если надо писать в файл /var/log/messages, то можно в него просто сразу писать. Таким образом выходит всё проще и на 5 строк:
#!/bin/sh
logfile=/var/log/messages
data="$(date;who;uptime)"
echo $data
echo $data >> "$logfile" || (echo "Необходима магия" 1>&2 && exit 1)
Исправление
Psych218,
:
Ты вызываешь date, who и uptime дважды. Теоретически между первым и вторым вызовом время и аптайм уже могут измениться, соответственно, на экран и в лог попадут разные значения. К тому же это просто дублирование кода и вызов команд (тут они лёгкие совсем, но в теории могли бы быть тяжёлые) дважды, когда результат нужен один раз. Поэтому целесообразно будет вызвать это дело один раз, результат присвоить переменной, а потом уже эту переменную вывести куда надо. Как-то например так:
#!/bin/sh
log_dir=/var/log
data="$(date;who;uptime)"
echo $data
if cd "$log_dir"; then
echo $data >> messages
else
echo "Необходима магия" 1>&2
exit 1
fi
Далее, тебе в принципе не надо переходить в /var/log. Если надо писать в файл /var/log/messages, то можно в него просто сразу писать. Таким образом выходит всё проще и на 5 строк:
#!/bin/sh
logfile=/var/log/messages
data="$(date;who;uptime)"
echo $data
echo $data >> "$logfile" || echo "Необходима магия" 1>&2 && exit 1
Исходная версия
Psych218,
:
Ты вызываешь date, who и uptime дважды. Теоретически между первым и вторым вызовом время и аптайм уже могут измениться, соответственно, на экран и в лог попадут разные значения. К тому же это просто дублирование кода и вызов команд (тут они лёгкие совсем, но в теории могли бы быть тяжёлые) дважды, когда результат нужен один раз. Поэтому целесообразно будет вызвать это дело один раз, результат присвоить переменной, а потом уже эту переменную вывести куда надо. Как-то например так:
#!/bin/sh
log_dir=/var/log
data="$(date;who;uptime)"
echo $data
if cd "$log_dir"; then
echo $data >> messages
else
echo "Необходима магия" 1>&2
exit 1
fi