Я не знаю, что делает QtGui.QDesktopServices.openUrl
, но я сильно подозреваю, что он открывает URL-адрес в соответствующем приложении общение с некоторым демоном KDE через сеанс X11, а не запуск браузера непосредственно в качестве своего дочернего элемента. Вы можете проверить это, посмотрев на идентификатор родительского процесса получившегося браузера. В связи с этим не имеет значения, на какой UID переключился ваш скрипт - имеет значение только uid демона.
Запуск сеансов X11 от имени root - обычно плохая идея. Могу я предложить запустить сеанс X11 от имени обычного пользователя и иметь только ваш сценарий Python, запускаемый от имени пользователя root (только если он проверен и только если вам это действительно нужно)?
xargs помогает выполнять команды в строках вывода, например:
find. -name '*.mp3' | xargs mp3info
для каждого файла, найденного с помощью find (, т.е. строка вывода)
mp3info <filename>
выполняется
Если вы хотите что-то сделать с целыми выводами find, вам вообще не нужны xargs.
xargs
принимает строки из стандартного ввода и командной строки в своей собственной командной строке. Он запускает командную строку, используя строки из стандартного ввода в качестве аргументов для командной строки. Это в основном делает косвенность. Если у вас есть список имен файлов (, например, find
производит ), вы можете выполнять операции с отдельными файлами (или их содержимым )с помощью xargs
. Например, получить топ -20 частотных слов из нескольких текстовых файлов:
find. -name '*.txt' | xargs cat | tr -s '[:blank:]' '\n' | sort | uniq -c | sort -k1.1nr | head -20
Я не уверен, что стоит выполнять задачу из вопроса 1. Я уверен, что это можно сделать, но зачем? И вот ответ на вопрос 2 :нет преимущества ни в исполнении, ни в ясности намерения.
В общем, преимущество использования xargs
заключается в том, что вы можете делать сложные вещи, чтобы решить, какие имена файлов помещать в стандартный ввод. К вашему find
может быть добавлено время -создания -, или более одного глобуса имени, или что-то еще. Просто наличие статического списка имен файлов сводит на нет любое преимущество, которое вы могли бы получить от xargs
:, вам лучше использовать cat
, иначе запуск команды xargs
будет выполняться в цикле.