Выход терминала печати в gedit автоматически?

Я начал

while true; do yad; sleep 60; done &

и закрыл терминал, чтобы проверить его, теперь у меня такая же проблема.

Если вы уже закрыли терминал, вы запустили цикл в

Давайте посмотрим обзор запущенных процессов с помощью ps fjx, последние строки на моей машине читаем

 2226 11606 11606 19337 ?           -1 S     1000   0:00  \_ /bin/bash
11606 22485 11606 19337 ?           -1 S     1000   0:00  |   \_ sleep 10
 2226  9411  9411  8383 ?           -1 S     1000   0:00  \_ /bin/bash
 9411 17674  9411  8383 ?           -1 Sl    1000   0:00      \_ yad
    1  2215  2215  2215 ?           -1 Ss    1000   0:00 /lib/systemd/systemd --user
 2215  2216  2215  2215 ?           -1 S     1000   0:00  \_ (sd-pam)

Вы можете видеть yad как подпроцесс /bin/bash, если я закрываю yad, он изменяется на sleep 60 на выходе ps. Если древовидное представление слишком запутанно, вы также можете искать выход следующим образом:

ps fjx | grep "[y]ad"  # or respectively
ps fjx | grep "[s]leep 60"

Выходные строки начинаются с двух чисел, первым из которых является идентификатор PPID, идентификатор процесса родительского процесса и второй являющийся PID, идентификатором самого процесса. Именно из-за этого 9411 появляется в обеих строках:

2226  9411  9411  8383 ?           -1 S     1000   0:00  \_ /bin/bash
9411 17674  9411  8383 ?           -1 Sl    1000   0:00      \_ yad

Это bash подоболочка, которую мы хотим убить, и мы только что узнали ее PID, так что теперь все, что остается, является простым

kill 9411  # replace 9411 with the PID you found out!

, и раздражающая подоболочка ушла навсегда.

1

[!d13 ]

Если вы все еще открываете терминал

bash, вы можете указать переменную $!, которая «расширяет идентификатор процесса задания, который недавно был помещен в фоновый режим», поэтому следующее просто убивает последний процесс в фоновом режиме:

kill $!

Если это не последний процесс, просто вы можете получить список запущенных заданий с встроенным jobs, например:

[1]-  Running                 while true; do
    yad; sleep 60;
done &
[2]+  Stopped                 sleep 10

В списке заданий есть два задания, чтобы убить одного из них, вы можете получить к нему доступ с номером задания или ярлыками %, %+ («текущее задание») и %- («предыдущее задание») ), например чтобы убить цикл, выполняемый в фоновом режиме, вы можете сделать

kill %1  # or
kill %-

и убить приостановленное задание sleep 10:

kill %2  # or
kill %+  # or
kill %
1
задан 2 February 2017 в 12:18

1 ответ

Изменить: я должен был проверить это!

Kees очень правилен. time - это оболочка, встроенная в большинстве случаев, поэтому ее вывод не проходит через STDOUT, как обычно. Вы можете использовать версию команды, сидящую, но чтобы сохранить два идентичных ответа (или я удалил мой), вот еще один способ захватить вещи, которые не выводятся традиционным способом.

bash -c "time ./myprog" 2>&1 > file.txt

Одинаковые принципы как раньше. Если вы хотите, чтобы gedit загрузился после этого, нажимайте && gedit file.txt, если вы хотите, чтобы он был добавлен, измените > на >>.

Если ваша команда очень шумная, и вы просто хотите время , вы можете запустить вывод через tail:

bash -c "time ./myprog" 2>&1 | tail -3 > file.txt && gedit file.txt

Старый ответ

Чтобы просто сохранить его в файле, просто выполните это:

time ./myprog > file.txt

Вам не нужно расширение .txt, но оно может вам помочь. Если вы хотите добавить к файлу (вместо его замены), замените > на >>.

Если вы хотите, чтобы это отображалось в gedit специально, вам нужно сохранить его в файл и затем откройте его в gedit. Я не вижу способа прямого перевода текста непосредственно в gedit, не сохраняя его сначала.

time ./myprog > file.txt && gedit file.txt
5
ответ дан 26 May 2018 в 00:39
  • 1
    хороший один = D! Я действительно чему-то научился (& gt; & gt;) +1 – RolandiXor♦ 2 November 2010 в 22:09
  • 2
    & GT; он не работает: & gt; файл (file.txt) действительно создан, но остается пустым. Что я сделал не так ? PS: Мне действительно нужно набрать «./myprog ./ mydatat», чтобы использовать myprog. Может быть, из-за этого? – user2413 2 November 2010 в 22:25
  • 3
    @kwak Я обновил сообщение. – Oli♦ 2 November 2010 в 22:42
  • 4
    & GT; Благодарю. Я уже принял ответ Киса, но оба решают мою проблему. (то есть, я проголосовал за оба). – user2413 2 November 2010 в 22:48
  • 5
    @kwak У меня нет проблем с этим - они оба делают почти то же самое. Я просто хотел показать другой способ сделать это на случай, если у кого-то еще будет проблема с перенаправлением вывода. – Oli♦ 2 November 2010 в 23:24

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

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