-Поиск по дневнику

Поиск сообщений в eugene20237

 -Подписка по e-mail

 




SHRED directory

Воскресенье, 01 Января 2023 г. 22:34 + в цитатник
Вот так это делается:
find -depth -type f -exec shred -v -n 1 -z -u {} \;
Источник: https://unix.stackexchange.com/a/117848

Метки:  

Как правильно подключить к виртуальной сети новый LXD-контейнер?

Понедельник, 11 Ноября 2019 г. 22:14 + в цитатник
Раньше я делал неправильно... Правильно делать так:
"... подключаем контейнер к сети и задаем ему адрес:
lxc network attach bob-br container-bob eth0
lxc config device set container-bob eth0 ipv4.address 10.0.2.2"
Подробности описаны по этой ссылке: https://codex.so/first-lxc-container

Метки:  

Что делать если не получается размонтировать устройство?

Суббота, 09 Ноября 2019 г. 23:26 + в цитатник
Бывает так что при вызове umount мы видим это:
umount: /mnt: device is busy.

Смотрим номера блокирующих процессов этой командой:
ls -l /proc/*/cwd | grep pathofmountpoint
А затем убиваем эти процессы командой kill. Далее размонтируем устройство как обычно:
umount pathofmountpoint

Инфа взята отсюда: https://serverfault.com/questions/58991/cant-unmou...-file-but-theres-no-open-files

Метки:  

Что делать с Bad-блоками в Linux?

Суббота, 25 Мая 2019 г. 11:52 + в цитатник
Вот статья: https://www.linuxtechi.com/check-hard-drive-for-bad-sector-linux/


Check Hard drive for bad sectors or bad blocks in linux
by Pradeep Kumar · Published August 6, 2014 · Updated August 4, 2017

badblocks is the command or utility in linux like operating system which can scan or test our hard disk and external drive for bad sectors. Bad sectors or bad blocks is the space of the disk which can’t be used due to the permanent damage or OS is unable to access it.

Badblocks command will detect all bad blocks(bad sectors) on our hard disk and save them in a text file so that we can use it with e2fsck to configure Operating System(OS) to not store our data on these damaged sectors.

Step:1 Use fdisk command to identify your hard drive info

# sudo fdisk -l

Step:2 Scan your hard drive for Bad Sectors or Bad Blocks

# sudo badblocks -v /dev/sdb > /tmp/bad-blocks.txt

Just replace “/dev/sdb” with your own hard disk / partition. When we execute above command a text file “bad-blocks” will be created under /tmp , which will contains all bad blocks.

Example :


Step:3 Inform OS not to use bad blocks for storing data

Once the scanning is completed , if the bad sectors are reported , then use file “bad-blocks.txt” with e2fsck command and force OS not to use these bad blocks for storing data.

# sudo e2fsck -l /tmp/bad-blocks.txt /dev/sdb

Note : Before running e2fsck command , you just make sure the drive is not mounted.
For any futher help on badblocks & e2fsck command , read their man pages

# man badblocks
# man e2fsck

Метки:  

LINUX: простой бэкап на dropbox через командную строку

Вторник, 14 Марта 2017 г. 21:01 + в цитатник
Тут всё написано: https://coderwall.com/p/jcc3dg/using-dropbox-for-server-backup
Способ очень удобный и бесплатный.

Метки:  

SRWare Iron - приватный браузер на основе Chromium

Среда, 01 Марта 2017 г. 22:28 + в цитатник
Вот что они про себя пишут:

"Iron is free and OpenSource. You can download it and share with your friends.

We’ve covered SRWare Iron in the past. It’s a privacy-conscious version of Google Chrome with many features removed completely. It also removes Chrome’s auto-updater — you’ll have to manually download new versions from the SRWare Iron website.

To be honest, SRWare Iron doesn’t offer much over Chrome. You can change the privacy options in Chrome yourself. SRWare Iron also ships with a custom start page with advertisements and, when you click the “Get more extensions” link, it takes you to SRWare Iron’s own page listing extensions — also filled with ads."

Скачать тут: http://www.srware.net/en/software_srware_iron_download.php
Там же есть Portable-версия!

screenshot_063.png.pagespeed.ce.mcYnQPDdfM (650x500, 76Kb)

Метки:  

LINUX: настройка нового web-сервера с нуля

Воскресенье, 19 Февраля 2017 г. 17:46 + в цитатник
Довольно часто появляются задаче по полной настройке и оптимизации web-серверов. Как правило, это физические сервера с хорошими характеристиками. В данном посте я скомпоновал весь свой опыт по начальной настройке. На правильность эти действия ни коем образом не претендуют. Быть может надо делать как-то иначе и будет лучше... Я просто напишу как делаю я.

Далее всё будет относится к операционной системе Ubuntu 18.04. На других Убунтах и Дебианах инструкции будут аналогичные.

При установке Убунту можно нажать F4 и выбрать там Install minimal system. Нам ведь не нужен мусор из стандартного дистрибутива вроде lxc или python3?
Устанавливаем операционную систему.

После установки прежде всего обновим информацию о репозиториях и далее обновим все пакеты.
apt-get update
apt-get upgrade
apt-get autoremove

Отредактируем файл /etc/default/grub так чтобы в нём присутствовала такая строчка:
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
Это нужно для ускорения работы docker, а быть может и других программ. Далее нужно обновить GRUB:
update-grub
Подробности того зачем это надо можно найти тут: https://askubuntu.com/questions/417215/how-does-kernel-support-swap-limit

Убунта могла обновить ядро, поэтому на всякий случай перезагружаемся:
shutdown -r now

В будущем обновлять ядро я категорически не рекомендую. А пока сервер пустой, мы ничем не рискуем.

После перезагрузки установим кое-какие пакеты, чтобы можно было по человечески работать с системой:
apt-get install nano mc htop iftop
nano - консольный текстовый редактор
mc - файловый менеджер "для людей"
htop - красивое отображение текущей ситуации на сервере (процессоры, память, запущеные приложения)
iftop - мониторинг трафика

Далее я всё делаю через mc. Гуляю по папкам, вношу изменения. Если надо набрать консольные команды, то жму Ctrl + O и всё делаю. Обратно в mc - тоже Ctrl + O. Если нужно отредактировать файл - жму F4. Чтение - F3. Сохранение - F2. Выход из файла - два раза ESCAPE. Всё там просто и классно! Для того чтобы мне было удобно я ещё настраиваю это. Далее лучше перезайти на сервер по своему SSH. Я считаю, что новичкам тоже лучше всё делать через mc. Иначе ты не видишь систему с которой работаешь.

Также рекомендую повесить SSH на какой-нибудь другой порт, потому что по 22 обычно ломятся китайцы. Инструкции описаны, например, тут. После смены порта желательно проделать и это:

"Данное правило ограничивает больше 20-ти подключение к 80 порту(web) за 15 секунд с 1 ip адреса.
(кстати, подобное правило есть на уровне nginx, но сжирает огромное количество ресурсов)":
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 15 --hitcount 20 -j DROP

"Правило ограничивает количество подключений к SSH, не более 4-х подключений за 1 минуту":
iptables -A INPUT -p tcp --dport 354 -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 354 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
"Где 354 порт вашего ssh сервера. На деле у меня не получалось авторизовать более 1 раза за минуту. Далее это правило вы дальше можете адаптировать под себя и другие сервисы."

Добавляем правила для запрета Simple Service Discovery Protocol (SSDP) чтобы датацентр не просил нас это сделать в будущем. Также блокируем все порты кроме тех что нам нужны (в этом примере открываем только порт 22):
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -j DROP
-A INPUT -i eth0 -p tcp -m tcp --dport 1900 -j DROP
-A INPUT -i eth0 -p udp -m udp --dport 1900 -j DROP
-A FORWARD -i eth0 -p tcp --dport 22 -j ACCEPT
-A FORWARD -i eth0 -j DROP
-A FORWARD -i eth0 -p tcp -m tcp --dport 1900 -j DROP
-A FORWARD -i eth0 -p udp -m udp --dport 1900 -j DROP
-A OUTPUT -s 234.165.140.130/32 -p tcp -m tcp --sport 1900 -j DROP
-A OUTPUT -s 234.165.140.130/32 -p udp -m udp --sport 1900 -j DROP
Где 234.165.140.130 - это IP адрес вашего сервера в интернете.

Или так:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i eth0 -p tcp -m tcp -m multiport --dports 22 -j ACCEPT
-A INPUT -i eth0 -m conntrack -j ACCEPT --ctstate RELATED,ESTABLISHED
-A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i eth0 -j DROP
-A OUTPUT -s 234.165.140.130/32 -p tcp -m tcp --sport 1900 -j DROP
-A OUTPUT -s 234.165.140.130/32 -p udp -m udp --sport 1900 -j DROP
-A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eth0 -j DROP

После рестарта системы все правила обнулятся, по этому делаем следующее:
apt-get install ifupdown

Далее создаем и редактируем файл /etc/network/if-up.d/00-iptables
nano -w /etc/network/if-up.d/00-iptables

Пишем в него:
#!/bin/sh
iptables-restore < /etc/firewall.conf

сохраняем и делаем файл исполняемым:
chmod +x /etc/network/if-up.d/00-iptables

Сохраняем правила в файл:
iptables-save | sudo tee /etc/firewall.conf

Всё, правила настроены и сохранятся после перезагрузки системы."

Вместо ручной правки iptables можно использовать fail2ban.

Синхронизируем время:
apt-get install ntpdate
crontab -e
И прописываем в crontab:
* */4 * * * ntpdate 2.de.pool.ntp.org
Можно было бы выбрать более удачный сервер времени, но мне влом их искать. Всё работает надёжно.

