Skip to content

Instantly share code, notes, and snippets.

@IFilonov
Last active April 4, 2023 07:48
Show Gist options
  • Select an option

  • Save IFilonov/876b8e4e122af42c9b19f227ba0737dc to your computer and use it in GitHub Desktop.

Select an option

Save IFilonov/876b8e4e122af42c9b19f227ba0737dc to your computer and use it in GitHub Desktop.
Install commands Ubuntu
Ubuntu
sudo apt-get install language-pack-ru --установка русской локали
sudo apt-get install firefox-locale-ru -- русский для firefox
sudo apt install numix-gtk-theme numix-icon-theme --установка темы Numix
sudo apt install unity-tweak-tool --для управления темой и расширенными настройками
-- Установка расширения VirtualBox GuestAddtion
sudo apt-get install virtualbox-guest-additions-iso
--environment variables --
env, printenv -- see list only the environment variables
printenv HOME -- check whether this variable is an environment variable or not
echo $BASH_VERSION -- see one any variable env or shell
bash -c 'echo $MY_VAR' -- check whether this variable is an environment variable or not by new shell
set -- see list all variables, including environment, shell and variables, and shell functions
-- this way of creation vars are for variable only in the current session:
MY_VAR='Linuxize' -- set shell vatiable
export MY_VAR -- set environment variable (before create shell variable)
export MY_NEW_VAR="My New Var" -- set environment variables in a single line
-- create persistent Environment Variables
edit /etc/environment, add: VAR_TEST="Test Var"
edit /etc/profile, add: export MY_NEW_VAR="My New Var"
edit ~/.bashrc (per user), add: export MY_NEW_VAR="My New Var"
-- применение изменений переменных окружения
source ~/.bashrc или source /etc/profile для применения изменений в сессии.
Требуется перезагрузка для применения изменений во всех сессиях по умолчанию
-- Применить переменные окружения из файла .env
if [ -f .env ]\nthen\n export $(cat .env | sed 's/#.*//g' | xargs)\nfi
-- Работа с файлами
--Переименовать файлы *.yml.example в *.copy
for f in *.yml.example; do mv -- "$f" "${f%.yml.example}.copy"; done
--Копировать файлы *.yml.example в *.yml
for f in *.yml.example; do cp -- "$f" "${f%.yml.example}.yml"; done
--Копировать файлы *.yml.example в *.yml.example.copy
find . -type f -name '*.yml.example' -exec cp {} {}.copy ';'
--Уменьшение лога журнала
nano /etc/systemd/journald.conf
SystemMaxUse=100M
service systemd-journald restart
Curl
sudo apt install curl
# посылка пост запроса:
curl -X POST -H "Content-Type: application/json" --data '{"type":1, "value": 2.23}' http://10.109.161:217:3050/api/v1/cm_shipments/create
или
curl -X POST http://localhost:9292/orders.json -H "Content-Type: application/json" -d '{"signal": "new", "type": "videocomfort"}'
# http запрос из файла с параметром (в файл curl.sh заносим):
curl --request POST \
--insecure \
--url https://ali.aliway.ru/api/v1/cainiao/get-logistics-orders \
--header 'authorization: Token 3cad50dd411713296687238630c12f7b11f5ec02' \
--header 'content-type: application/json' \
--data "{
\"order_id\" : $1
}" | python3 -m json.tool
# затем вызываем
./curl.sh 5016126748872939
Git
sudo apt install git
git rm --cached file.txt --Удалить файл ранее добавленный git add, но оставить на диске
git restore --staged file.txt -- Восстановить в текущем коммите файл, изменения сохранить на диске
--Первый способ удаления удаленного коммита
git reset --hard HEAD\^ --Удалить последний локальный commit (в ZSH - HEAD\^)
git push origin -f --Удалить последний коммит в удаленном репозитории после удаления локального коммита
--После reset hard изменения можно восстановить локально:
git reflog show --смотрим историю коммитов
git reset HEAD@{2} --восстанавливаем историю до нужного коммита
--Второй способ более гуманный
git reset cc4b63b --пред. коммит из git log
git stash --необязательно
git push -f origin release/9.6.0 --оказалось необязательно
git stash pop --тоже. Дополнительно удалить удаленный PR
--Переименовать последний локальный commit
git commit --amend -m "MVX-15771 Convert WB DCS stickers from SVG to PNG"
--Добавить новые изменения в последний коммит
git commit --amend --no-edit
git push -f origin TCMP-2595
--сохранить текущие изменения в черновике:
git stash
--после завершения работы с другой веткой, переключаемся обратно и восстанавливаем изменения
git apply
--удалить изменения в черновике
git pop
--список черновиков
git stash list
--изменения в каждом черновике
git stash show -p 3
-- удалить изменения в черновике
git stash drop 1
--Добавить коммит из другой ветки
git checkout BRANCH-123
git log --смотрим хэш нужного коммита
git checkout master
git cherry-pick <сохраненный хэш>
git push
--MERGE из мастера в другую ветку
git checkout master
git pull
git checkout BRANCH-123
git merge master
git push --если нет конфликтов
--Копировать измененные файлы GIT в архив или отдельную папку:
zip modified-files.zip $(git ls-files --modified)
cp $(git ls-files --modified) ~/tmp
--Восстановить измененные файлы
git restore $(git ls-files --modified | grep rake)
-- Применить измененным файлам GIT rubocop
rubocop $(git ls-files --modified | grep .rb) -a
1) git checkout -b 'Ветка' 'Ветка от какой отпочковываешься'
2) хуки в папке .git/hooks с примерами
3) в папке objects: git show b3 (папка) и + имя объекта = покажет имя объекта.
4) -m в git commit игнорирует запуск редактора, имя коммита пишется прямо в консоли
5) -a в git commit делает команду git add всех файлов.
6) git commit --amend - откатывает коммит через резет и делает новый коммит. --no-edit - не меняет название коммита. История сохраняется.
7) git reset - перемещает ветку, на которую указывает HEAD. Сбрасывает изменения из staged area (которую добавляется git add) обратно в директорию.
8) git reset --hard - удаляет последний коммит из индекса.
9) git reset --soft - удаляет последний коммит из индекса, но сохраняет изменения в staged area.
10) git show 'хэш коммита' - показывает изменения коммита
11) git rebase master - подгягивает последние изменения master в текущий бранч
12) плюсы git merge feature - простота, сохраняет полную историю и хронолгич.порядок, поддерживает контекст ветки. Минус - история загрязняется коммитами слияния, отладка git bisect сложнее.
13) плюсы rebase - чистая история коммитов, проще манипуляции с коммитами. Минусы - больше работы, опасно исползовать в общих ветках из-за force.
14) слияние всех локальных новых коммитов 20 шт за день - гит резет софт и все изменения останутся в staged директори. А потом уже пуш с форсом или без в один коммит.
15) при конфликте оставляем HEAD. Копируем hash своего нижнего коммита, который в нижней строке конфликата. Идем в директорию и смотрим разницу git show 'хэш коммита'. Решаем и оставляем в конфликте нужное.
16) git rebase -i HEAD~2 склеить два последних коммита в один с использование опиции squash. pick squash (squash удаляет все коммиты сковошом и сливает в коммит который помечен пиком). Вместо git reset --soft HEAD~1 и нового коммита.
17) git rebase -i HEAD~2 с использование опции edit. Внести изменения в старый (препоследний) коммит. Вместо первого пик пишем edit. git add ., git rebasr --continue.
18) git revert HEAD~2. Откатить два последних коммита. Вместо git reset и пуша с форсом.
19) git reflog или git log -g. Выведет лог действий, в котором нужно будет найти удаленные изменения и вернуть их в нужно место.
20) git reset --hard master@{"15 minutes ago"} откатит изменения ветки мастер на 15 мин. назад.
21) git fsck --full (проверяет внутренню базу данных на целостность. Будут показаны все объекты, недостижимые из других объектов).
--bisect. Для поиска проблемного коммита (когда их много), который внес проблему в код.
22) git bisect start HEAD 353f3F - запускает умный бинарный поиск проблемного коммита между указанными точками. Делает примерно тоже самое как гит чекаут для поиска проблемы в интерфейсе, но делает это по оптимизированноу алгоритму
23) git bisect good - значит коммит нормальный, в которым мы находимся.
24) git bisect bad - продолжает поиск дальше.
25) git bisect reset - остановим работу bisect.
--stash
сохраняет изменения в отдельном хранилище
26) git stash apply. Вернутся в код, но не удалены из хранилища
27) git stash drop - удаляет последние изменения и не возвращает в код.
28) git stash clear - чистит stash
29) git diff показывает разницу между коммитами, либо по названию веток, либо по хэшам.
30) git blame 'названия файла' - кто что сделал по файлу.
воркфлоу (советы)
- одна задача - один коммит
- записывайте в тексте коммита ссылку на задачу
- оставляет в тексте коммита подсказки коллегам о крит. изменениях (запуск рэйка, изменения env и т.д.)
- храните историю плоской
- не оставляйте мусор
OhMyZsh
sudo apt install zsh
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
RabbitMq
--clearing
rabbitmqctl stop_app
rabbitmqctl reset # Be sure you really want to do this!
rabbitmqctl start_app
-- list queues
rabbitmqctl list_queues
--enable managment
rabbitmq-plugins enable rabbitmq_management
--show queue content
rabbitmqadmin get queue='o7.orchestrator.signals'
Дабл командер
sudo apt install doublecmd-qt
Posgresql
sudo apt-get install postgresql
sudo apt-get install libpq-dev
sudo su - postgres /*переключили на юзера по умолчанию
postgres=# \password /*смена пароля postgres из psql
sudo -u postgres createuser filonov /* создали юзера filonov
ALTER USER CREATEDB to filonov
ALTER USER SUPERUSER to filonov
\conninfo /*информация о сессии в psql
CREATE DATABASE test_database;
CREATE USER test_user WITH password 'qwerty';
GRANT ALL ON DATABASE test_database TO test_user;
pg_config --version
psql --version
select version();
\d /* список таблиц, объектов
\d table_name /* описание таблицы
\dn /* список существующих схем
\l /* список баз данных
\c dbname /* переключиться на базу данных
CREATE SCHEMA bookings; /* создание схемы
SET search_path TO bookings; /* переключение на схему
/etc/init.d/postgresql restart /*перезагрузка БД из терминала под юзером postgres
create table subs (id integer, name varchar(100));
ALTER TABLE subs ADD CONSTRAINT subs_id_pk PRIMARY KEY (id);
ALTER TABLE subs_histories ADD CONSTRAINT subs_fk FOREIGN KEY (subs_id) REFERENCES subs(id);
ON DELETE CASCADE;
create table subs_histories (subs_id integer, sbst_id integer);
--удаление postgress
sudo apt-get --purge remove pgadmin3
sudo apt-get --purge remove postgresql\*
--как вариант, не пробовал
sudo apt-get remove --purge postgresql-9.1
sudo rm -r /etc/postgresql/
sudo rm -r /etc/postgresql-common/
sudo rm -r /var/lib/postgresql/
sudo userdel -r postgres
sudo groupdel postgres
--остановка postgresql на локальной машине
service postgresql stop
service postgresql start
--зайти в постгрес, установленный в докере с локальлной машины
psql -h localhost -p 5432 -U postgres
psql -U neptun -d postgres -h 127.0.0.1 -W --другим юзером
Docker
sudo apt update && sudo apt upgrade
-- команды установки с сайта докера
newgrp docker
sudo usermod -aG docker "${USER}" //или sudo usermod -aG docker $USER
sudo chmod 666 /var/run/docker.sock // если ошибка про docker.sock:
service docker restart
--запуск докеров в статусе exited
docker start $(docker ps -a -q --filter "status=exited")
--клонирование докеров из проекта (/docker-compose.yml)
sudo docker-compose up -d
Отдельный инстанс убунту в докере
docker pull ubuntu:latest
docker run -itd ubuntu
docker ps -a /* список контейнеров
docker images -a /* все образы включая ID образа
docker rmi $(docker images -a -q) -f /* удалить все образы
docker rmi Image1 Image2 /* удалить образы по ID
docker image prune /* удалить все промежуточные имэйджы
docker system prune -a -f /* удалить все кроме запущенных контейнеров и их имэйджей
// показатель детально занимаемое место
docker system df -v
docker stop $(docker ps -a -q) /* остановить контейнеры
docker container rm $(docker ps -a -l -q) /* удалить последний контейнер
docker rm $(docker ps -a -q) /* удалить все контейнеры
docker exec -it xenodochial_hugle /bin/bash
внутри образа:
sudo apt-get update
sudo apt-get dist-upgrade
commit: docker commit tender_elion ubuntu-18-updated:v18_04
apt-get install -y nodejs /* установка nodejs
apt-get install ruby-dev /* установка ruby
gem install bundler
gem install rails -v 5.2.3
--login in registry:
docker login -u filonov -p YOURTOKENHERE git.ottoruss.ru:5005/docker/general
--копировать файлы из докера
sudo docker cp 9e03def7f230:/billing/stackprof.dump ~/stackprof.dump
postgresql:
docker pull postgres
--предварительно стоим в папке posgres проекта нептун
docker build -t postgres:1.0 .
--создаем контейнер
docker container run --name postgres -p 5432:5432/tcp -d -e POSTGRES_PASSWORD=password -it postgres:1.0
--стартуем
docker start postgres
--коннектимся по необходимости
docker exec -it postgres bash
-- вариант запуска контейнера 11092022
docker run --name postgresql -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password -p 5432:5432 -v /data:/var/lib/postgresql/data -d postgres
-- Копируем файл (ключ) id_rsa в запущенный докер f3f35d2ee77c в папку /orchestrator
sudo docker cp ~/.ssh/id_rsa f3f35d2ee77c:/orchestrator
SSH server
sudo apt-get install openssh-server
sudo service ssh restart
Rvm (https://github.com/rvm/ubuntu_rvm)
sudo apt-get install software-properties-common
sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt-get update
sudo apt-get install rvm
sudo usermod -G rvm username
At terminal window, click Edit > Profile Preferences, click on Title and Command tab and check Run command as login shell.
rvm list known /* Посмотреть возможные версии
rvm install ruby
rvm use --default 3.0.2
man rvm
--if not working with zsh:
echo "source /usr/local/rvm/scripts/rvm" >> ~/.zshrc
-- как то помогли команды обновления rvm после ругания на gpg2:
command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
command curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
curl -L get.rvm.io | bash -s stable
--обновление существующего RVM:
rvm get stable
--перед этим полезно удалить все:
sudo rvm cleanup all
------------------
RubyMine
sudo snap install rubymine --classic
NodeJs
sudo apt-get install nodejs
Redis server
sudo apt install redis-server
sudo systemctl start redis-server /* запустить
sudo systemctl enable redis-server /* добавить в автозагрузку
/* поставить maxmemory = 512mb в sudo atom /etc/redis/redis.conf
/* maxmemory_policy allkeys_lfu
redis-cli /* управляющий терминал. командыЖ
ping
set test value
keys *
flushall
-- запустить redis из докера:
docker pull redis
docker run --name my_redis -d redis
-- запустить самый мал. образ в докере:
docker pull redis:4-alpine
docker container run --name redis -p 6379:6379/tcp -itd redis:4-alpine
Создание SSH ключа для GitLab
ssh-keygen -t ed25519 -C "filonovia@gmail.com"
xclip -sel clip < ~/ifilonov_ssh_key.pub /* копируем в буфер
Graylog
--Тестовая команды из командой строки:
echo -n '{ "version": "1.1", "host": "example.org", "short_message": "A short message", "level": 5, "_some_info": "foo" }' | nc -w0 -u ogr-log.ottoruss.ru 12201
-- С помощью curl
curl -X POST -H 'Content-Type: application/json' -d '{ "version": "1.1", "host": "example.org", "short_message": "A short message", "level": 5, "_some_info": "foo" }' 'http://graylog.example.com:12201/gelf'
-- По TCP
echo -n -e '{ "version": "1.1", "host": "example.org", "short_message": "A short message", "level": 5, "_some_info": "foo" }'"\0" | nc -w0 graylog.example.com 12202
UDP
--проверка коннекта по UDP:
nc -z -v -u ogr-log.ottoruss.ru 12201
Kubernetis
kubectl cluster-info --информация о кластере
kubectl get configmaps --namespace=movex --получить информацию о сущ. конфигах
kubectl get configmap global --namespace movex -o yaml > global_cf.yaml --скопировать сущ. конфиг в файл
kubectl apply -f cfg.yml --namespace movex --создать свой конфиг
kubectl apply -f k8s.yml --применить деплой
kubectl get pods --namespace=movex | grep external --посмотреть статус запущенного деплоя
--посмотреть логи запущенного деплоя:
kubectl logs -f external-stickers-98476fc59-2c92r external-stickers --namespace=movex
--зайти в баш на нужный под деплоя:
kubectl exec -it external-stickers-7bff4cc865-kvnxx external-stickers -- /bin/bash --namespace=movex
--перезапустить деплой после смены конфигов
kubectl rollout restart -f k8s.yml
-- Удалить деплоймент. Этаже команда останавливает под
kubectl delete deployment imarket-auth --namespace=movex
-- Удалить под. Но, создается новый
kubectl delete pod imarket-auth-9d9b69fb5-7pb6b
-- сменить нэймспейс
kubectl config set-context --current --namespace=blade1
-- Node and npm (from https://phoenixnap.com/kb/update-node-js-version)
sudo apt update
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
source ~/.bashrc
nvm --version
nvm ls
nvm ls-remote
nvm install [version.number]
MYSQL
--disable/enable local server
sudo systemctl disable mysql
sudo systemctl enable mysql
--Войти в локальную базу
sudo mysql -u root
--Создать юзера
CREATE USER 'portal'@'localhost' IDENTIFIED BY 'portal';
--Сменить пароль
ALTER USER user IDENTIFIED BY 'auth_string';
--Выдать привелегии (все)
GRANT ALL PRIVILEGES ON *.* TO portal@localhost;
--Cписок юзеров
SELECT user,host FROM mysql.user;
--Создать базу
CREATE DATABASE cloud_cas_production;
--Показать список валидаций пароля
SHOW VARIABLES LIKE 'validate_password%';
--Изменение валидации пароля
SET GLOBAL validate_password.length = 6;
SIEGE
siege -c50 -t60S --content-type "application/json" 'http://domain.com/path/to/json.php POST {"ids": ["1","2","3"]}'
-- Кол-во строк в файлах rb
find . -name '*.rb' | xargs wc -l
@IFilonov

Copy link
Copy Markdown
Author

Обновление библиотек до установке руби в докер:
apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev nodejs yarn

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment