Назад | Перейти на главную страницу

Как в командной строке Windows узнать, работает ли программа или зависла?

Я бегаю sqlcmd для импорта / выполнения файла SQL размером 2 ГБ, созданного с помощью SSMS Сгенерировать скрипты команда. Он начинается с типичного вывода, но экран быстро заполняется ...

...
(1 rows affected)
(1 rows affected)
(1 rows affected)
(1 rows affected)
(1 rows affected)
(1 rows affected)
...

Я оставил его работать до 20 минут и не видел, чтобы он завершился. Я не уверен, что программа все еще вставляет новые записи и, следовательно, продолжает выводить (1 rows affected) или если он где-то заморожен в скрипте. На своих компьютерах с Linux я могу очистить экран терминала с помощью горячей клавиши и увидеть новый вывод.

Есть ли способ узнать, выполняется ли скрипт по-прежнему или он завис в Windows (Server 2016)?

Это требует некоторой подготовки (мало помогает, если скрипт уже запущен):

  1. Сохраните вывод в файл:

    • command > .\output.txt это нативный метод

    • Wintee копирует стандартный ввод в стандартный вывод + файл: command | wintee output.txt

  2. Следите за размером файла, например с участием dir output.txt.

Когда скрипт уже запущен:

  • Следите за журналами базы данных.

  • Использовать Монитор ресурсов.

  • Если вы используете Возможности рабочего стола Windows Server 2016 или иначе сценарий выполняется в окне, прокрутка вниз перемещает вывод вперед. Если скрипт завис, вы получите пустые строки в нижней части окна, но если новые строки будут переполнены, вы этого не сделаете. Вы можете проверить это, например, ping -t hostname.