"Ускоряем общую работу системы. Prelink и Preload. Prelink - для создание статичных адресов библиотек, Preload - это небольшое приложение, которое следит за файлами наиболее часто используемых приложений, и загружает их в память, когда система простаивает.
Установка Prelink:
apt-get -y install prelink

Редактируем файл /etc/default/prelink:
nano /etc/default/prelink

Измените строку с PRELINKING=unknown на PRELINKING=yes
Запускаем:
/etc/cron.daily/prelink

Установка Preload:
apt-get -y install preload"
Информация взята из этой статьи.

Предлагаю перенести /tmp в оперативную память. В статье по ссылки изложены предпосылки и результаты такого переноса. Делается так:
echo "tmpfs /tmp tmpfs size=8G,rw,nosuid,nodev 0 0" | tee -a /etc/fstab
reboot
UPD: теперь я думаю, что переносить /tmp в оперативку не надо. Можно разок положить туда большой файл и положить сервер. Смысла в этом нет особо, потому что папка в памяти уже есть и она называется /dev/shm - это обычная папка не смотря на то, что лежит в /dev.

Далее я отключаю различные лимиты. При отключении лимитов сервер может "жестко упасть", в случае бага в программах. Например, программа съест всю память. Но, при таких настройках сервер сможет держать наверняка более высокую нагрузку. Вот что я прописываю в файл /etc/security/limits.conf:

