ocehb: (Default)
Возникла задача получения pid последнего форкнутого процесса.
Проблема: если форкается труба (cmd1 | cmd2 | cmd3), то $! возвращает pid последнего процесса в трубе, а хотелось бы получить pid первого (в общем случае любого) для последующего отстрела, если он зависнет (e.g. ssh host cat big-file | sha1sum).

Решения )
ocehb: (Default)

function __switch_sudo () {
    local sudo="sudo "
    if [[ $LBUFFER == $sudo* ]]; then
        LBUFFER="$LBUFFER[$[$#sudo+1],-1]"
    else
        LBUFFER="$sudo$LBUFFER"
    fi
}
zle -N switch-sudo __switch_sudo
bindkey "\es" switch-sudo

привязывает функцию __switch_sudo к клавиатурному шорткату <ESC-s>. Результат:

# ls -l /lost+found<ESC-s> →
# sudo ls -l /lost+found<ESC-s> →
# ls -l /lost+found

как это работает: )
ocehb: (Default)

sub ipv6squeeze ($) { $_[0] =~ s#(^|:)0+#$1#gr =~ s#:::+#::#gr }

пример )
ocehb: (Default)

# print "<6>TEST" | sudo tee /dev/kmsg && dmesg | grep TEST
<6>TEST
[704265.528211] TEST
ocehb: (Default)

Зарплаты Linux remote
Самые востребованные – кандидаты с зарплатами около $None.

ocehb: (Default)

# uptime
 3:42PM  up 937 days,  3:29, 0 users, load averages: 0.00, 0.00, 0.00
# dick
:-) )
ocehb: (Default)
вот тут.
С однострочником не получилось (не влезла юстификация строки), результат: )
ocehb: (Default)
В zsh можно вычислять параметры с помощью флага e:

# a="\$RANDOM"; print -l $a ${(e)a} ${(e)a}
$RANDOM
497
31298
#

Более сложный пример )
ocehb: (Default)
После апгрейда перла с версии на версию возникает проблема с xs модулями,
не входящими в поставку из-за изменения abi, и они требуют перекомпиляции.
Например, при апдейте Fedora19 -> Fedora20 перл поменялся с 5.16.3 на 5.18.1.

dirty hack )
ocehb: (Default)
Придумал subj: как стандартными средствами в gnu уних/линух окружении
запустить на параллельное выполнение задачи, чтобы la не превышал какое-либо
значение. Например: есть каталог с тучей больших файлов, всех их надо
зипнуть или гзипнуть, задания можно запускать параллельно,
общий la не должен превышать 2.5.

пс. наверно пятничная задачка :)
ocehb: (Default)

# for i in {1..64}; do date —date=@$[ 1 << $i ] || break; done
Thu Jan  1 02:00:02 EET 1970
Thu Jan  1 02:00:04 EET 1970
Thu Jan  1 02:00:08 EET 1970
Thu Jan  1 02:00:16 EET 1970
Thu Jan  1 02:00:32 EET 1970
Thu Jan  1 02:01:04 EET 1970
Thu Jan  1 02:02:08 EET 1970
Thu Jan  1 02:04:16 EET 1970
Thu Jan  1 02:08:32 EET 1970
Thu Jan  1 02:17:04 EET 1970
Thu Jan  1 02:34:08 EET 1970
Thu Jan  1 03:08:16 EET 1970
Thu Jan  1 04:16:32 EET 1970
Thu Jan  1 06:33:04 EET 1970
Thu Jan  1 11:06:08 EET 1970
Thu Jan  1 20:12:16 EET 1970
Fri Jan  2 14:24:32 EET 1970
Sun Jan  4 02:49:04 EET 1970
Wed Jan  7 03:38:08 EET 1970
Tue Jan 13 05:16:16 EET 1970
Sun Jan 25 08:32:32 EET 1970
Wed Feb 18 15:05:04 EET 1970
Wed Apr  8 04:10:08 EET 1970
Tue Jul 14 06:20:16 EET 1970
Sun Jan 24 10:40:32 EET 1971
Wed Feb 16 19:21:04 EET 1972
Wed Apr  3 12:42:08 EET 1974
Tue Jul  4 23:24:16 EET 1978
Mon Jan  5 20:48:32 EET 1987
Sat Jan 10 15:37:04 EET 2004
Tue Jan 19 05:14:08 EET 2038
Sun Feb  7 08:28:16 EET 2106
Wed Mar 16 14:56:32 EET 2242
Wed May 30 04:53:04 EEST 2514
Tue Oct 26 06:46:08 EEST 3058
Sun Aug 20 10:32:16 EEST 4147
Wed Apr  8 18:04:32 EEST 6325
Wed Jul 14 09:09:04 EEST 10680
Tue Jan 25 14:18:08 EET 19391
Mon Feb 20 02:36:16 EET 36812
Fri Apr 10 04:12:32 EEST 71654
Sat Jul 19 05:25:04 EEST 141338
Mon Feb  4 06:50:08 EET 280707
Fri Mar  8 11:40:16 EET 559444
Sat May 14 22:20:32 EEST 1116918
Tue Sep 25 17:41:04 EEST 2231866
Mon Jun 20 08:22:08 EEST 4461763
Fri Dec  7 12:44:16 EET 8921556
Sat Nov 13 23:28:32 EET 17841143
Tue Sep 25 20:57:04 EET 35680317
Mon Jun 19 15:54:08 EET 71358665
Sat Dec  6 05:48:16 EET 142715360
Mon Nov 12 09:36:32 EET 285428751
Fri Sep 22 17:13:04 EET 570855533
Sun Jun 13 08:26:08 EET 1141709097
date: time 72057594037927936 is out of range


Как встретишь третье тысячелетие так его и проживешь
ocehb: (Default)
Фунцкция main::dumpValue(), первый параметр -- переменная, второй -- глубина показа (для вложенных переменных).
Пример использования )
ocehb: (Default)
# perl -le 'for(1..shift){$r[int(rand 3)==int(rand 3)]++}printf"%.03f\n",$r[0]/$r[1]' \
  10000000
2.001
ocehb: (Default)

Есть такая организация, фонд АдВита. Это люди, организующие пересадку костного мозга онкологическим больным. Они работают уже давно, серьезно и эффективно.

Сейчас они участвуют в фейсбучном конкурсе какого–то банка и могут выиграть выиграть аж 100 000 долларов. Этого хватит на пять трансплантаций. У кого есть акк в фейсбуке — помогите им пожалуйста. Программа–минимум предельно простая: пойти и проголосовать (не более 30–40 секунд). Программа–максимум: совершив несколько не самых сложных действий можно получить себе еще один голос и проголосовать вторично.

Просто голосовать — здесь. Инструкция по получению второго голоса — тут. Здесь же подробности про АдВиту и для чего все это нужно.

Сейчас АдВита находится на грани между 50 и 100 тысячами баксов (грань проходит по 11 месту). Голосование продлится до 20.09 07:59 (Мск).

Кто сможет — спасибо–пожалуйста.

источник

Profile

ocehb: (Default)
ocehb

January 2021

S M T W T F S
     12
345 6789
10111213141516
17181920212223
24252627282930
31      

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 2nd, 2025 03:39 pm
Powered by Dreamwidth Studios