Отображение фоновых процессов, запущенных определенным пользователем [закрыто]

Я новичок в ubuntu linux, и у меня небольшая проблема: Мне нужно написать сценарий оболочки, который отображает процессы, запущенные в фоновом режиме определенным пользователем. Имя пользователя - это позиционный параметр. Буду очень признательна.

-2
задан 25 May 2020 в 12:04

2 ответа

Этот ответ объясняет некоторые из основ и имеет некоторые ссылки. Вам все еще нужно будет провести некоторое исследование и приложить некоторые усилия, чтобы приспособить его к вашим реальным потребностям.

Для начала давайте начнем с некоторой базовой терминологии: Bash является интерпретатором командной строки по умолчанию для Ubuntu. Это означает, что скрипты bash состоят из ваших «обычных» команд, как если бы вы выполняли их, записывая каждую команду в терминале (даже запуская программу), и некоторые функции, которые позволяют вам автоматизировать или повторять действия.

Каждый сценарий должен начинаться с определения типа интерпретатора, который должна использовать операционная система. Для bash это будет: #! / bin / bash

Команда, которую мы будем использовать, это пс с некоторыми дополнительными параметрами.

Со страницы руководства пс :

ps displays information about a selection of the active processes.
If you want a repetitive update of the selection and the displayed
information, use top(1) instead.

Вы можете прочитать больше о ps и параметры, которые мы будем использовать здесь: PS (1) - справочная страница Linux

Для поиска выходных данных команды мы будем использовать grep , который позволяет Вы ищете конкретную строку или шаблон. Подробнее о grep здесь: grep (1) - справочная страница Linux .

Сам скрипт будет очень коротким (команда и параметр):

#!/bin/bash

ps -aux |grep $1
1
ответ дан 19 June 2020 в 21:36

The next command will show you processes running for someuser in background:

ps -U someuser -l -H | grep " S "

where

   -l     Long format.  The -y option is often useful with this.
   -H     Show process hierarchy (forest).

grep " S " will filter only background processes

For reference, use this, this and

man ps

If you want to use it as a script, then create a file:

nano procs.sh

with the next content:

#!/bin/bash
ps -U $1 -l -H | grep " S "

or the next:

ps S -l -u $1

Open terminal:

Allow its execution by:

chmod +x procs.sh

Run it:

./procs.sh someuser

enter image description here

enter image description here

user@ubuntu2004:~$ touch procs.sh
user@ubuntu2004:~$ echo 'ps -U $1 -l -H | grep " S "' > procs.sh 
user@ubuntu2004:~$ cat procs.sh 
ps -U $1 -l -H | grep " S "
user@ubuntu2004:~$ chmod +x procs.sh 
user@ubuntu2004:~$ ./procs.sh user
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S  1000    1677    1634  0  80   0 - 43863 poll_s tty2     00:00:00 gdm-x-session
4 S  1000    1699    1677  4  80   0 - 129191 ep_pol tty2    00:00:08   Xorg
0 S  1000    1753    1677  0  80   0 - 50570 poll_s tty2     00:00:00   gnome-session-b

touch procs.sh creates an empty file with procs.sh file name user @ ubuntu2004 : ~ $ echo 'ps -U $ 1 -l -H | grep "S" '> procs.sh отправляет ps -U $ 1 -l -H | grep "S" в файл procs.sh . Он может быть добавлен вручную с помощью текстового редактора

О позиционных параметрах :

Позиционные параметры - это аргументы, данные вашим сценариям, когда он вызывается. Это может быть от $ 1 до $ N . Когда N состоит из более кроме одной цифры, она должна быть заключена в фигурные скобки, например $ {N} . Переменная $ 0 является базовым именем программы в том виде, в котором она была вызвана.

$ 1 будет соответствовать параметру первого скрипта
, $ 2 будет означать параметр второго скрипта и т. д.

В скрипте первый аргумент вызывается как $ 1 и используется в команде как первый аргумент myscript . Bash заменит $ 1 словом из первого аргумента .

1
ответ дан 19 June 2020 в 21:36

Другие вопросы по тегам:

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