Когда я запускаю оболочку, но это выполняется cron, появляется "sudo: извините, у вас должен быть tty для запуска sudo". но как с этим поступить?
Вы также можете просто перенастроить sudo на не требуется терминал:
Редактирование (как root) файла
/etc/sudoers
И комментируя строку, в которой говорится:
Defaults requiretty
Вам не нужно sudo для запуска программ от имени других пользователей в cron (по крайней мере, с системным crontab).
Просто измените поле пользователя с root на целевого пользователя.
Если вы действительно хотите, чтобы su работал в cron.
Можете добавить NOPASSWD:
к соответствующей записи в файле sudoers, чтобы он не запрашивал пароль, что, я думаю, поможет.
Лучше в первую очередь запускать его из crontab желаемого пользователя и избегать использования sudo.
Чтобы отредактировать crontab Фреда:
su - fred
crontab -e