Не могу использовать утилиту «at»

Я использую Ubuntu 16.04 и пытаюсь выполнить непосредственно на Bash:

sudo cat << EOF | at 'now + 1 minute'
echo "hello"
EOF

Я получаю:

warning: commands will be executed using /bin/sh job 6 
at Wed Dec 28 03:01:00 2016
Can't signal atd (permission denied)

Итак, если нет разрешения на запуск команды, фраза hello не будет отражено на Баше.

Если я использую sudo, почему в разрешении будет отказано? В отличие от cd, который является не утилитой, а встроенной командой оболочки, at (как и cat) являются утилитами, поэтому sudo должны их применять.

Возможно, вы знаете, почему at нельзя использовать?

5
задан 30 December 2016 в 08:33

1 ответ

TL; DR: переместиться sudo через канал (|) к at управляйте собой.

Вы действительно не работали at как корень.

Вы работали cat как корень (sudo cat ...), и переданный по каналу вывод cat кому: at, но Вы не работали at сама команда как корень.

Во многих системах некоторым некорневым пользователям разрешают работать в заданиях. Однако, если это не то, что Вы хотите, Ваша система настроена путем, Вам нравится, и Вы намереваетесь выполнить этот конкретный в задании как корень, затем можно решить проблему путем выполнения at как базируются вместо cat. (Так или иначе Вы не должны работать cat как базируются в этой ситуации.)

Чтобы сделать это, поместить sudo прежде at вместо cat:

cat << EOF | sudo at 'now + 1 minute'

Дополнительные детали:

В настоящее время Вы имеете:

sudo cat << EOF | at 'now + 1 minute'
echo "hello"
EOF

Это работает cat как базируются с sudo, передача echo "hello" к нему (с синтаксисом здесь-документа). cat стандартный вывод команды передается по каналу к команде at 'now + 1 minute', который не выполняется как корень. Поэтому at попытки запланировать задание как некорневого пользователя, который выполнил его (Вы).

Если Вы хотите в задании работать как корень, можно решить эту проблему путем изменения его на:

cat << EOF | sudo at 'now + 1 minute'
echo "hello"
EOF

При позже конфигурировании некорневой учетной записи пользователя, которую Вы используете, чтобы быть разрешенными работать в заданиях, то Вы не выполнили бы никакую команду как корень:

cat << EOF | at 'now + 1 minute'
echo "hello"
EOF
10
ответ дан 30 December 2016 в 08:33
  • 1
    Спасибо за предложение и у меня действительно есть SSD. К сожалению, это не устраняет проблему. I' ve, выливаясь по выводу dmesg и there' s никакая ссылка на enp5s0f1 кроме того, где это говорит " переименованный от eth0"; таким образом, никакой " ссылка становится ready" сообщение это I' ve, замеченный в dmesg, производится в других системах. – crw4096 17 October 2018 в 15:12

Другие вопросы по тегам:

Похожие вопросы: