Как предотвратить выполнение второй команды в цепочке при сохранении выполнения первой?

Случайно я наткнулся на ACL, с помощью которого я смог решить свою проблему. На стороне Mac я создал новую группу с тем же GID, что и в Linux. Терминал у меня не работал, мне пришлось создать группу в Системных настройках / Пользователи и Гропус и добавить в нее своего пользователя Mac. Затем я устанавливаю ACL, чтобы весь новый контент принадлежал группе пользователей Linux.

sudo setfacl -d -R -m group:Groopname:rwx '/home/Userhome'

Это работает до сих пор для меня.

27
08.04.2021, 01:48
3 ответа

Как вы пояснили в комментариях, он все еще работает на переднем плане в интерактивной оболочке, вы должны просто нажать Ctrl+Z .

Это приостановит задание ./command. Если ./commandфактически не перехватит сигнал SIGTSTP и не решит выйти (0 ), в этом случае (маловероятно ), статус выхода будет не -0 (128+SIGTSTP, обычно 148 ), поэтому sudo poweroffзапускаться не будет.

Затем вы можете возобновить ./commandна переднем или заднем плане с помощью fgили bg.

Вы можете проверить с помощью:

sleep 10 && echo poweroff

И обратите внимание, что poweroffне выводится, когда вы нажимаете Ctrl+Z и возобновляете позже с помощью fg/ bg.

Или с

sleep 10 || echo "failed: $?"

И увидеть failed: 148, как только вы нажмете Ctrl+Z .

Обратите внимание, что это справедливо для zshи при условии, что вы начали его с ./command && sudo poweroff. Это может быть недопустимо для других оболочек и не будет, если вы запустите его каким-либо другим способом, например, (./command && sudo poweroff)в подоболочке или {./command && sudo poweroff; }как часть составной команды (, которая zsh, в отличие от большинства других оболочки преобразуются в подоболочку, чтобы ее можно было возобновить как единое целое при приостановке ).

35
28.04.2021, 22:57

Is there a way to prevent zsh from executing the poweroff command while making sure that the first one runs until it is done?

Я не думаю, что это возможно, если вы не используете что-то вроде gdbдля редактирования памяти запущенного процесса.

Would editing the /etc/sudoers file so that the system asks for my password still help in this case?

Должно помочь.

1
28.04.2021, 22:57

Вы можете просто временно переименовать /sbin/poweroff.

8
28.04.2021, 22:57

Теги

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