Фактически, два. Это гораздо более вероятный.
Ubuntu 15 перешел на systemd для общесистемного управления службами. Но управление услугами для каждого пользователя все еще оставалось прерогативой выскочки, и это все еще имело место в 16.04.
Естественно, systemctl
не найдет для каждого пользователя экземпляр systemd
, с которым можно будет поговорить. Обратите внимание, что systemctl
не сообщает, что он не распознал файл служебной единицы. Он сказал, что не может подключиться к «шине», через которую он общается с индивидуальным экземпляром systemd
.
Вместо того, чтобы печатать совпадающие строки украшениями, украсить совпадающие строки и распечатать все:
awk '/User@Host:/ { $0 = "\033[32m" $0 "\033[39m" }; /Query_time:/ { $0 = "\033[29m" $0 "\033[39m" }; 1'
Эта awk
программа состоит из трех шаблонов и связанных действий:
User @ Host :
обрабатываются с помощью $ 0 = "\ 033 [32m" $ 0 "\ 033 [39m"
, который окружает текущую строку заданными escape-кодами; Query_time:
обрабатываются с помощью $ 0 = "\ 033 [29m" $ 0 "\ 033 [39m"
; 1
не равен нулю (поэтому все lines) обрабатываются с действием по умолчанию, которое заключается в печати текущей строки. Они являются кумулятивными: все действия, шаблоны которых соответствуют текущей строке, выполняются в том порядке, в котором они определены. Строка, соответствующая Пользователь @ Хост:
, модифицируется (первое действие) и печатается (третье действие). Соответствующая строка Query_time:
модифицируется (второе действие) и печатается (третье действие). Строка, не совпадающая ни с одним, не печатается (третье действие).
Это простейший метод печати всех строк без необходимости отслеживать, была ли строка обработана (чтобы не печатать строку дважды). Вместо того, чтобы печатать что-то в каждом наборе операторов действия, мы соответствующим образом изменяем текущую строку и печатаем ее только один раз (но всегда печатаем).