
Когда я закрываю окно терминала Cygwin, появляется сообщение, подобное следующему:
Processes are running in session.
<list of processes>
Close anyway?
---------------------------
OK Cancel
---------------------------
И я ненавижу нажимать кнопку ОК каждый раз. Как отключить это раздражающее предупреждение? Я устал гуглить эту проблему…
Я работаю в среде Win7-10.
решение1
Этого будет достаточно.
mintty.exe -o ConfirmExit=no
Это очень полезно для *.lnk
файлов Shortcut. Например, это ссылка, которую я сделал для просмотра журнала с помощью tail -f
:
C:\tools\cygwin\bin\mintty.exe -o ConfirmExit=no -s 54,78 -e /usr/bin/bash -l -c 'tail -n 200 -f /cygdrive/c/logs/NSSM.log'
Это -s 54,78
приводит к тому, что окно становится на всю высоту дисплея и точно соответствует ширине записей журнала. Они -l -c
необходимы для того, чтобы bash мог находить исполняемые файлы в своем$PATH
Видеть:
$ mintty.exe --help
Usage: mintty [OPTION]... [ PROGRAM [ARG]... | - ]
Start a new terminal session running the specified program or the user's shell.
If a dash is given instead of a program, invoke the shell as a login shell.
Options:
-c, --config FILE Load specified config file (cf. -C or -o ThemeFile)
-e, --exec ... Treat remaining arguments as the command to execute
-h, --hold never|start|error|always Keep window open after command finishes
-p, --position X,Y Open window at specified coordinates
-p, --position center|left|right|top|bottom Open window at special position
-p, --position @N Open window on monitor N
-s, --size COLS,ROWS Set screen size in characters (also COLSxROWS)
-s, --size maxwidth|maxheight Set max screen size in given dimension
-t, --title TITLE Set window title (default: the invoked command) (cf. -T)
-w, --window normal|min|max|full|hide Set initial window state
-i, --icon FILE[,IX] Load window icon from file, optionally with index
-l, --log FILE|- Log output to file or stdout
--nobidi|--nortl Disable bidi (right-to-left support)
-o, --option OPT=VAL Set/Override config file option with given value
-B, --Border frame|void Use thin/no window border
-R, --Reportpos s|o Report window position (short/long) after exit
--nopin Make this instance not pinnable to taskbar
-D, --daemon Start new instance with Windows shortcut key
-H, --help Display help and exit
-V, --version Print version information and exit
See manual page for further command line options and configuration.
Я нашел варианты -o
дляhttps://mintty.github.io/mintty.1.html#КОНФИГУРАЦИЯ
решение2
Кажется, вы немного запутались: cygwin — это разделяемая библиотека.
Вы запускаете программы, которые используют эту библиотеку.
Попробую объяснить ситуацию:
Вы запустили терминал (mintty), который, конечно, вызывает командную оболочку (bash). Если вы запустите дополнительные программы из командной оболочки, дерево процессов будет таким:
$ pstree
?───mintty───bash───pstree
Это случай минимального дерева.
Если вы запускаете дополнительную программу из оболочки и не ждете или не запрашиваете ее завершения, когда вы требуете, чтобы mintty завершил себя, он укажет вам, что у вас есть запущенные процессы и что закрытие родительского процесса (mintty) приведет к принудительному закрытию всех дочерних. Если единственным дочерним процессом является командная оболочка, и она неактивна, mintty не потребует подтверждения и завершит себя и оболочку.
Поэтому вам нужно завершить все запущенные процессы, чтобы mintty остановился и запросил подтверждение на завершение всех дочерних процессов.