Полезная Linux утилитка strace может помочь в отладке php-скриптов:
Определить какой конфиг использует программа:
strace php 2>&1 | grep php.ini strace -e open php 2>&1 | grep php.ini
Почему программа не открывает файл:
strace -e open,access 2>&1 | grep your-filename
Узнать что делает процесс в данный момент, например при высоком cpu usage:
strace -p 15427 strace -p 15427 -o dump.txt
Какой именно системный вызов процесса занимает ресурсы CPU:
strace -c -p 11084
Почему невозможно подключиться к серверу:
strace -e poll,select,connect,recvfrom,sendto nc www.news.com 80
Информацию по дескрипторам можно посмотреть тут:
ls -la /proc/<pid>/fd/
Информацию по сетевым файлам можно посмотреть так:
lsof -i -a -p $<pid>
Создание репозитория:
# Создаём пустой репозиторий cd /path/to/git_repos/ mkdir project && cd project git --bare init # Создаём clon-репозиторий в котором будет храниться # рабочая копия проекта cd /path/to/project/ git init # Добавляем файлы проекта в ветку и делаем первый коммит git add . git commit -m'Создание репозитория' #Привязываем локальную ветку к удалённому репозиторию git remote add origin ssh://user@192.168.0.1:11111/path/repo.git git push -u origin master
Собрать информацию из папки со спамом:
sa-learn --showdots --spam /home/vmail/<domain>/<user>/.Junk/*
То же самое для не спама:
sa-learn --showdots --ham /home/vmail/<domain>/<user>/cur/*
Глобальные настройки git в файле:
nano ~/.gitconfig
Алиасы:
[alias]
st = status -s
ci = commit -S -m
co = checkout
br = branch
rom = reset --hard origin/master
rh = reset --hard HEAD
df = diff -w
dc = diff --cached -w
g = grep -np
lg = log -p
standup = log --since='5 day ago' --oneline --author='User Name'
hi = log --pretty=format:"%C(yellow)%h %C(cyan)%ad%C(green bold)%d %C(reset)%s %C(green dim)[%cn]%C(reset)" --date=short
his = log --pretty=format:"%C(yellow)%h %C(cyan)%ad %C(yellow bold)%d%C(reset) %s %C(green dim)[%cn]%C(reset)" --date=short --stat
tree = log --graph --pretty=oneline --decorate
pom = pull --rebase origin master
show = show -w
t = tag -s -m
td = tag -d
amend = commit --amend -C HEAD
lol = log --graph --decorate --pretty=oneline --abbrev-commit
lola = log --graph --decorate --pretty=oneline --abbrev-commit --all
ign = ls-files -o -i --exclude-standard
Цвета:
[color]
branch = auto
diff = auto
status = auto
interactive = auto
ui = true
pager = true
[color "branch"]
current = green reverse
local = yellow
remote = cyan
[color "diff"]
meta = yellow bold
frag = magenta bold
old = red bold
new = green bold
[color "status"]
added = yellow
changed = green
untracked = cyan
[color "grep"]
function = yellow bold
match = red bold
linenumber = cyan
Полезные настройки:
[user]
name = User Name
email = email@email.com
signingkey = 32FERAD2
[pull]
default = current
[push]
default = current
[core]
quotepath = true
pager = less -FXRS -x4Позволяет в интерактивном режиме редактировать/удалять предыдущие коммиты:
git rebase -i HEAD~4
Просмотр содержания коммита:
git log -p <commit> git show <commit>
Различные виды фильтра вывода лога:
git log --author='author' --before="3 weeks ago" --after="2012-02-30"
Записывает все текущие изменения в стек изменений и производит сборс всех изменений до HEAD текущей ветки:
git stash
Применить последнее изменение стека к текущей ветке и удалить его из стека:
git stash pop
Вывод списка изменений в стеке:
git stash list
Сделать diff patch из 3-х последних коммитов. Создастся файл 0001-.patch:
git format-patch -3
Залить коммиты из diff патча в локальную ветку:
git am 0001-.patch
Просмотр истории изменения файла:
git log — <полное имя файла>
Поиск коммитов содержащих слово в описании:
git log --grep=<слово>
Поиск коммитов содержащих слово:
git log -S<слово>
Удаление удалённой ветки:
git push remote :delete_me
Смена текущей ветки на серверном репозитории:
git symbolic-ref HEAD refs/heads/new