xargs имеет дело плохо со специальными символами (" 'пространство), таким образом, я дам Вам пример с помощью Параллели GNU:
sql -n mysql://user:pass@host/my_db "select data from my_table" | parallel -q sql mysql://user:pass@host/my_db "delete from my_table where data='{}'"
Требуется буквально 10 секунд для установки Параллели GNU (который включает GNU SQL):
wget pi.dk/3 -qO - | sh -x
Посмотрите вводные видео для узнавания больше: https://www.youtube.com/playlist? list=PL284C9FF2488BC6D1
Последняя последовательность должна быть
FOOEMPLOYEES ALL = (ALL) NOPASSWD: FOOCOMMANDS
От man sudoers
-121--210052-Основной структурой пользовательской спецификации является "who = (as_whom) what "
Выполните следующий сценарий с параметром командной строки tarball в качестве параметра командной строки
#!/bin/bash
DIR=$(tar tvf ${1} | egrep -o "[^ ]+/$")
if [ $(echo ${DIR} | egrep -o " " | wc -l) -eq 0 ]; then
echo ${DIR};
else
echo "ERROR: multiple directories in tarball base"
exit 1
fi
-121--89416- Произвольное копирование .so
файлов в общесистемные каталоги не является хорошей практикой, поскольку оно будет копировать общие библиотеки в целевую систему без системы пакетов
Ваш пробег может быть разным, но вы можете найти три разных подхода:
Первый пытается установить необходимые программные пакеты, которые содержат совместимые версии библиотек в целевом дистрибутиве. Однако для этого требуется root, который вы указали как не являющийся опцией. В любом случае, если в какой-то момент это окажется опцией, вот некоторые подсказки, помогающие в таком подходе: ldd you_executable_file
показывает библиотечные зависимости конкретной программы. Можно искать пакеты в дистрибутиве, предоставляющем такие библиотеки (например, в Fedora можно использовать yum provides path_to_required_file
, чтобы указать, какие пакеты необходимо установить.
Второй пытается создать агностический исполняемый файл дистрибутива. Для этого при компиляции программного обеспечения следует использовать статические библиотеки. Обычно можно найти как общие (.so), так и статические (.a) версии большинства библиотек в Linux. Следует использовать статические версии и связывать их как файлы объектов (.o). Обратная сторона состоит в том, что созданный двоичный файл будет намного больше, чем при использовании общих библиотек, потому что он будет нести весь код библиотеки в себе. Кроме того, он не будет чувствителен к исправлениям ошибок в тех библиотеках, которые позже были установлены в системе (для этого потребуется перекомпиляция программы с новой исправленной версией).
Третий вариант - копирование библиотек в новую систему (даже если они не являются корневыми) в каталог под домашней папкой и использование переменных среды LD _ LIBRARY _ PATH
и/или LD _ PRELOAD
, чтобы заставить динамический компоновщик использовать копии библиотек. Обратите внимание, что может потребоваться скопировать несколько библиотек (которые будут обнаружены с помощью команды ldd
, упомянутой выше). LD _ LIBRARY _ PATH
сообщает динамическому компоновщику просмотреть дополнительные пути для поиска отсутствующих библиотек. LD _ PRELOAD
заставляет динамический компоновщик предварительно загрузить определенную версию библиотеки, переопределяющую версию системы.