>Скорее всего это абсолютно faq-ный вопрос, но требуется быстрый ответ.
>Когда cron выполняет скрипт от имени root, у скрипта почему-то нет доступа
>к /var/run в следующей строчке:
>echo "$$" > /var/run/$0.pid
>
>Почему это происходит и как это исправить?
Скорее всего вызов скрипта происходит по полному пути, т.е. /usr/bin/myscript. Соответственно, параметр $0 содержит именно этот путь, т.е. Ваша строчка при подстановке выглядит так:
echo "$$" > /var/run//usr/bin/myscript.pid
и естественно не прокатывает. Как выход можно использовать basename:
echo "$$" > /var/run/$(basename $0).pid