Compare commits
20 Commits
e15d5cb962
...
904e8b5e80
| Author | SHA1 | Date |
|---|---|---|
|
|
904e8b5e80 | |
|
|
5a7c2d3634 | |
|
|
5e20ad4ea0 | |
|
|
aeec52728c | |
|
|
d79a2e83dc | |
|
|
c628fe7362 | |
|
|
01c58494bc | |
|
|
72ea9afb84 | |
|
|
e8ffb1b3a8 | |
|
|
11d6a8f2c5 | |
|
|
fe0facce9d | |
|
|
fa56c592e5 | |
|
|
f0fd2abbe7 | |
|
|
e871c0e88d | |
|
|
07fa9f9d3c | |
|
|
fd853269e2 | |
|
|
0eaf2d47ea | |
|
|
389cea412e | |
|
|
34032105f4 | |
|
|
5e23a9cabb |
|
|
@ -0,0 +1,11 @@
|
|||
<!--
|
||||
title: ПО, которое необходимо для установки и настройки хакинтоша
|
||||
description:
|
||||
published: true
|
||||
date: 2023-11-07T10:42:22.230Z
|
||||
tags: mac, soft, hackintosh
|
||||
editor: ckeditor
|
||||
dateCreated: 2023-11-07T10:42:22.230Z
|
||||
-->
|
||||
|
||||
<p>Opencore</p>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 82 KiB |
|
|
@ -2,19 +2,19 @@
|
|||
title: bash-completion автодополнение
|
||||
description:
|
||||
published: true
|
||||
date: 2023-11-03T14:24:47.893Z
|
||||
date: 2023-11-07T10:34:47.942Z
|
||||
tags: bash, linux
|
||||
editor: ckeditor
|
||||
dateCreated: 2023-11-03T08:47:49.396Z
|
||||
-->
|
||||
|
||||
<h3>Устанавливаем из официальных репозиториев</h3>
|
||||
<p><code>apt install bash-completion</code></p>
|
||||
<pre><code class="language-plaintext">apt install bash-completion</code></pre>
|
||||
<p> </p>
|
||||
<h5><strong>Настройка автозаполнения Bash</strong></h5>
|
||||
<p>Если все прошло успешно, то у вас должен появится файл <code><strong>bash_completion.sh</strong></code>. Он расположен в <code><strong>/etc/profile.d/</strong></code> </p>
|
||||
<p>Чтобы убедиться в этом, выполните эту команду.</p>
|
||||
<figure class="image image_resized" style="width:43.89%;"><img src="/image.png"></figure>
|
||||
<figure class="image"><img src="/image.png"></figure>
|
||||
<p>Чтобы применить изменения и тем самым включить желаемое автозаполнение, нам требуется добавить несколько вещей в <code><strong>~/.bashrc</strong></code>.</p>
|
||||
<p>Мы можем либо скопировать содержимое скрипта в конец упомянутого файла, либо просто перенести его в файл.</p>
|
||||
<p><code>echo "source /etc/profile.d/bash_completion.sh" >> ~/.bashrc</code></p>
|
||||
<pre><code class="language-plaintext">echo "source /etc/profile.d/bash_completion.sh" >> ~/.bashrc</code></pre>
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
<!--
|
||||
title: Отвязка процесса от терминальной сессии
|
||||
description:
|
||||
published: true
|
||||
date: 2023-11-07T10:22:18.586Z
|
||||
tags: bash, process, screen
|
||||
editor: ckeditor
|
||||
dateCreated: 2023-11-07T10:15:03.139Z
|
||||
-->
|
||||
|
||||
<p>Есть у меня какой-то долгоиграющий скрипт, который я по дурости запустил в терминале, без nohup и применения screen. Ждать завершения скрипта не вариант, но и завершать его принудительно нельзя. Как быть? Сейчас покажу, поехали.</p>
|
||||
<p>Сделаем подопытный образец, который в цикле будет писать в файл числа от 1 до 10000, чтобы визуально понимать что происходит. Ну и паузу впендюрим 2 секунды, для чистоты эксперимента.</p>
|
||||
<p> </p>
|
||||
<pre><code class="language-plaintext">#!/bin/bash
|
||||
|
||||
for i in {1..10000}
|
||||
do
|
||||
echo $i >> /tmp/log.txt
|
||||
sleep 2
|
||||
done</code></pre>
|
||||
<p> </p>
|
||||
<p>Запускаем, ага. Теперь открываем второй терминал и пишем:</p>
|
||||
<pre><code class="language-plaintext">tail -f /tmp/log.txt</code></pre>
|
||||
<p>Видим как файл log.txt постепенно наполняется циферками. </p>
|
||||
<p>Всё прекрасно. Что нужно сделать дальше. А дальше жми сочетание клавиш ctrl+z в первом терминале, где ты запустил скрипт.</p>
|
||||
<p>Комбинация клавиш Ctrl + Z посылает процессу сигнал, который приказывает ему остановиться. Это значит, что процесс остается в системе, но как бы замораживается.</p>
|
||||
<p>Ловим такое:</p>
|
||||
<pre><code class="language-plaintext">[1]+ Stopped ./script.sh</code></pre>
|
||||
<p>Видим что скрипт остановил свою работу. А во втором терминале с tail, цифры перестали заполнять файл log.txt. Ключевое слово - остановил, но не прекратил. Окей, мы на верном пути.</p>
|
||||
<p>А теперь в первом терминале запускай команду bg, в ответ ты увидишь такое:</p>
|
||||
<pre><code class="language-plaintext">[1] + ./script.sh & </code></pre>
|
||||
<p>Видишь в конце закорючку &, наталкивает на мысли? 🤒</p>
|
||||
<p>Команда bg предназначена для возобновления исполнения остановленной задачи в фоновом режиме в командных оболочках.</p>
|
||||
<p>Скрипт продолжил работу в фоне, с того момента где ты его приостановил. Идем во второй терминал с tail и видим, что цифры продолжили заполнять файл.</p>
|
||||
<p>Круто! Но это пока еще не все, если закрыть первый терминал, скрипт прекратит свою работу, нужно его как-то отвязать от текущей сессии и демонизировать. </p>
|
||||
<p>Запускаем финалочку:</p>
|
||||
<pre><code class="language-plaintext">disown %1</code></pre>
|
||||
<p>Команда disown блокирует отправку системного сигнала SIGHUP с помощью командной оболочки и исполняющемуся в фоновом режиме процессу при завершении работы командной оболочки. </p>
|
||||
<p>Теперь в первом терминале пишем exit либо просто закрываем его нахрен. Ха! А во втором терминале работа скрипта продолжается. Магия!</p>
|
||||
<p>Вот таким образом ты можешь легко отвязать уже запущенный скрипт от терминальной сессии и уйти по своим делам, пощелкать впн и т.п. Кстати работает не только со скриптами.</p>
|
||||
<p>Наверное есть еще варианты провернуть подобное. Я показал способ которым пользуюсь сам.</p>
|
||||
<p>Ключевые слова для самостоятельного гугления: bg, fg, jobs, disown, nohup.</p>
|
||||
<p>Да, после того как нажал ctrl+z, можно все откатить назад, запускаешь команду fg и ловишь флешбек.</p>
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
---
|
||||
title: Отвязка процесса от терминальной сессии
|
||||
description:
|
||||
published: true
|
||||
date: 2023-11-07T10:27:49.649Z
|
||||
tags: bash, process, screen
|
||||
editor: markdown
|
||||
dateCreated: 2023-11-07T10:15:03.139Z
|
||||
---
|
||||
|
||||
Есть у меня какой-то долгоиграющий скрипт, который я по дурости запустил в терминале, без nohup и применения screen. Ждать завершения скрипта не вариант, но и завершать его принудительно нельзя. Как быть? Сейчас покажу, поехали.
|
||||
|
||||
Сделаем подопытный образец, который в цикле будет писать в файл числа от 1 до 10000, чтобы визуально понимать что происходит. Ну и паузу впендюрим 2 секунды, для чистоты эксперимента.
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
for i in {1..10000}
|
||||
do
|
||||
echo $i >> /tmp/log.txt
|
||||
sleep 2
|
||||
done
|
||||
```
|
||||
|
||||
Запускаем, ага. Теперь открываем второй терминал и пишем:
|
||||
|
||||
```plaintext
|
||||
tail -f /tmp/log.txt
|
||||
```
|
||||
|
||||
Видим как файл log.txt постепенно наполняется циферками.
|
||||
|
||||
Всё прекрасно. Что нужно сделать дальше. А дальше жми сочетание клавиш ctrl+z в первом терминале, где ты запустил скрипт.
|
||||
|
||||
Комбинация клавиш Ctrl + Z посылает процессу сигнал, который приказывает ему остановиться. Это значит, что процесс остается в системе, но как бы замораживается.
|
||||
|
||||
Ловим такое:
|
||||
|
||||
```plaintext
|
||||
[1]+ Stopped ./script.sh
|
||||
```
|
||||
|
||||
Видим что скрипт остановил свою работу. А во втором терминале с tail, цифры перестали заполнять файл log.txt. Ключевое слово - остановил, но не прекратил. Окей, мы на верном пути.
|
||||
|
||||
А теперь в первом терминале запускай команду bg, в ответ ты увидишь такое:
|
||||
|
||||
```plaintext
|
||||
[1] + ./script.sh &
|
||||
```
|
||||
|
||||
Видишь в конце закорючку &, наталкивает на мысли? 🤒
|
||||
|
||||
Команда bg предназначена для возобновления исполнения остановленной задачи в фоновом режиме в командных оболочках.
|
||||
|
||||
Скрипт продолжил работу в фоне, с того момента где ты его приостановил. Идем во второй терминал с tail и видим, что цифры продолжили заполнять файл.
|
||||
|
||||
Круто! Но это пока еще не все, если закрыть первый терминал, скрипт прекратит свою работу, нужно его как-то отвязать от текущей сессии и демонизировать.
|
||||
|
||||
Запускаем финалочку:
|
||||
|
||||
```plaintext
|
||||
disown %1
|
||||
```
|
||||
|
||||
Команда disown блокирует отправку системного сигнала SIGHUP с помощью командной оболочки и исполняющемуся в фоновом режиме процессу при завершении работы командной оболочки.
|
||||
|
||||
Теперь в первом терминале пишем exit либо просто закрываем его нахрен. Ха! А во втором терминале работа скрипта продолжается. Магия!
|
||||
|
||||
Вот таким образом ты можешь легко отвязать уже запущенный скрипт от терминальной сессии и уйти по своим делам, пощелкать впн и т.п. Кстати работает не только со скриптами.
|
||||
|
||||
Наверное есть еще варианты провернуть подобное. Я показал способ которым пользуюсь сам.
|
||||
|
||||
Ключевые слова для самостоятельного гугления: bg, fg, jobs, disown, nohup.
|
||||
|
||||
Да, после того как нажал ctrl+z, можно все откатить назад, запускаешь команду fg и ловишь флешбек.
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
<!--
|
||||
title: Шпаргалка по выводу в терминале
|
||||
description:
|
||||
published: true
|
||||
date: 2023-11-07T10:38:50.580Z
|
||||
tags: output, tee
|
||||
editor: ckeditor
|
||||
dateCreated: 2023-11-07T10:37:25.945Z
|
||||
-->
|
||||
|
||||
<figure class="image image_resized" style="width:52.11%;"><img src="/photo_2023-10-31_14-45-08.jpg" alt="photo_2023-10-31_14-45-08.jpg"></figure>
|
||||
<p>О чо у меня есть, офигительная шпаргалина!</p>
|
||||
<p>n.e. в колонке означает not existing (не существует)</p>
|
||||
<p>Давай разберем:</p>
|
||||
<p><code>command > file.txt</code></p>
|
||||
<p>Поток вывода перенаправлен в файл, в терминале его не видно. Если файл существует, он будет перезаписан.</p>
|
||||
<p><code>command >> file.txt</code></p>
|
||||
<p>Поток вывода перенаправлен в файл, в терминале его не видно. Если файл существует, то новые данные добавятся в конец файла.</p>
|
||||
<p><code>command 2> file.txt</code></p>
|
||||
<p>Поток ошибок перенаправлен в файл, в терминале его видно. Если файл существует, он будет перезаписан.</p>
|
||||
<p><code>command 2>> file.txt</code></p>
|
||||
<p>Поток ошибок перенаправлен в файл, в терминале его не видно. Если файл существует, то новые данные будут добавлены в конец файла.</p>
|
||||
<p><code>command &> file.txt</code></p>
|
||||
<p>Поток вывода и поток ошибок перенаправлены в файл, в терминале их не видно. Если файл уже существует, то он будет перезаписан.</p>
|
||||
<p><code>command &>> file.txt</code></p>
|
||||
<p>Поток вывода и поток ошибок перенаправлены в файл, в терминале их не видно. Если файл уже существует, то новые данные будут добавлены в конец файла.</p>
|
||||
<p><code>command | tee file.txt</code></p>
|
||||
<p>Поток вывода скопирован в файл, он виден в терминале. Если файл уже существует, то он перезапишется.</p>
|
||||
<p>Команда tee в Linux считывает стандартный ввод и записывает его одновременно в стандартный вывод и в один или несколько подготовленных файлов.</p>
|
||||
<p><code>command | tee -a file.txt</code></p>
|
||||
<p>Поток вывода скопирован в файл, он виден в терминале. Если файл уже существует, то новые данные будут добавлены в конец файла.</p>
|
||||
<p>(*)</p>
|
||||
<p>В Bash нет сокращенного синтаксиса, позволяющего передавать только StdErr второй команде, что было бы необходимо в данном случае в сочетании с tee для завершения операции.</p>
|
||||
<p><code>command |& tee file.txt</code></p>
|
||||
<p>В файл скопированы потоки вывода и ошибки, они видны в терминале. Если файл уже существует, то он перезапишется.</p>
|
||||
<p><code>command |& tee -a file </code><br>Потоки вывода и ошибки скопированы в файл, в терминале их не видно. Если файл уже существует, то новые данные будут добавлены в конец файла.</p>
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
---
|
||||
title: Шпаргалка по выводу в терминале
|
||||
description:
|
||||
published: true
|
||||
date: 2023-11-07T10:39:10.352Z
|
||||
tags: output, tee
|
||||
editor: markdown
|
||||
dateCreated: 2023-11-07T10:37:25.945Z
|
||||
---
|
||||
|
||||

|
||||
|
||||
О чо у меня есть, офигительная шпаргалина!
|
||||
|
||||
n.e. в колонке означает not existing (не существует)
|
||||
|
||||
Давай разберем:
|
||||
|
||||
`command > file.txt`
|
||||
|
||||
Поток вывода перенаправлен в файл, в терминале его не видно. Если файл существует, он будет перезаписан.
|
||||
|
||||
`command >> file.txt`
|
||||
|
||||
Поток вывода перенаправлен в файл, в терминале его не видно. Если файл существует, то новые данные добавятся в конец файла.
|
||||
|
||||
`command 2> file.txt`
|
||||
|
||||
Поток ошибок перенаправлен в файл, в терминале его видно. Если файл существует, он будет перезаписан.
|
||||
|
||||
`command 2>> file.txt`
|
||||
|
||||
Поток ошибок перенаправлен в файл, в терминале его не видно. Если файл существует, то новые данные будут добавлены в конец файла.
|
||||
|
||||
`command &> file.txt`
|
||||
|
||||
Поток вывода и поток ошибок перенаправлены в файл, в терминале их не видно. Если файл уже существует, то он будет перезаписан.
|
||||
|
||||
`command &>> file.txt`
|
||||
|
||||
Поток вывода и поток ошибок перенаправлены в файл, в терминале их не видно. Если файл уже существует, то новые данные будут добавлены в конец файла.
|
||||
|
||||
`command | tee file.txt`
|
||||
|
||||
Поток вывода скопирован в файл, он виден в терминале. Если файл уже существует, то он перезапишется.
|
||||
|
||||
Команда tee в Linux считывает стандартный ввод и записывает его одновременно в стандартный вывод и в один или несколько подготовленных файлов.
|
||||
|
||||
`command | tee -a file.txt`
|
||||
|
||||
Поток вывода скопирован в файл, он виден в терминале. Если файл уже существует, то новые данные будут добавлены в конец файла.
|
||||
|
||||
(\*)
|
||||
|
||||
В Bash нет сокращенного синтаксиса, позволяющего передавать только StdErr второй команде, что было бы необходимо в данном случае в сочетании с tee для завершения операции.
|
||||
|
||||
`command |& tee file.txt`
|
||||
|
||||
В файл скопированы потоки вывода и ошибки, они видны в терминале. Если файл уже существует, то он перезапишется.
|
||||
|
||||
`command |& tee -a file `
|
||||
Потоки вывода и ошибки скопированы в файл, в терминале их не видно. Если файл уже существует, то новые данные будут добавлены в конец файла.
|
||||
|
|
@ -2,13 +2,13 @@
|
|||
title: Авторизация по ключу rsa по ssh
|
||||
description:
|
||||
published: true
|
||||
date: 2023-11-03T12:41:49.500Z
|
||||
date: 2023-11-07T10:28:32.485Z
|
||||
tags: ssh, rsa
|
||||
editor: markdown
|
||||
dateCreated: 2023-11-03T12:36:39.209Z
|
||||
---
|
||||
|
||||
# SSH авторизация по ключам
|
||||
## SSH авторизация по ключам
|
||||
|
||||
В интернете можно найти множество иснтрукций о том как настроить *ssh авторизацию по ключам* для использования с репозиториями, удаленным администрированием, различными программами контроля версий и т.д.
|
||||
Встречаются даже такие извращения как использование Putty агента в связке с Tortoise Git на основе Putty сессий. Варианты с генерацией ключа с помощью Putty, конвертирование из одного формата в другой и подсовывание в Tortoise Git я, изрядно измучившись, тоже выкинул. Даже на самом GitHub лежит мануал с использованием агента ключей.
|
||||
Loading…
Reference in New Issue