# Disable all limits for root
root - core 0
root - nofile 1048576
root - memlock unlimited
root - fsize unlimited
root - data unlimited
root - rss unlimited
root - stack unlimited
root - cpu unlimited
root - nproc unlimited
root - as unlimited
root - locks unlimited
root - sigpending unlimited
root - msgqueue unlimited

# Disable all limits for other users
* - core 0
* - nofile 1048576
* - memlock unlimited
* - fsize unlimited
* - data unlimited
* - rss unlimited
* - stack unlimited
* - cpu unlimited
* - nproc unlimited
* - as unlimited
* - locks unlimited
* - sigpending unlimited
* - msgqueue unlimited

Как видите, у меня параметр core равен нулю, чтобы система не какала core-dump'ами при сбоях какого-нибудь php. Всё остальное фактически без ограничений.

Теперь необходимо оптимизировать ядро через /etc/sysctl.conf. Есть масса альтернативных конфигов этого файла и споры на эту тему. Вот некоторые примеры.

Cтатья про оптимизацию ядра: https://gist.github.com/kgriffs/4027835
И вот это для VDS: https://habrahabr.ru/post/186362/
А ещё вот (проверено Яндекс.Танком): https://www.prolinux.org/post/nastroyki-nagruzhennogo-servera/
Вот здесь лимиты отключают вообще: https://tobert.github.io/post/2014-06-24-linux-defaults.html

Описание параметров sysctl.conf на русском языке есть тут:
http://adminunix.ru/nastrojka-sysctl/
и тут
https://nikitushkin.wordpress.com/2011/02/12/%D0%B...D0%BF%D1%80%D0%B0%D0%B2%D0%BB/

Активнее выгружаем неиспользуемые страницы из кеша.
vm.vfs_cache_pressure = 1000
Иначе кеш сожрёт всю память и этого не будет видно ни одной тулзой! Подробности тут. Чтобы освободить память нужно сделать это:
sync
echo 3 > /proc/sys/vm/drop_caches

