chroot не выполняется более одного раза в цикле while

Вы можете использовать команду

usermod -s /sbin/nologin username
1
03.01.2021, 00:33
1 ответ

Есть кое-что, что я не могу сформулировать по этому вопросу, и я полагаю, что это как-то связано с текстом:

[1]+  Stopped                ./chroot-poll.sh

Я только каждый раз видел такой текст при запуске процесса в фоновом режиме, но &нигде в вопросе нет, и вы не упомянули о запуске задания в фоновом режиме. Как отмечают другие, я не могу воспроизвести вашу ошибку , за исключением , если я запускаю скрипт в фоновом режиме.

Когда я пытаюсь запустить ваш скрипт с помощью ./chroot-poll.sh &, а не просто ./chroot-poll.sh, я получаю такие же результаты, как и вы, поэтому я могу только предположить, что вы запускаете его в фоновом режиме.

Обычно задание переходит в Stopped, когда оно выполняется в фоновом режиме и пытается прочитать из стандартного ввода. Очень простой обходной путь для этого может заключаться в том, чтобы читать из /dev/nullвместо:

./chroot-poll.sh < /dev/null

Таким образом, когда что-либо пытается прочитать, оно будет читаться из /dev/null, а не из стандартного ввода.


Я считаю, что в конечном итоге это происходит потому, что вы используете bash в интерактивном режиме. Вы не просите его выполнить скрипт, а только переопределяете ~/.bashrc. Несмотря на то, что exitbash по-прежнему читает со стандартного ввода, как будто ожидает, что вы что-то наберете в командной строке. Чтобы заставить bash читать скрипт как скрипт, используйте:

sudo chroot /mnt/myrootfs /bin/bash -f /tmp/hello.sh
1
26.08.2021, 12:35

Теги

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