как запустить две команды в sudo?
есть ли способ как я могу запустить две команды DB2 из командной строки? (Они будут вызваны из PHP
8 ответов:
sudo может запускать несколько команд через оболочку, например:
$ sudo -s -- 'whoami; whoami' root rootваша команда будет что-то вроде:
sudo -u db2inst1 -s -- "db2 connect to ttt; db2 UPDATE CONTACT SET EMAIL_ADDRESS = 'mytestaccount@gmail.com'"Если ваша версия sudo не работает с точками с запятой с -s (по-видимому, это не так, если она скомпилирована с определенными параметрами), вы можете использовать
sudo -- sh -c 'whoami; whoami', который в основном делает то же самое, но название явно оболочку.
альтернативы с помощью
eval
таким образом, избегая использования подрешетки:sudo -s eval 'whoami; whoami'
Примечание: другие ответы с помощью
sudo -s
сбой, потому что кавычки передаются в bash и запускаются как одна команда, поэтому необходимо удалить кавычки с eval.eval
лучше объяснить это так что ответцитирование внутри команд тоже проще:
$ sudo -s eval 'whoami; whoami; echo "end;"' root root end;
и если команды должны перестать работать, если один не удается использовать двойные амперсанды вместо двоеточий:
$ sudo -s eval 'whoami && whoamit && echo "end;"' root /bin/bash: whoamit: command not found
The не работает для меня,
-i
сделал.вот пример того, как я мог бы обновить размер журнала из моего bash:
sudo -u [user] -i -- sh -c 'db2 connect to [database name];db2 update db cfg for [database name] using logsecond 20;db2 update db cfg for [database name] using logprimary 20;'