Также на свой страх и риск можно добавить это:
"После этого стоит настроить отложенную запись — ядро будет копить данные, ожидающие записи на диск, и записывать их либо при острой необходимости, либо по истечении таймаута. Я ставлю таймаут на 60 секунд, кто-то — на 150.
Для этого открываем /etc/sysctl.conf и добавляем параметры
vm.laptop_mode = 5 // Включение режима
vm.dirty_writeback_centisecs = 6000 время в сСк. Т.е. 100ед = 1 секунда"
Источник: статья на хабре.

Я использовал конфиг по первой ссылке. Его надо прописать целиком в /etc/sysctl.conf. Позже можно протестировать свою систему в других конфигурациях. Можно всё изучить и так будет лучше, но тема большая. В целом мой конфиг /etc/sysctl.conf выглядит так:

#
# Из статьи: https://www.prolinux.org/post/nastroyki-nagruzhennogo-servera/
#
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
net.ipv4.tcp_syncookies = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
vm.swappiness = 0
net.ipv4.tcp_fack = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_mem = 8388608 12582912 16777216
net.ipv4.udp_mem = 8388608 12582912 16777216
net.ipv4.udp_rmem_min = 16384
net.ipv4.udp_wmem_min = 16384
net.core.wmem_max = 8388608
net.core.rmem_max = 8388608
net.ipv4.tcp_rmem = 8192 87380 8388608
net.ipv4.tcp_wmem = 8192 87380 8388608
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_window_scaling = 1
net.core.somaxconn = 300000
net.core.netdev_max_backlog = 8192
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_keepalive_time = 180
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_max_tw_buckets = 1000000
net.ipv4.ip_local_port_range = 1024 65535
net.nf_conntrack_max = 1000000

#
# Отложенная запись — ядро будет копить данные, ожидающие записи на диск, и записывать их либо при острой необходимости, либо по истечении таймаута.
# Я ставлю таймаут на 60 секунд, кто-то — на 150.
#
vm.laptop_mode = 5 # включение режима
vm.dirty_writeback_centisecs = 6000 # время: 100 ед. = 1 секунда

#
# Lines, as recommended by the LXD project
#
fs.inotify.max_queued_events = 1048576
fs.inotify.max_user_instances = 1048576
fs.inotify.max_user_watches = 1048576

#
# Активнее выгружаем неиспользуемые страницы из кеша: https://blog.poiuty.com/dopolnitelnye-nastrojki-sysctl-conf.html
#
vm.vfs_cache_pressure = 10000

#
# Настройка для Redis
#
vm.overcommit_memory = 1

#
# Перезагрузка при обнаружении kernel panic
#
kernel.core_pattern = /var/crash/core.%t.%p
kernel.panic = 20
kernel.unknown_nmi_panic = 1

Примерняем настройки из конфгиа без перезагрузки:
sysctl --system

Включить rc.local в Ubuntu 18.04 можно так:
https://askubuntu.com/questions/886620/how-can-i-execute-command-on-startup-rc-local-alternative-on-ubuntu-16-10
Для нормальной работы Percona и Redis надо добавить эту строчку в rc.local:
echo never > /sys/kernel/mm/transparent_hugepage/enabled

Установим nginx:
apt-get install nginx

Теперь можно настроить nginx. Инфы об этом дофига. Можно воспользоваться этой информацией к примеру. Мой конфиг /etc/nginx/nginx.conf выглядит так.

Установим всё необходимое для php 7:
apt-get install php-fpm php-common php-cli
Тут надо убедиться, что никаких сраных Апачей нам не установится.
Если нужна более старая версия PHP, то придётся использовать неоффициальные пакеты для этого. Способ установки php 5.6 описан тут.

Конфигурировать php-fpm можно так. Но я использовал рекомендации из статьи выше.

Для php7 также необходимо установить кучу расширений:
apt-get install php-geoip php-curl php-gd php-intl php-mysql php-tidy php-opcache php-json php-mcrypt php-bz2 php-readline php-xsl php-memcache php-bcmath php-mbstring php-xml php-zip php-memcached

Если бы это нужно было сделать версии 5.6, то было бы так:
apt-get install php-geoip php5.6-curl php5.6-gd php5.6-intl php5.6-mysql php5.6-tidy php5.6-opcache php5.6-json php5.6-mcrypt php5.6-bz2 php5.6-readline php5.6-xsl php-memcache php5.6-bcmath php5.6-mbstring php5.6-xml php5.6-zip php-memcached

