{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Максим Кузнецов: заметки с тегом bash",
    "_rss_description": "Простыми словами о веб-разработке",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/maxkuznetsov.ru\/tags\/bash\/",
    "feed_url": "https:\/\/maxkuznetsov.ru\/tags\/bash\/json\/",
    "icon": "https:\/\/maxkuznetsov.ru\/user\/userpic@2x.jpg?1586398004",
    "author": {
        "name": "Максим Кузнецов",
        "url": "https:\/\/maxkuznetsov.ru\/",
        "avatar": "https:\/\/maxkuznetsov.ru\/user\/userpic@2x.jpg?1586398004"
    },
    "items": [
        {
            "id": "43",
            "url": "https:\/\/maxkuznetsov.ru\/all\/ubuntu-running-out-of-space-i-kolichestvo-inodes\/",
            "title": "Ubuntu: Running Out of Space и количество inodes",
            "content_html": "<p>Одна из причин, почему ваш Ubuntu сервер может сигнализировать, что кончилась память, тогда как её предостаточно — слишком большое количество файлов. Каждый диск в зависимости от размера имеет ограниченное максимальное количество файлов и папок, которые вы можете создать.<\/p>\n<p>Проверить количество используемых inodes можно командой:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">root@ec2-consumer:~# df -ih\r\nFilesystem     Inodes IUsed IFree IUse% Mounted on\r\n\/dev\/root        2.5M  2.1M  419K   84% \/\r\ndevtmpfs         482K   349  482K    1% \/dev\r\ntmpfs            484K     5  484K    1% \/dev\/shm\r\ntmpfs            484K   602  483K    1% \/run\r\ntmpfs            484K     4  484K    1% \/run\/lock\r\ntmpfs            484K    18  484K    1% \/sys\/fs\/cgroup\r\n\/dev\/loop1         16    16     0  100% \/snap\/amazon-ssm-agent\/4046\r\n\/dev\/loop5        11K   11K     0  100% \/snap\/core18\/2253\r\n\/dev\/nvme1n1      25M  462K   25M    2% \/var\/www\r\ntmpfs            484K    22  484K    1% \/run\/user\/0<\/code><\/pre><p>Видим 84% около \/dev\/root — процент очень большой, это свидетельствует о проблеме. Обычно должно быть не больше 50%, а 80% — это верхний предел.<\/p>\n<p>Причин может быть несколько, например, у вас есть какой-то скрипт, пишущий много логов или временных файлов в \/tmp. В моём случае это была библиотека phrets, которая создаёт много пустых временных файлов в \/tmp.<\/p>\n<p>Если не знаете, где превышаете лимит по количеству файлов, запустите команду (может занять несколько минут):<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">du --inodes -d 3 \/ | sort -n | tail<\/code><\/pre><h2>Быстрое решение<\/h2>\n<p>Просто удалите лишние файлы. Это можно сделать по шаблону regexp:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">find \/tmp -type f -mtime +0 -name 'phrets*' -execdir rm -- '{}' \\;<\/code><\/pre><p>Здесь <tt>-mtime +0<\/tt> фильтрует все файлы, которые были созданы больше суток назад — я не хотел удалять все файлы, так как не был уверен, что библиотека phrets не использует самые свежие для чего-то нужного (хотя они все и были пустыми). Почитайте про значения параметра mtime, чтобы фильтровать как давно созданные файлы, так и недавно.<\/p>\n<h2>Долгое решение<\/h2>\n<p>Нужно увеличить количество inodes. Это крайне редкое и радикальное решение, которое хорошо описано тут — <a href=\"https:\/\/www.ctrl.blog\/entry\/how-to-all-out-of-inodes.html.\">https:\/\/www.ctrl.blog\/entry\/how-to-all-out-of-inodes.html.<\/a><\/p>\n",
            "date_published": "2022-03-13T04:25:22+03:00",
            "date_modified": "2022-03-13T04:25:10+03:00",
            "_date_published_rfc2822": "Sun, 13 Mar 2022 04:25:22 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "43",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "13",
            "url": "https:\/\/maxkuznetsov.ru\/all\/console-iterm2-omyzsh\/",
            "title": "Как улучшить терминал в Mac OS X: iTerm2, omyzsh, zsh",
            "content_html": "<p>Отличная статья про апгрейд встроенного Terminal<br \/>\n<a href=\"https:\/\/medium.com\/@Clovis_app\/configuration-of-a-beautiful-efficient-terminal-and-prompt-on-osx-in-7-minutes-827c29391961\">https:\/\/medium.com\/@Clovis_app\/configuration-of-a-beautiful-efficient-terminal-and-prompt-on-osx-in-7-minutes-827c29391961<\/a><\/p>\n<h2>Краткий план действий<\/h2>\n<ol start=\"1\">\n<li>Ставим iTerm2 на замену Terminal. Они нормально сосуществуют и можно будет откатиться, если не понравится.<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"bash\">brew cask install iterm2<\/code><\/pre><ol start=\"2\">\n<li>Ставим <a href=\"https:\/\/raw.githubusercontent.com\/Clovis-team\/clovis-open-code-extracts\/master\/utils\/Clovis-iTerm2-Color-Scheme.itermcolors\">цветовую cхему<\/a> для iTerm2 (сохраняйте именно как .itermcolors) — это набор цветов и ничего больше. На данном этапе терминал всё ещё будет выглядеть уныло.<\/li>\n<li>Качаем шрифт с поддержкой дополнительных символов-иконок: <a href=\"https:\/\/github.com\/powerline\/fonts\/blob\/master\/Meslo%20Slashed\/Meslo%20LG%20M%20Regular%20for%20Powerline.ttf\">обычный<\/a> или <a href=\"https:\/\/github.com\/powerline\/fonts\/blob\/master\/Meslo%20Slashed\/Meslo%20LG%20M%20Bold%20for%20Powerline.ttf\">жирный<\/a> (он контрастнее) — и устанавливаем в систему. Иначе увидим не иконки, а пустые квадратики.<br \/>\nМеняем размер шрифта на 12-14pt или какой удобнее.<\/li>\n<li>Через консоль iTerm’a устанавливаем Zsh (вместо стандартного Bash) и Oh my Zsh — само ядро командной строки и оболочку с форматированием вокруг неё.<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"bash\"># Возможно, zsh у вас уже есть по умолчанию. Чтобы проверить, нужно ввести : \r\nwhich zsh\r\n# Если вернёт путь, значит есть. Если нет, то ставим:\r\nbrew install zsh zsh-completions\r\n# Устанавливаем Oh my Zsh\r\nsh -c &quot;$(curl -fsSL https:\/\/raw.github.com\/robbyrussell\/oh-my-zsh\/master\/tools\/install.sh)&quot;<\/code><\/pre><ol start=\"5\">\n<li>Важно: теперь основной конфигурационный файл консоли — ~\/.zshrc, а не ~\/.bashrc или ~\/.bash_profile.<\/li>\n<li>Скачиваем в дефолтную директорию тему — самую маковку, которая добавит красоты в терминал<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"bash\">git clone https:\/\/github.com\/bhilburn\/powerlevel9k.git ~\/.oh-my-zsh\/custom\/themes\/powerlevel9k\r\n# Редактируем ~\/.zshrc и меняем конфиг\r\nZSH_THEME=&quot;powerlevel9k\/powerlevel9k&quot;<\/code><\/pre><ol start=\"7\">\n<li>Перезагружаем iTerm и вуаля.<\/li>\n<\/ol>\n<h2>Улучшение вида и поведения терминала<\/h2>\n<ol start=\"1\">\n<li>Вид самой строки<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"bash\">POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir rbenv vcs)\r\nPOWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status root_indicator background_jobs history time)\r\nPOWERLEVEL9K_VCS_MODIFIED_BACKGROUND='red' # Будет менять цвет, если есть обновления в гит-репозитории<\/code><\/pre><ol start=\"2\">\n<li>Я не стал делать перенос строки (POWERLEVEL9K_PROMPT_ON_NEWLINE=true), так как у меня терминал всегда на всю ширину экрана и места хватает.<\/li>\n<li>Обязательно: iTerm → Preferences → Profiles → Keys → Load Preset… → Natural Text Editing, чтобы работала навигация через Option + стрелки и прочее.<\/li>\n<li>Можно добавить автодополнение команд на основе истории<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"bash\">git clone https:\/\/github.com\/zsh-users\/zsh-autosuggestions $ZSH_CUSTOM\/plugins\/zsh-autosuggestions\r\nvim ~\/.zshrc\r\n# Внутри файла добавляем через пробел название плагина\r\nplugins=(… zsh-autosuggestions)<\/code><\/pre><ol start=\"5\">\n<li>Включаем автозагрузку ssh-ключей при старте терминала:<br \/>\n<a href=\"https:\/\/github.com\/ohmyzsh\/ohmyzsh\/tree\/master\/plugins\/ssh-agent\">https:\/\/github.com\/ohmyzsh\/ohmyzsh\/tree\/master\/plugins\/ssh-agent<\/a><\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"bash\">vim ~\/.zshrc\r\n# Внутри файла добавляем через пробел название плагина\r\nplugins=(… ssh-agent)\r\n# Сразу ниже включаем ssh-agent и указываем ключи через пробел — у меня их два\r\nzstyle :omz:plugins:ssh-agent agent-forwarding on\r\nzstyle :omz:plugins:ssh-agent identities id_rsa id_rsa2\r\n# Эта строка у вас уже будет, главное команды выше поместить до этой строки с source\r\nsource $ZSH\/oh-my-zsh.sh<\/code><\/pre><ol start=\"6\">\n<li>Перезагружаем iTerm. Уже всё готово!<\/li>\n<li>Опционально: после всех правок IDE, которые содержат встроенный терминал, могут выглядеть слегка кривовато. Нужно им помочь с определением шрифта. Например, в VS Code в настройках меняем параметры:<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"\">&quot;terminal.integrated.fontFamily&quot;: &quot;Meslo LG M for Powerline&quot;\r\n&quot;terminal.integrated.fontSize&quot;: 12<\/code><\/pre>",
            "date_published": "2020-03-23T03:23:25+03:00",
            "date_modified": "2020-03-23T15:29:19+03:00",
            "_date_published_rfc2822": "Mon, 23 Mar 2020 03:23:25 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "13",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "10",
            "url": "https:\/\/maxkuznetsov.ru\/all\/tech-obyom-diska-i-papki\/",
            "title": "Объём диска и папки",
            "content_html": "<p>Никак не могу удержать в голове эти команды, так как они нужные не так часто, но всё же настолько, чтобы записать и больше не искать.<\/p>\n<p>Сколько места на диске:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">df -h<\/code><\/pre><p>Сколько места занимает папка:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">du -sh .\/folder<\/code><\/pre><p>Что именно занимает больше всего места внутри папки:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">du -sh .\/folder\/*<\/code><\/pre>",
            "date_published": "2019-09-18T11:55:51+03:00",
            "date_modified": "2020-04-08T20:41:42+03:00",
            "_date_published_rfc2822": "Wed, 18 Sep 2019 11:55:51 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "10",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 3559,
    "_e2_ua_string": "E2 (v3559; Aegea)"
}