Я бы разбил вашу проблему на 2 части:
1) Как найти запущенные мной процессы? Запустите это:
ps -u `whoami`
whoami
на тот случай, если вы не знаете имя используемой учетной записи, в противном случае просто введите имя учетной записи без кавычек.
Здесь будут перечислены все процессы, которые могут быть удалены вашей учетной записью.
2) ps
В команде будет указан номер процесса, TTY, время и CMD. Идентификатор процесса — это первый столбец. Используйте этот номер, чтобы убить процесс. Будьте осторожны, убивая процесс. Вы можете что-то сломать, если убьете не тот процесс.
Чтобы убить процесс, вы будете использовать kill
команда, которая посылает СИГНАЛ процессу. Сигнал указывает, что должен делать процесс
делать. Например, отправив -1
процессу будет предложено перезагрузить файл конфигурации; отправка -2
эквивалентно нажатию Control+C в этом процессе; -9
заставит ядро отказаться от процесса, не сообщая об этом процессу.
Предположим, что ps -u whoami
вернул что-то вроде
PID TTY TIME CMD
4333 pts/1 00:00:00 fish
4335 ? 00:00:00 fishd
4816 ? 00:00:00 intellij
4868 ? 00:50:42 java
4939 ? 00:00:19 fsnotifier64
7667 ? 02:49:08 firefox
7698 ? 00:00:00 unity-webapps-s
И ты хотел убить firefox
процесс по его идентификатору процесса, то вы должны сделать:
kill -1 7667
Затем вы бы повторили то же самое ps
команду и проверьте, запущен ли процесс. Если он все еще работает, выполните
kill -2 7667
дорастите до -9
.
Чтобы убить все процессы, запущенные вашей учетной записью, введите kill <level> -1
. То же, что и раньше: продвигайтесь вверх до -9
.
Если вы знаете название процесса, вы можете просто пойти killall <processname>
, где то, что вы пытаетесь убить. Например: killall fish
(рыба, в этом смысле, является Дружественной Интерактивной Оболочкой).
Документация для killall
можно найти здесь: http://manpages.ubuntu.com/manpages/hardy/man1/killall.1.html
Linux предоставляет множество инструментов для управления системными процессами. Вы можете использовать их для создания, клонирования и даже уничтожения процессов. Иногда вам может понадобиться убить все процессы по имени в Linux. В Linux есть несколько способов сделать это. Вы можете использовать любую из функций pkill, pgrep, pidof и killall. В этой статье мы подробно рассмотрим их.
Вот различные способы убить процесс по имени в Linux
Использование pkill
pkill
Команда позволяет вам напрямую убить процесс по имени. Например, вот команда для уничтожения всех процессов по имени apache
$ sudo pkill апач
Вы также можете использовать опцию -f для поиска фактической команды, используемой для запуска процесса. Например, вот команда для поиска и уничтожения процесса с помощью команды /etc/apache/bin/apache
$ sudo pkill -f /etc/apache/bin/apache
Дополнительное чтение: Как создать файл tar.gz в Linux
Использование pgrep
pgrep
Команда возвращает список PID на основе входной строки поиска. Вы также можете использовать pgrep
команда для поиска всех команд по их имени и использования kill
команда для уничтожения этих процессов в Linux.
$ pgrep апач 6123 6230
Вот команда для уничтожения всех процессов по имени apache
$ kill -9 `pgrep apache`
Команда pgrep выведет список PID с именем apache
, которые используются в качестве входных данных для kill
команда.
Использование pidof
Точно так же вы можете использовать pidof
команда для получения списка PID для имени процесса
$ pidof апач 6123 6230
Вы можете передать этот список команде kill, чтобы убить все процессы по имени.
$ убить -9 `pidof apache
`
Дополнительное чтение: Как искать файл в Linux
Использование killall
Вы также можете использовать команду killall для уничтожения всех процессов по имени.
$ killall -9 апач
Надеемся, что приведенная выше статья поможет вам убить все процессы по имени в Linux.
Похожие посты:
Выпуск
Вы хотите создать планировщик задач, который запускает сценарий пакетного файла, чтобы убить текущий и перезапустить процесс.
Что такое пакетный файл
Прежде чем мы продолжим, давайте посмотрим, что такое командный файл? Согласно Википедии
— Пакетный файл — это файл сценария в DOS, OS/2 и Microsoft Windows. Он состоит из серии команд, которые должны выполняться интерпретатором командной строки и хранятся в текстовом файле. Пакетный файл может содержать любую команду, которую интерпретатор принимает в интерактивном режиме, и использовать конструкции, обеспечивающие условное ветвление и цикл в пакетном файле, такие как метки IF, FOR и GOTO. Термин «пакет» происходит от пакетной обработки, что означает «неинтерактивное выполнение», хотя пакетный файл может не обрабатывать пакет из нескольких данных.
Разрешение
@echo off тасккилл / ф / я блокнот СПИСОК ЗАДАЧ | FINDSTR notepad.exe || запустить блокнот.exe ВЫХОД
- @echo off —
Показывает сообщение на чистой строке, отключая отображение подсказки. Обычно эта строка идет в начале файла. (Вы можете использовать команду без символа «@», но его использование скрывает выполняемую команду, чтобы создать более чистый результат.) - тасккилл
— Убить процесс в системе Windows. /f параметр Указывает на принудительное завершение процесса(ов). Параметр /im Указывает имя образа процесса, который необходимо завершить. Подстановочный знак «*» можно использовать для указания всех задач или имен изображений. - список задач
— Отображает список запущенных в данный момент процессов на локальном или удаленном компьютере.