Внимание! PHP в целом является весьма хреновым средством с точки зрения безопасности. Настраивать конфиги php.ini нужно вдумчиво, всё тщательно взвесив. Например, желательно отключить загрузку файлов, если она не используется в вашем проекте. Описание многих лазеек для хакеров и мер предосторожности можно начать читать тут: https://www.cyberciti.biz/tips/php-security-best-practices-tutorial.html Когда я был наивным и не "битым", то думал что эти страхи преувеличены - я сильно ошибался.

Установим geoip:
apt-get install php-geoip geoip-database-contrib

Настраивать тут ничего не нужно. Разве что в php.ini в нужном месте прописать настройку для browscap:
[browscap]
; http://php.net/browscap
browscap = /etc/php/7.0/modules-available/php_browscap.ini

Тут путь должен быть другим - туда где у вас на самом деле лежит php_browscap.ini. Сам этот файл можно взять например тут.

Установим memached:
apt-get install memcached
Настроить его можно в файле /etc/memcached.conf. Посмотрите этот файл и сами всё поймёте. Он элементарный.

Теперь ставим БД. Для всех любителей mysql я настоятельно рекомендую не использовать стандартную реализацию этой СУБД. Вместо неё используем Percona. Будет ровно тоже самое, но с выигрышем по скорости.

UPD: Percona 8.0 ставится так: https://www.percona.com/doc/percona-server/8.0/installation/apt_repo.html
(то что написано дальше про установку Percona не актуально)

Следующие команды установят Percona:

cd /tmp
wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb
dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb
apt-get update
apt-get install percona-server-server-5.7

mysql -u root -e "CREATE FUNCTION fnv_64 RETURNS INTEGER SONAME 'libfnv_udf.so'"
mysql -u root -p -e "CREATE FUNCTION fnv_64 RETURNS INTEGER SONAME 'libfnv_udf.so'"
mysql -u root -p -e "CREATE FUNCTION murmur_hash RETURNS INTEGER SONAME 'libmurmur_udf.so'"

Расшифровка установки Percona тут.

Далее можно настроить её:
При настройке mysql / percona мы должны помнить об этом:
http://rimzy.net/category/mysql-5-7/
http://stackoverflow.com/questions/10905226/mysql-...ormance-tuning-recommendations
http://stackoverflow.com/questions/30901041/can-no...l-max-connections-in-ubuntu-15

Мой файл /etc/mysql/percona-server.conf.d/mysqld.cnf выглядит так:

#
# The Percona Server 5.7 configuration file.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
explicit_defaults_for_timestamp

local-infile = 0

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1

# Recommended in standard MySQL setup
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_ALL_TABLES

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links = 1

# GENERAL #
default-storage-engine = InnoDB

# MyISAM #
key-buffer-size = 96M
#myisam-recover = FORCE,BACKUP

# SAFETY #
max-allowed-packet = 16M
max-connect-errors = 1000000
sysdate-is-now = 1
innodb = FORCE

# CACHES AND LIMITS #
tmp-table-size = 32M
max-heap-table-size = 32M
query-cache-type = 0
query-cache-size = 0
max-connections = 500
thread-cache-size = 50
open-files-limit = 65535
table-definition-cache = 1024
table-open-cache = 2048

# INNODB #
innodb-flush-method = O_DSYNC
innodb-log-files-in-group = 2
innodb-log-file-size = 512M
innodb-flush-log-at-trx-commit = 2
innodb-file-per-table = 1
innodb-buffer-pool-size = 32G

# LOGGING #
log-error = /var/log/mysql/error.log
log-queries-not-using-indexes = 0
slow-query-log = 0
#slow-query-log-file = /var/log/mysql/slow.log

Создал я его с помощью визарда на сайте Percona, где можно подобрать параметры под разные сервера из задачи. Бинлоги в этой конфигурации отключены!

Теперь надо устранить один косяк СУБД. Вот так:

cp /lib/systemd/system/mysql.service /etc/systemd/system/

Add the following lines to the bottom of the file /etc/systemd/system/mysql.service:
LimitNOFILE=infinity
LimitMEMLOCK=infinity

Now reload the Systemd configuration with:
systemctl daemon-reload

Подробности того зачем это надо были в одной из ссылок выше.

