RU EN

Использование strace для отладки скриптов

 

Полезная 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>
Комментариев: 0
12.05.2012 13:04


Создание проекта

 

Создание репозитория:

# Создаём пустой репозиторий
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

 

Комментариев: 0
06.05.2012 15:13


Обучение Spamassassin

 

Собрать информацию из папки со спамом:

sa-learn --showdots --spam /home/vmail/<domain>/<user>/.Junk/*

То же самое для не спама:

sa-learn --showdots --ham /home/vmail/<domain>/<user>/cur/*

 

Комментариев: 0
24.04.2012 00:52


Конфиг Git

 

Глобальные настройки 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
Комментариев: 0
23.04.2012 17:00


Полезные команды

 

Позволяет в интерактивном режиме редактировать/удалять предыдущие коммиты:

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
Комментариев: 0
19.04.2012 11:41