TASKKILL
Формат командной строки:
Описание параметров командной строки :
/P пароль
– Пароль для этого пользовательского контекста. Запрашивается, если он не задан.
/FI фильтр
– Применение фильтра для выбора набора задач. Разрешение использования “*”. Пример, imagename eq acme*
/PID процесс
– Идентификатор процесса, который требуется исключить. используйте TaskList, чтобы получить PID.
/IM образ
– Имя образа процесса, который уходит. Знак подстановки “*” может использоваться для указания всех заданий или именных образов.
/Т
– Завершение процесса процесса и всех его дочерних процессов.
/Ф
– Принудительное завершение процесса.
/?
– Вывод справки по игре.
1) Символ ‘*’ для параметра /IM применим только совместно с фильтрами.
2) Завершение удаленных процессов всегда будет принудительным (/F).
3) Фильтры “WINDOWTITLE” и “STATUS” не обращают внимания, когда компьютер является удаленным.
Примеры использования TASKKILL.
тасккилл /? > taskkill.txt
– выдать справку по игре команды в текстовый файл taskill.txt
TASKKILL /IM notepad.exe
– завершение процесса, реализуемым образом, который notepad.exe
. Если такие
процессы более одного – будут завершены все.
тасккилл /PID 1234 /T
– получение процесса с идентификатором 1234
и все его дочерние процессы ( /T ) . Одной команды
можно получить несколько процессов, задав их PID – taskkill /PID 1234 /PID 2345 /PID 800
. Для определения идентификатора
процессыиспользуемая команда список задач
:
notepad.exe 824 Консоль 1 3 916 КБ
notepad.exe 3004 Консоль 1 18 812 КБ
Где 824
и 3004
– это идентификаторы процессов PID
TASKKILL /F /FI “PID ge 2000” /FI “WINDOWTITLE eq Arc*”
– предполагаемо (/F) завершение процесса, идентификатор которого
больше или равно 2000
и
заголовок окна которого ,начинается с текста Arc
При последовательном возникновении, так и удаленно, результат выполнения команды TASKKILL
зависит от прав пользователя,
в профессиональном учете, в котором отмечена команда.
Для использования в многопользовательской конфигурации системы, например на сервере терминалов, вместо команды TASKKILL, удобнее и безопаснее
использовать команду TSKILL
, адаптированную для завершения процессов в среде конкретных пользователей удаленного рабочего стола (RDP).
Весь список команд CMD Windows
Currently, I have this command in a .bat file:
taskkill /im process.exe /f /t
11 gold badges
21 silver badges
32 bronze badges
asked Feb 11, 2020 at 17:50
- Create a shortcut for the .bat file
- Right-click the shortcut and select properties
- In the shortcut tab select “Advanced”
- Select “Run as administrator” and click OK
answered Feb 11, 2020 at 18:20
3 silver badges
13 bronze badges
taskkill /im process.exe /f /t
answered Feb 11, 2020 at 18:19
3 bronze badges
Batch Script – Overview
Batch Script is incorporated to automate command sequences which are repetitive in nature. Scripting is a way by which one can alleviate this necessity by automating these command sequences in order to make one’s life at the shell easier and more productive. In most organizations, Batch Script is incorporated in some way or the other to automate stuff.
Some of the features of Batch Script are −
Has control structures such as for, if, while, switch for better automating and scripting.
Supports advanced features such as Functions and Arrays.
Supports regular expressions.
Can include other programming codes such as Perl.
Some of the common uses of Batch Script are −
Setting up servers for different purposes.
Automating housekeeping activities such as deleting unwanted files or log files.
Automating the deployment of applications from one environment to another.
Installing programs on various machines at once.
Batch scripts are stored in simple text files containing lines with commands that get executed in sequence, one after the other. These files have the special extension BAT or CMD. Files of this type are recognized and executed through an interface (sometimes called a shell) provided by a system file called the command interpreter. On Windows systems, this interpreter is known as cmd.exe.
:: Deletes All files in the Current Directory With Prompts and Warnings ::(Hidden, System, and Read-Only Files are Not Affected) :: @ECHO OFF DEL . D R
Batch Script – Environment
This chapter explains the environment related to Batch Script.
Writing and Executing
Typically, to create a batch file, notepad is used. This is the simplest tool for creation of batch files. Next is the execution environment for the batch scripts. On Windows systems, this is done via the command prompt or cmd.exe. All batch files are run in this environment.
Method 1
− Go to C:\Windows\System32 and double click on the cmd file.
Batch Script – Commands
In this chapter, we will look at some of the frequently used batch commands.
Batch Script – Files
In this chapter, we will learn how to create, save, execute, and modify batch files.
Creating Batch Files
:: Deletes All files in the Current Directory With Prompts and Warnings ::(Hidden, System, and Read-Only Files are Not Affected) :: @ECHO OFF DEL . DR
Saving Batch Files
After your batch file is created, the next step is to save your batch file. Batch files have the extension of either .bat or .cmd. Некоторые общие правила, которые следует учитывать при именовании пакетных файлов —
Старайтесь избегать пробелов при именовании пакетных файлов, иногда это создает проблемы при их вызове из других скриптов.
Не называйте их в честь общих пакетных файлов, доступных в системе, таких как ping.cmd.
На приведенном выше снимке экрана показано, как сохранить пакетный файл. При сохранении пакетного файла необходимо помнить о нескольких моментах.
- Не забудьте поставить .bat или .cmd в конце имени файла.
- Выберите опцию «Сохранить как тип» как «Все файлы».
- Заключите полное имя файла в кавычки «».
Запуск пакетных файлов
Этап 1
− Откройте командную строку (cmd.exe).Этап 2
− Перейдите в место, где хранится файл .bat или .cmd.
Изменение пакетных файлов
Этап 1
− Откройте проводник Windows.Этап 2
− Перейдите в место, где хранится файл .bat или .cmd.Этап 3
− Щелкните файл правой кнопкой мыши и выберите пункт «Редактировать» в контекстном меню. Файл откроется в Блокноте для дальнейшего редактирования.
Команда ЭХО
@echo off
Первая пакетная скриптовая программа
Команда Rem используется для добавления комментария, чтобы сказать, что именно делает этот командный файл.
Команда dir используется для получения содержимого папки C:\Program Files.
Команда ‘>’ используется для перенаправления вывода в файл C:\lists.txt.
@echo off Rem Это для перечисления всех файлов в каталоге Program files каталог "C:\Program Files" > C:\lists.txt эхо "Программа завершена"
При выполнении вышеуказанной команды имена файлов в C:\Program Files будут отправлены в файл C:\Lists.txt, а в командной строке отобразится сообщение «Программа завершена» .
Пакетный скрипт — переменные
В пакетных файлах есть два типа переменных. Один для параметров, которые могут быть переданы при вызове пакетного файла, а другой выполняется с помощью команды set.
Аргументы командной строки
Пакетные сценарии поддерживают концепцию аргументов командной строки, где аргументы могут быть переданы в пакетный файл при вызове. Аргументы можно вызывать из пакетных файлов через переменные %1, %2, %3 и т. д.
@эхо выключено эхо %1 эхо %2 эхо %3
Если приведенный выше пакетный сценарий хранится в файле с именем test.bat, и мы должны были запустить пакет как
Test.bat 1 2 3
1 2 3
Если бы мы запускали партию как
Пример 1 2 3 4
Результат останется таким же, как указано выше. Однако четвертый параметр будет проигнорирован.
Установить команду
Синтаксис
установить /A имя-переменной=значение
имя-переменной
это имя переменной, которую вы хотите установить.стоимость
это значение, которое необходимо установить для переменной./А –
Этот переключатель используется, если значение должно быть числовым.
Пример
@эхо выключено установить сообщение = Привет, мир эхо %сообщение%
В приведенном выше фрагменте кода переменная с именем message определена и установлена со значением «Hello World».
Чтобы отобразить значение переменной, обратите внимание, что переменная должна быть заключена в знак %.
Выход
Привет, мир
Работа с числовыми значениями
В пакетном сценарии также можно определить переменную для хранения числового значения. Это можно сделать с помощью переключателя /A.
@echo off НАБОР /А а = 5 НАБОР/Ab = 10 НАБОР /A c = %a% + %b% эхо %с%
Сначала мы устанавливаем значения двух переменных, a и b, равные 5 и 10 соответственно.
Мы добавляем эти значения и сохраняем в переменной c.
Наконец, мы отображаем значение переменной c.
Вывод вышеуказанной программы будет 15.
@эхо выключено НАБОР /А а = 5 НАБОР/Ab = 10 НАБОР /A c = %a% + %b% эхо %с% НАБОР/A c = %a% - %b% эхо %с% НАБОР /A c = %b% / %a% эхо %с% НАБОР /A c = %b% * %a% эхо %с%
15 -5 2 50
Локальные и глобальные переменные
В любом языке программирования есть возможность пометить переменные как имеющие какую-то область видимости, т. е. раздел кода, в котором к ним можно получить доступ. Обычно к переменной с глобальной областью можно получить доступ из любого места программы, тогда как локальные переменные области действия имеют определенную границу, в которой к ним можно получить доступ.
Пример
@эхо выключено установить глобальную переменную = 5 SETLOCAL установить переменную = 13145 установить /А вар = %вар% + 5 эхо%вар% эхо %globalvar% КОНЕЦЛОКАЛЬНЫЙ
Несколько ключевых моментов, на которые следует обратить внимание в отношении вышеуказанной программы.
‘globalvar’ определяется с глобальной областью действия и доступна во всем скрипте.
Выход
13150 5
Работа с переменными среды
@эхо выключено эхо %JAVA_HOME%
C:\Atlassian\Bitbucket\4.0.1\jre
Пакетный скрипт – Комментарии
Всегда полезно добавлять комментарии или документацию к создаваемым сценариям. Это необходимо для обслуживания сценариев, чтобы понять, что на самом деле делает сценарий.
ЭХО ВЫКЛ. ЕСЛИ НЕ "%OS%"=="Windows_NT" Синтаксис GOTO ЭХО.%* | НАХОДИТЬ "?" >НУЛ IF NOT ERRORLEVEL 1 GOTO Синтаксис ЕСЛИ НЕ [%2]==[] GOTO Синтаксис SETLOCAL УСТАНОВИТЬ ВСС= ЕСЛИ НЕ [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A FOR /F "tokens = 1 delims = \" %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F "tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND ""') СДЕЛАТЬ ЭХО.%%a %%A КОНЕЦЛОКАЛЬНЫЙ ПЕРЕЙТИ:EOF ECHO Display вошедших в систему пользователей и их рабочих станций. ЭХО Использование: ACTUSR [ фильтр ] IF "%OS%"=="Windows_NT" ECHO Где: filter - первая часть имени компьютера^(s^) для отображения
Комментарии с использованием утверждения Rem
Синтаксис
Рем Замечания
, где «Примечания» — это комментарии, которые необходимо добавить.
Пример
@эхо выключено Rem Эта программа просто отображает Hello World установить сообщение = Привет, мир эхо %сообщение%
Выход
Привет, мир
Комментарии с использованием
Синтаксис
:: Примечания
, где «Примечания» — комментарий, который необходимо добавить.
Пример
@echo off :: Эта программа просто отображает Hello World установить сообщение = Привет, мир эхо %сообщение%
Выход
Привет, мир
Примечание
− Если у вас слишком много строк Rem, это может замедлить код, потому что в конце концов каждую строку кода в пакетном файле все равно нужно выполнить.
Давайте посмотрим на пример большого скрипта, который мы видели в начале этой темы, и посмотрим, как он выглядит, когда к нему добавляется документация.
::=========================================== ==================== :: В приведенном ниже примере используется поиск компьютера и зарегистрированных пользователей. :: ::================================================ =============== ЭХО ВЫКЛ. :: Проверка версии Windows ЕСЛИ НЕ "%OS%"=="Windows_NT" Синтаксис GOTO ЭХО.%* | НАХОДИТЬ "?" >НУЛ :: Проверка параметров командной строки IF NOT ERRORLEVEL 1 GOTO Синтаксис ЕСЛИ НЕ [%2]==[] GOTO Синтаксис :: Держите переменную локальной SETLOCAL :: Инициализировать переменную УСТАНОВИТЬ ВСС= :: Парсить параметр командной строки ЕСЛИ НЕ [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A :: Используйте NET VIEW и NBTSTAT для поиска компьютеров и вошедших в систему пользователей. FOR /F "tokens = 1 delims = \" %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F "tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| НАЙТИ /I /V "%%a" ^| НАЙТИ ""') DO ECHO.%%a %%A :: Сделанный КОНЕЦЛОКАЛЬНЫЙ ПЕРЕЙТИ:EOF :Синтаксис ECHO Display вошедших в систему пользователей и их рабочих станций. ЭХО Использование: ACTUSR [ фильтр ] IF "%OS%"=="Windows_NT" ECHO Где: filter - это первая часть имя компьютера^(s^) для отображения
Пакетный скрипт – Строки
В DOS строка представляет собой упорядоченный набор символов, например «Hello, World!».
Пакетный скрипт — Массивы
- Каждый элемент массива должен быть определен с помощью команды set.
- Цикл for потребуется для перебора значений массива.
Создание массива
установить a[0]=1
Где 0 — индекс массива, а 1 — значение, присвоенное первому элементу массива.
Пример
@эхо выключено установить список = 1 2 3 4 (для %%a в (%list%) сделать ( эхо %%а ))
Выход
1 2 3 4
Доступ к массивам
Вы можете получить значение из массива, используя синтаксис нижнего индекса, передав индекс значения, которое вы хотите получить, в квадратных скобках сразу после имени массива.
Пример
@echo off установить [0] = 1 эхо %а[0]%
@echo off установить [0] = 1 установить [1] = 2 установить [2] = 3 echo Первый элемент массива %a[0]% echo Второй элемент массива %a[1]% echo Третий элемент массива — %a[2]%
Первый элемент массива равен 1 Второй элемент массива равен 2 Третий элемент массива равен 3
Изменение массива
Чтобы добавить элемент в конец массива, вы можете использовать элемент set вместе с последним индексом элемента массива.
Пример
@echo off установить [0] = 1 установить [1] = 2 установить [2] = 3 Rem Добавление элемента в конец массива Установите [3] = 4 echo Последний элемент массива %a[3]%
Последний элемент массива равен 4
@echo off установить [0] = 1 установить [1] = 2 установить [2] = 3 Rem Установка нового значения для второго элемента массива Установите [1] = 5 echo Новое значение второго элемента массива %a[1]%
Новое значение второго элемента массива равно 5
Перебор массива
@echo off setlocal enabledelayedexpansion установить тему [0] = комментарии установить тему [1] = переменные установить тему [2] = Массивы установить тему[3] = Принятие решения установить тему[4] = время и дату установить тему[5] = Операторы для /l %%n в (0,1,5) делать ( эхо !тема[%%n]! )
Каждый элемент массива должен быть специально определен с помощью команды set.
Для перебора массива используется цикл for с параметром /L для перемещения по диапазонам.
Результат
Комментарии переменные Массивы Принятие решений Время и дата Операторы
Длина массива
Длина массива определяется путем перебора списка значений в массиве, поскольку прямой функции для определения количества элементов в массиве нет.
@эхо выключено установить Arr[0] = 1 установить Arr[1] = 2 установить Arr[2] = 3 установить Arr[3] = 4 установить "х = 0" :SymLoop если определен Arr[%x%] ( эхо вызова %%Arr[%x%]%% установить /а "х+=1" ПЕРЕЙТИ К :SymLoop ) echo "Длина массива равна" %x%
Выход
Длина массива 4
Создание структур в массивах
Пример
@echo off установить длину = 3 установить объект [0]. Имя = Джо установить объект [0]. ID = 1 установить объект [1]. Имя = Марк установить объект [1]. ID = 2 установить объект[2]. Имя = Мохан установить объект[2]. ID = 3 установить я = 0 :петля если %i% equ %len% перейти к :eof установить кур. Имя= установить кур. ID= for /f "usebackq delims==.tokens=1-3" %%j in (`set obj[%i%]`) do ( установить текущий%%k=%%l ) эхо-имя = %cur. Имя% значение эха = %cur. ИДЕНТИФИКАТОР% установить /a я = %i%+1 перейти в петлю
Каждая переменная, определенная с помощью команды set, имеет 2 значения, связанные с каждым индексом массива.
Переменная i
устанавливается равным 0, чтобы мы могли перебирать структуру в цикле с длиной массива, равной 3.Мы всегда проверяем условие, равно ли значение i значению len
и если нет, мы прокручиваем код.
Выход
Имя = Джо Значение = 1 Имя = Марк Значение = 2 Имя = Мохан Значение = 3
Пакетный сценарий — принятие решений
Структуры принятия решений требуют, чтобы программист указывал одно или несколько условий, которые должны быть оценены или проверены программой, вместе с оператором или операторами, которые должны быть выполнены, если условие определено как истинное
, и, необязательно, другие операторы, которые должны быть выполнены, если условие определено как ложное
.
Пакетный скрипт – Операторы
Оператор — это символ, который указывает компилятору выполнять определенные математические или логические операции.
- Арифметические операторы
- Операторы отношения
- Логические операторы
- Операторы присваивания
- Побитовые операторы
Операторы отношения
Операторы отношения позволяют сравнивать объекты. Ниже приведены доступные операторы отношения.
Логические операторы
Пакетный язык оснащен полным набором логических операторов, таких как AND, OR, XOR, но только для двоичных чисел. Также нет никаких значений для TRUE или FALSE. Единственным логическим оператором, доступным для условий, является оператор НЕ.
ДАТА
Эта команда получает системную дату.
Синтаксис
ДАТА
Пример
@эхо выключено эхо %DATE%
Выход
Текущая дата будет отображаться в командной строке. Например,
Пн 28.12.2015
ВРЕМЯ
Эта команда устанавливает или отображает время.
Синтаксис
ВРЕМЯ
Пример
@echo off эхо %TIME%
Выход
Отобразится текущее системное время. Например,
22:06:52.87
Дата в формате год-месяц-день
Пример
@echo off эхо/Сегодня: %год%-%месяц%-%день% перейти :EOF setlocal ENABLEEXTENSIONS установить t = 2&if "%date%z" LSS "A" установить t = 1 for /f "skip=1 tokens = 2-4 delims = (-)" %%a in ('echo/^|date') do ( for /f "tokens = %t%-4 delims=.-/" %%d in ('date/t') do ( установить %%a=%%d&установить %%b=%%e&установить %%c=%%f)) endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :EOF
Выход
Сегодня: 2015-12-30
Пакетный скрипт – ввод/вывод
Имеется три универсальных «файла» для ввода с клавиатуры, вывода текста на экран и вывода ошибок на экран. Файл «Standard In», известный как stdin
, содержит входные данные для программы/скрипта. Файл «Standard Out», известный как stdout
, используется для записи вывода для отображения на экране. Наконец, файл «Standard Err», известный как stderr
, содержит любые сообщения об ошибках для отображения на экране.
На каждый из этих трех стандартных файлов, также известных как стандартные потоки, ссылаются с помощью номеров 0, 1 и 2. Стандартный ввод — это файл 0, стандартный вывод — файл 1, а stderr — файл 2.
Перенаправление вывода (Stdout и Stderr)
Каталог C:\ > list.txt
В приведенном выше примере стандартный вывод
команды Dir C:\ перенаправляется в файл list.txt.
Если вы добавите число 2 к фильтру перенаправления, то он перенаправит stderr
в файл lists.txt.
Каталог C:\ 2> list.txt
КАТАЛОГ C:\ > lists.txt 2>&1
Подавление вывода программы
Директория C:\ > NUL
Стдин
Чтобы работать со Stdin, вы должны использовать обходной путь. Это можно сделать, перенаправив собственный стандартный ввод командной строки с именем CON.
TYPE CON > lists.txt
Пакетный скрипт – код возврата
По умолчанию, когда выполнение командной строки завершено, оно должно либо возвращать ноль в случае успешного выполнения, либо ненулевое значение в случае сбоя выполнения. Когда пакетный сценарий возвращает ненулевое значение после сбоя выполнения, ненулевое значение будет указывать номер ошибки. Затем мы будем использовать номер ошибки, чтобы определить, о чем ошибка, и устранить ее соответствующим образом.
Уровень ошибки
Переменная окружения %ERRORLEVEL% содержит код возврата последней выполненной программы или сценария.
Синтаксис
ЕСЛИ %ERRORLEVEL% NEQ 0 ( Сделай что-нибудь )
Обычно используется команда EXIT /B %ERRORLEVEL% в конце пакетного файла для возврата кодов ошибок из пакетного файла.
EXIT /B в конце пакетного файла остановит выполнение пакетного файла.
Используйте EXIT /B в конце командного файла, чтобы вернуть пользовательские коды возврата.
Переменная среды %ERRORLEVEL% содержит последний уровень ошибки в пакетном файле, который является последним кодом ошибки из последней выполненной команды. В пакетном файле всегда рекомендуется использовать переменные среды вместо постоянных значений, поскольку одна и та же переменная расширяется до разных значений на разных компьютерах.
Давайте рассмотрим быстрый пример проверки кодов ошибок из пакетного файла.
Пример
если не существует c:\lists.txt выход 7 если не определено, выход из профиля пользователя 9 выход 0
Вызов Find.cmd если errorlevel gtr 0 выйти эхо «Успешное завершение»
Результат
Если файл c:\lists.txt не существует, то в выводе консоли ничего не будет отображаться.
Если выполняются оба вышеуказанных условия, в командной строке будет отображаться строка «Успешное завершение».
Петли
В главе о принятии решений мы видели утверждения, которые последовательно выполнялись одно за другим. Кроме того, реализации также могут быть выполнены в пакетном сценарии, чтобы изменить поток управления в логике программы. Затем они классифицируются в операторы управления потоком.
Перебор аргументов командной строки
Пример
@ЭХО ВЫКЛ. :Петля ЕСЛИ "%1"=="" ПЕРЕХОД выполнен FOR %%F IN (%1) DO echo %%F СДВИГ GOTO Цикл :завершенный
Выход
1 2 3
Пакетный скрипт – Функции
Функция — это набор операторов, организованных вместе для выполнения конкретной задачи. В пакетных сценариях используется аналогичный подход для группировки логических операторов для формирования функции.
Декларация функции
− Он сообщает компилятору имя функции, тип возвращаемого значения и параметры.Определение функции
− Предоставляет фактическое тело функции.
Определение функции
В пакетном сценарии функция определяется с помощью оператора метки. Когда функция определяется заново, она может принимать одно или несколько значений в качестве входных «параметров» функции, обрабатывать функции в основном теле и возвращать значения функциям в качестве выходных «типов возврата».
Каждая функция имеет имя функции, которое описывает задачу, которую выполняет функция. Чтобы использовать функцию, вы «вызываете» эту функцию по ее имени и передаете ее входные значения (известные как аргументы), которые соответствуют типам параметров функции.
:имя_функции Сделай что-нибудь ВЫХОД /B 0
Имя_функции — это имя, данное функции, которое должно иметь какое-то значение, чтобы соответствовать тому, что функция на самом деле делает.
Оператор EXIT используется для обеспечения корректного выхода из функции.
Пример
:Показать УСТАНОВИТЬ / индекс = 2 эхо Значение индекса %index% ВЫХОД /B 0
Пакетный скрипт – Процесс
В этой главе мы обсудим различные процессы, задействованные в пакетном сценарии.
Просмотр списка запущенных процессов
В пакетном сценарии команда TASKLIST может использоваться для получения списка запущенных в данный момент процессов в системе.
Синтаксис
TASKLIST [/S система [/U имя пользователя [/P [пароль]]]] [/M [модуль] | /СВК | /V] [/FI фильтр] [/FO формат] [/NH]
Примеры
СПИСОК ЗАДАЧ
Имя изображения Имя сеанса PID Номер сеанса Использование памяти ================================================== = ========== ============ System Idle Process 0 Службы 0 4 K Службы системы 4 0 272 K smss.exe 344 Службы 0 1040 К csrss.exe 528 Службы 0 3 892 КБ csrss.exe 612 Консоль 1 41 788 КБ wininit.exe 620 Службы 0 3 528 КБ winlogon.exe 648 Консоль 1 5 884 КБ services.exe 712 Службы 0 6 224 КБ lsass.exe 720 Службы 0 9 712 КБ svchost.exe 788 Службы 0 10 048 К svchost.exe 832 Службы 0 7 696 КБ dwm.exe 916 Консоль 1 117 440 КБ nvvsvc.exe 932 Службы 0 6 692 КБ nvxdsync.exe 968 Консоль 1 16 328 КБ nvvsvc.exe 976 Консоль 1 12 756 К svchost.exe 1012 Службы 0 21 648 К svchost.exe 236 Службы 0 33 864 КБ svchost.exe 480 Службы 0 11 152 КБ svchost.exe 1028 Службы 0 11 104 К svchost.exe 1048 Службы 0 16 108 КБ wlanext.exe 1220 Службы 0 12 560 К conhost.exe 1228 Службы 0 2 588 К svchost.exe 1276 Службы 0 13 888 КБ svchost.exe 1420 Службы 0 13 488 КБ spoolsv.exe 1556 Службы 0 9 340 КБ
список задач > process.txt
Приведенная выше команда берет вывод, отображаемый списком задач, и сохраняет его в файле process.txt.
список задач /fi "memusage gt 40000"
Имя изображения Имя сеанса PID Номер сеанса Использование памяти ================================================== = ========== ============ dwm.exe 916 Консоль 1 127 912 КБ explorer.exe 2904 Консоль 1 125 868 КБ ServerManager.exe 1836 Консоль 1 59 796 КБ ВИНВОРД. EXE 2456 Консоль 1 144 504 КБ chrome.exe 4892 Консоль 1 123 232 КБ chrome.exe 4976 Консоль 1 69 412 КБ chrome.exe 1724 Консоль 1 76 416 тыс. chrome.exe 3992 Консоль 1 56 156 КБ chrome.exe 1168 Консоль 1 233 628 КБ chrome.exe 816 Консоль 1 66 808 тыс.
Уничтожение определенного процесса
Синтаксис
TASKKILL [/S система [/U имя пользователя [/P [пароль]]]] { [/FI filter] [/ИД процесса | /IM имя изображения] } [/T] [/F]
Примеры
taskkill /f /im notepad.exe
Приведенная выше команда убивает задачу открытого блокнота, если она открыта.
таскилл /pid 9214
Приведенная выше команда уничтожает процесс, в котором есть процесс 9214.
Начало нового процесса
Скрипты DOS также позволяют запустить новый процесс. Это достигается с помощью команды СТАРТ.
Синтаксис
START "заголовок" [/D путь] [опции] "команда" [параметры]
название
− Текст для строки заголовка окна CMD (обязательно)путь
− Стартовый каталог.команда
− Команда, пакетный файл или исполняемая программа для запуска.параметры
− Параметры, переданные команде.
Примеры
START "Сценарий тестовой партии" /Min test.bat
Приведенная выше команда запустит пакетный скрипт test.bat в новом окне. Окна запустятся в свернутом виде и также будут иметь заголовок «Скрипт тестовой партии».
ПУСК "" "C:\Program Files\Microsoft Office\Winword.exe" "D:\test\TESTA.txt"
Приведенная выше команда фактически запускает Microsoft Word в другом процессе, а затем открывает файл TESTA.txt в MS Word.
Пакетный скрипт – Псевдонимы
Псевдонимы означают создание ярлыков или ключевых слов для существующих команд. Предположим, мы хотим выполнить приведенную ниже команду, которая представляет собой не что иное, как команду списка каталогов с параметром /w, чтобы не отображать все необходимые детали в списке каталогов.
Реж. / ш
dw = реж / ш
Когда мы хотим выполнить dir /w
команду, мы можем просто ввести слово dw
. Слово «dw» теперь стало псевдонимом команды Dir /w.
Создание псевдонима
Псевдонимы управляются с помощью dokey
команда.
Синтаксис
DOSKEY [параметры] [macroname=[текст]]
макроимя
− Краткое имя макроса.текст
− Команды, которые вы хотите вызвать.
Пример
@эхо выключено доски компакт-диск = компакт-диск/тест доски d = реж.
После выполнения команды вы сможете запускать эти псевдонимы в командной строке.
Выход
Удаление псевдонима
Псевдоним или макрос можно удалить, установив значение макроса в NULL.
Пример
@эхо выключено
доски компакт-диск = компакт-диск/тест
доски d = реж.
д=
В приведенном выше примере мы сначала присваиваем макросу d значение d = dir. После чего мы устанавливаем его в NULL. Поскольку мы установили значение d в NULL, макрос d будет удален.
Замена псевдонима
Псевдоним или макрос можно заменить, установив значение макроса на новое желаемое значение.
Пример
@эхо выключено
доски компакт-диск = компакт-диск/тест
доски d = реж.
д = реж / ш
В приведенном выше примере мы сначала присваиваем макросу d значение d = dir. После чего мы устанавливаем его в dir /w. Поскольку мы установили значение d в новое значение, псевдоним «d» теперь примет новое значение.
Пакетный скрипт – Устройства
Windows теперь имеет улучшенную библиотеку, которую можно использовать в пакетном сценарии для работы с устройствами, подключенными к системе. Это называется консолью устройства — DevCon.exe.
Разработчики и тестировщики драйверов Windows могут использовать DevCon для проверки правильности установки и настройки драйвера, включая правильные INF-файлы, стек драйверов, файлы драйверов и пакет драйверов. Вы также можете использовать команды DevCon (включить, отключить, установить, запустить, остановить и продолжить) в сценариях для тестирования драйвера. ДевКон
— это инструмент командной строки, который выполняет функции управления устройствами на локальных и удаленных компьютерах.
%WindowsSdkDir%\tools\x64\devcon.exe
%WindowsSdkDir%\tools\x86\devcon.exe
%WindowsSdkDir%\tools\arm\devcon.exe
Синтаксис
devcon [/m:\\computer] [/r] команда [аргументы]
Примеры
Список всех файлов драйверов
файлы драйверов devcon * > файлы драйверов.txt
статус devcon * > status.txt
devcon /r enable = Принтер
devcon /r установить c:\windows\inf\keyboard.inf *PNP030b
сканирование devcon
повторное сканирование devcon
Пакетный скрипт — Реестр
Реестр — один из ключевых элементов системы Windows. Он содержит много информации о различных аспектах операционной системы. Почти все приложения, установленные в системе Windows, в той или иной форме взаимодействуют с реестром.
Реестр содержит два основных элемента: ключи и значения. Ключи реестра
являются объектами-контейнерами, похожими на папки. Значения реестра
являются неконтейнерными объектами, похожими на файлы. Ключи могут содержать значения или дополнительные ключи. На ключи ссылаются с синтаксисом, аналогичным путям Windows, с использованием обратной косой черты для обозначения уровней иерархии.
В этой главе рассматриваются различные функции, такие как запрос значений, добавление, удаление и редактирование значений из реестра.
Пакетный скрипт - Сеть
Пакетный скрипт имеет возможность работать с сетевыми настройками. Команда NET используется для обновления, исправления или просмотра сети или сетевых настроек. В этой главе рассматриваются различные параметры, доступные для команды net.
Пакетный скрипт - Печать
Печатью также можно управлять из пакетного сценария с помощью команды NET PRINT.
Синтаксис
PRINT [/D:устройство] [[диск:][путь]имя файла[.]]
Где /D:device — указывает устройство печати.
Пример
напечатать c:\example.txt /c /d:lpt1
Приведенная выше команда напечатает файл example.txt на параллельный порт lpt1.
Управление принтером из командной строки
Начиная с Windows 2000 многие, но не все параметры принтера можно настроить из командной строки Windows с помощью PRINTUI. DLL и RUNDLL32. EXE
Синтаксис
RUNDLL32. EXE ПЕЧАТЬ. DLL,PrintUIEntry [ опции
] [ @ командный файл
]
Проверка существования принтера
Могут быть случаи, когда вы можете быть подключены к сетевому принтеру вместо локального принтера. В таких случаях всегда полезно перед печатью проверить, существует ли принтер.
Наличие принтера можно оценить с помощью RUNDLL32. EXE ПЕЧАТЬ. DLL, которая используется для управления большинством настроек принтера.
Пример
SET PrinterName = тестовый принтер
УСТАНОВИТЬ файл =% TEMP%\Prt.txt
РУНДЛЛ32. EXE ПЕЧАТЬ. DLL,PrintUIEntry /Xg /n "%PrinterName%" /f "%file%" /q
ЕСЛИ СУЩЕСТВУЕТ "%file%" (
ECHO %PrinterName% принтер существует
) ЕЩЕ (
ECHO %PrinterName% принтер НЕ существует
)
Сначала будет установлено имя принтера и имя файла, в котором будут храниться настройки принтера.
RUNDLL32. EXE ПЕЧАТЬ. Команды DLL будут использоваться для проверки того, действительно ли принтер существует, путем отправки параметров конфигурации файла в файл Prt.txt
Пакетный скрипт — отладка
Разработчики и тестировщики драйверов Windows могут использовать DevCon для проверки правильности установки и настройки драйвера, включая правильные INF-файлы, стек драйверов, файлы драйверов и пакет драйверов. Вы также можете использовать команды DevCon (включить, отключить, установить, запустить, остановить и продолжить) в сценариях для тестирования драйвера. ДевКон — это инструмент командной строки, который выполняет функции управления устройствами на локальных и удаленных компьютерах.
%WindowsSdkDir%\tools\x64\devcon.exe %WindowsSdkDir%\tools\x86\devcon.exe %WindowsSdkDir%\tools\arm\devcon.exe
Синтаксис
devcon [/m:\\computer] [/r] команда [аргументы]
Примеры
Список всех файлов драйверов
файлы драйверов devcon * > файлы драйверов.txt
статус devcon * > status.txt
devcon /r enable = Принтер
devcon /r установить c:\windows\inf\keyboard.inf *PNP030b
сканирование devcon
повторное сканирование devcon
Пакетный скрипт — Реестр
Реестр — один из ключевых элементов системы Windows. Он содержит много информации о различных аспектах операционной системы. Почти все приложения, установленные в системе Windows, в той или иной форме взаимодействуют с реестром.
Реестр содержит два основных элемента: ключи и значения. Ключи реестра
являются объектами-контейнерами, похожими на папки. Значения реестра
являются неконтейнерными объектами, похожими на файлы. Ключи могут содержать значения или дополнительные ключи. На ключи ссылаются с синтаксисом, аналогичным путям Windows, с использованием обратной косой черты для обозначения уровней иерархии.
В этой главе рассматриваются различные функции, такие как запрос значений, добавление, удаление и редактирование значений из реестра.
Пакетный скрипт - Сеть
Пакетный скрипт имеет возможность работать с сетевыми настройками. Команда NET используется для обновления, исправления или просмотра сети или сетевых настроек. В этой главе рассматриваются различные параметры, доступные для команды net.
Пакетный скрипт - Печать
Печатью также можно управлять из пакетного сценария с помощью команды NET PRINT.
Синтаксис
PRINT [/D:устройство] [[диск:][путь]имя файла[.]]
Где /D:device — указывает устройство печати.
Пример
напечатать c:\example.txt /c /d:lpt1
Приведенная выше команда напечатает файл example.txt на параллельный порт lpt1.
Управление принтером из командной строки
Начиная с Windows 2000 многие, но не все параметры принтера можно настроить из командной строки Windows с помощью PRINTUI. DLL и RUNDLL32. EXE
Синтаксис
RUNDLL32. EXE ПЕЧАТЬ. DLL,PrintUIEntry [ опции ] [ @ командный файл ]
Проверка существования принтера
Могут быть случаи, когда вы можете быть подключены к сетевому принтеру вместо локального принтера. В таких случаях всегда полезно перед печатью проверить, существует ли принтер.
Наличие принтера можно оценить с помощью RUNDLL32. EXE ПЕЧАТЬ. DLL, которая используется для управления большинством настроек принтера.
Пример
SET PrinterName = тестовый принтер УСТАНОВИТЬ файл =% TEMP%\Prt.txt РУНДЛЛ32. EXE ПЕЧАТЬ. DLL,PrintUIEntry /Xg /n "%PrinterName%" /f "%file%" /q ЕСЛИ СУЩЕСТВУЕТ "%file%" ( ECHO %PrinterName% принтер существует ) ЕЩЕ ( ECHO %PrinterName% принтер НЕ существует )
Сначала будет установлено имя принтера и имя файла, в котором будут храниться настройки принтера.
RUNDLL32. EXE ПЕЧАТЬ. Команды DLL будут использоваться для проверки того, действительно ли принтер существует, путем отправки параметров конфигурации файла в файл Prt.txt
Отладка пакетного сценария становится важной, когда вы работаете над большим сложным пакетным сценарием.
Пример
@echo off если [%1] == [] ( эхо-входное значение не указано иди стой ) rem Отображаемые числа для /l %%n в (2,2,%1) делать ( эхо %%n ) :останавливаться Пауза
Результат
C:\>test.bat 10 2 4 6 8 10 22 Нажмите любую клавишу для продолжения .
Использование команды паузы
Другой способ — приостановить пакетное выполнение при возникновении ошибки. Когда скрипт приостановлен, разработчик может исправить проблему и перезапустить обработку.
В приведенном ниже примере пакетный сценарий приостановлен, так как входное значение является обязательным и не предоставляется.
Пример
@эхо выключено если [%1] == [] ( эхо-входное значение не указано иди стой ) еще ( эхо "Действительное значение" ) :останавливаться Пауза
Выход
C:\>test.bat входное значение не указано Нажмите любую клавишу для продолжения.
Запись сообщений об ошибках в другой файл
чистая статистика/сервер
Команда, указанная в файле .bat, неверна. Давайте зарегистрируем сообщение и посмотрим, что мы получим.
C:\>test.bat > testlog.txt 2> testerrors.txt
Файл testerrors.txt будет отображать сообщения об ошибках, как показано ниже:
Параметр /SERVER неизвестен. Синтаксис этой команды: ЧИСТАЯ СТАТИСТИКА [РАБОЧАЯ СТАНЦИЯ | СЕРВЕР] Чтобы получить дополнительную справку, введите NET HELPMSG 3506.
Глядя на приведенный выше файл, разработчик может исправить программу и запустить ее снова.
Использование ErrorLevel для обнаружения ошибок и их регистрации
Errorlevel возвращает 0, если команда выполнена успешно, и 1, если она не удалась.
@эхо выключено PING google.com если уровень ошибки 1 GOTO стоп :останавливаться эхо Не удается подключиться к google.com Пауза
Во время выполнения вы можете увидеть ошибки, а также логи:
C:\>test.bat > testlog.txt
Пингуем google.com [172.217.26.238] с 32 байтами данных: Ответ от 172.217.26.238: байт=32 время=160 мс TTL=111 Ответ от 172.217.26.238: байт=32 время=82мс TTL=111 Ответ от 172.217.26.238: байт=32 время=121 мс TTL=111 Ответ от 172.217.26.238: байт=32 время=108 мс TTL=111 Статистика пинга для 172.217.26.238: Пакеты: отправлено = 4, получено = 4, потеряно = 0 (0% потерь), Приблизительное время прохождения туда и обратно в миллисекундах: Минимум = 82 мс, Максимум = 160 мс, Среднее = 117 мс Подключено успешно Нажмите любую клавишу для продолжения . . .
Запрос Ping не смог найти хост google.com. Пожалуйста, проверьте имя и попробуйте снова. Не удается подключиться к google.com Нажмите любую клавишу для продолжения . . .
Пакетный скрипт - Ведение журнала
Вход в систему возможен в пакетном сценарии с помощью команды перенаправления.
Синтаксис
test.bat > testlog.txt 2 > testerrors.txt
Пример
чистая статистика /сервер
Вышеупомянутая команда содержит ошибку, потому что опция команды netstatistics задана неправильным образом.
Выход
Если команда с указанным выше файлом test.bat запускается как
test.bat > testlog.txt 2 > testerrors.txt
Параметр /SERVER неизвестен.
Синтаксис этой команды —
ЧИСТАЯ СТАТИСТИКА [РАБОЧАЯ СТАНЦИЯ | СЕРВЕР]
Дополнительную помощь можно получить, набрав NET HELPMSG 3506.
Если вы откроете файл с именем testlog.txt, он покажет вам журнал выполненных команд.
C:\tp>netstatistics/Server