С оптимизацией на этом всё. Теперь нужно тестировать всё это хозяйство и мониторить. Например, с помощью Яндекс.Танка.

Метки:  

LINUX: настройка CUPS

Вторник, 14 Февраля 2017 г. 14:31 + в цитатник
Для Ubuntu 16.04:
apt-get install cups printer-driver-gutenprint

После редактирования конфигов в /etc/cups нужно обязательно выполнить команду:
cups-genppdupdate
Она обновит *.ppd файлы в каталоге /etc/cups/ppd. Без этого принтеры могут не работать из-за того, что драйверы старой версии.

Метки:  

LINUX: настройка MC и BASH

Воскресенье, 05 Февраля 2017 г. 17:07 + в цитатник
В ~/.bashrc я прописываю в нужных местах такие строчки:

# don't put duplicate lines in the history. See bash(1) for more options
# ... or force ignoredups and ignorespace
export HISTCONTROL=ignoredups:ignorespace

# append to the history file, don't overwrite it
shopt -s histappend

# unlimited history
HISTFILESIZE=-1
HISTSIZE=-1
export PROMPT_COMMAND='history -a; history -n'

................

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

................

# beautifull colors
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u\[\033[01;33m\]@\[\033[01;36m\]\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\]'
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fiif [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u\[\033[01;33m\]@\[\033[01;36m\]\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\]'
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi


Или вот такой красивый вариант для рута:
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u\[\033[01;33m\]@\[\033[01;36m\]\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\]'
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt


И для обычного пользователя:
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;34m\]\u\[\033[00m\]\[\033[01;33m\]@\[\033[00m\]\[\033[01;32m\]\h \[\033[00m\]\[\033[01;34m\]\w \[\033[00m\]\[\033[01;32m\]\$ \[\033[00m\]'
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt



Это и всё остальное в данном посте делалось для Ubutnu 16.04. Далее я привязываю историю mc к истории bash:

ln -s ~/.profile ~/.local/share/mc/bashrc

Подробности это приёма тут. Это будет работать только для команд, выполняемых в режиме Ctrl+O.

В Ubuntu при создании нового пользователя надо указывать оболочку bash вот таким образом:
useradd ivan -s /bin/bash -m
или сделать тоже самое через usermod для существующего пользователя:
usermod ivan -s /bin/bash

Если этого не сделать то в терминале по умолчанию будет sh, а не bash и работать станет неудобно.

В конце файла .bashrc я обычно размещаю такую команду:
umask 027
Она нужна для того чтобы файлы по умолчанию создавались с правами 640, а директории - с правами 750. То есть убираю разрешения для "других" пользователей.

Метки:  

LINUX: пометка bad-блоков на разделе

Пятница, 03 Февраля 2017 г. 20:33 + в цитатник
fsck -t -y -f -c /dev/sda1

The keys and command options fsck:
y - always answer yes to all questions (there is an alternative: the -p key starts the test in a fully automatic mode);
f - forces a file system check (even if the file system is marked as fully functional)
c - looking for broken blocks (bad blocks), and then marks them accordingly
Remember: if bad sectors began to appear, it's time to change the hard drive.

Источник: https://mintguide.org/system/283-how-to-check-and-...bad-sectors-in-linux-mint.html

Разумеется раздел должен быть отмонтирован или находиться в режиме только для чтения.

Метки:  

LINUX: Настройка LXD

Четверг, 26 Января 2017 г. 23:45 + в цитатник
LXD - это более быстрый аналог OpenVZ. Работал над ней вот этот парниша:

Стефан Грабер (Stéphane Graber). И мне кажется, что он - молодец!

Базовая статья на хабре с которой я начинал: https://habrahabr.ru/company/selectel/blog/308208/
Базовые консольные команды и откуда лучше качать образы: https://linuxcontainers.org/lxd/getting-started-cli/
Сравнение файловых систем: https://github.com/lxc/lxd/blob/master/doc/storage-backends.md
Работа со снапшотапи: https://s3hh.wordpress.com/2016/05/08/using-lxd-snapshots/
Серия статей на русском (перевод): http://vasilisc.com/lxd-2-0-series
Оффициальная статья на сайте Убунту: https://help.ubuntu.com/lts/serverguide/lxd.html
Официальная документация по настройке: https://github.com/lxc/lxd/blob/master/doc/configuration.md
Статья по настройке сети: http://vasilisc.com/network-management-lxd-2-3
Статья по настройке сетевого моста: https://bayton.org/2016/05/lxd-zfs-and-bridged-networking-on-ubuntu-16-04-lts/
Статья по автостарт контейнеров: https://bitsandslices.wordpress.com/2015/08/26/autostarting-lxd-containers/
Способы проброса портов в контейнер: http://askubuntu.com/questions/749063/reach-lxd-container-from-local-network
Более интересные способы проброса портов: https://github.com/lxc/lxd/issues/1363
Утилита lxd-port-forward: https://dev.justinjudd.org/justin/lxd-port-forward
Отличный способ перенаправления портов через uPnP: http://bartsimons.me/lxc-lxd-port-forwarding-containers-using-upnp/

Полагаю, этого материала достаточно чтобы начать использовать LXD. А вот мои личные заметки по поводу LXD в Ubuntu 16.04.

0. Устанавливать lxd на свежий! Следующие шаги работают только со свежей версией lxd.
apt-get install software-properties-common
add-apt-repository ppa:ubuntu-lxc/lxd-stable
apt-get update
apt-get dist-upgrade
apt-get install lxd


1. Сам сервис lxd должен запускать через system.d, а не через init.d. Тогда при выключении хоста виртуальные машины будут также корректно выключаться - внутри контейнеров будет вызываться нечто вроде shutdown -h now с выполнением всех положенных скриптов. Чтобы так работало необходимо сделать следующее:

update-rc.d -f lxd remove
rm -f /etc/init.d/lxd
systemctl enable lxd.service
systemctl enable lxd-containers.service


2. Для настройки перенаправления портов используем эту статью. Делаем всё как в ней за исключением правки файла /usr/lib/lxd/lxd-bridge.start - его уже не существует в новой версии LXD. Вместо этого, переходим к моему пункту 3.

3. Контейнеры при этом НЕ должны запускаться автоматически. Это необходимо для настройки перенаправления портов через uPnP. Посему отключаем автозапуск машин:

lxc config set название_машины boot.autostart 0

Также мы должны сделать это:
systemctl disable linux-igd.service
update-rc.d -f linux-igd remove


Теперь автозапуск машин можно настроить в /etc/rc.local:

sleep 5
systemctl start linux-igd.service
lxc start название_машины
sleep 30
lxc exec cpa -- upnpc -a 10.10.128.2 8888 8888 tcp


Кроме того, мы тут запускаем сервис для uPnP (linux-igd), который будем использовать для проброса портов. А через 30 секунд после запуска машины выполняем ВНУТРИ её контейнера команду для проброса порта 8888 (первое число - порт на хосте, второе число - порт внутри контейнера). 10.10.128.2 - адрес сетевого интерфейса контейнера во внутренней сети LXD.

4. If you don’t want hard memory limit enforcement:
lxc config set my-container limits.memory.enforce soft

5. Increasing file and inode limits
Since it’s entirely possible we may in the future wish to run multiple LXD containers, it’s a good idea to already increase the number of open files and inode limits, this will prevent the dreaded “too many open files” errors which commonly occur with container solutions.

For the inode limits, open the /etc/sysctl.conf and add the following lines, as recommended by the LXD project:

fs.inotify.max_queued_events = 1048576
fs.inotify.max_user_instances = 1048576
fs.inotify.max_user_watches = 1048576


6. Статический IP можно назначить контейнеру примерно так:
lxc network device add template-yakkety eth0 nic nictype=bridged parent=lxdbr0 name=eth0
cat | lxc config set template-yakkety raw.lxc - << EOF
lxc.network.0.ipv4 = 144.217.33.2/24
lxc.network.0.ipv4.gateway = 144.217.33.1
EOF

template-yakkety - это имя контейнера.
А вот другой путь и мне кажется, что он проще!
Но всё это ненадёжно и глюкаво, поэтому сам Стефан рекомендует вот что:
"The recommendation is that you configure the distribution in the container to have a static IP.
On Ubuntu/Debian, that's done through /etc/network/interfaces
LXC does support setting those for you from outside the container, but most distributions will then fail to boot or will just unset that preset data."

7. Собственные контейнеры нужно создавать привилегированными:
lxc config set имя_контейнера security.privileged true
Иначе будет неизменяемое ограничение по количеству открытых файлов в контейнере и ещё какая-нибудь хрень.

Метки:  

Поиск сообщений в eugene20237
Страницы: [7] 6 5 4 3 2 1 Календарь