Skip to content


История команд в bash с указанием даты и времени

Big brother is watching you Читая в очередной раз man по bash-у, наткнулся на интересную переменную оболочки, цитирую:

HISTTIMEFORMAT
If this variable is set and not null, its value is used as a format string for strftime(3) to print the time stamp associated with each history entry displayed by the history builtin. If this variable is set, time stamps are written to the history file so they may be preserved across shell sessions.

Это означает, что в историю команд можно добавлять дату и время, когда была выполнена та или иная команда. В случае, когда сервер администрируют несколько человек, это может быть весьма полезно при различных "разборах полетов" на тему кто где и когда накосячил :) Для этого в bashrc (системный, который /etc/bashrc, или в домашней директории, который ~/.bashrc) нужно добавить строчку:

export HISTTIMEFORMAT="%h/%d - %H:%M:%S "

После чего история команд вместо этого

    3  h
    4  man bash
    5  cat ~/.bashrc
    6  less ~/.bashrc

будет уже выглядеть более подробно, примерно вот так:

    3  Июл/04 - 19:55:01 h
    4  Июл/04 - 19:55:26 man bash
    5  Июл/04 - 20:25:13 cat ~/.bashrc
    6  Июл/04 - 20:25:18 less ~/.bashrc

P.S. А на тему происхождения картинки с глазом, которая в этой заметке в качестве иллюстрации притулена, весьма интересно написано в Википедии.

Posted in *nix.

Tagged with , .


Установка принтера Canon Pixma iP1000 в Linux

Canon Pixma iP1000
1. Ставим rpm-файлы:

2. Перезапускаем cups:

/etc/rc.d/init.d/cups restart

3. Выполняем команду для окончательной регистрации принтера:

lpadmin -p PIXMAIP1000 -m canonpixmaip1000.ppd -v usb://Canon/iP1000 -E

Вместо "usb://Canon/iP1000", возможно, нужно будет указать что-то другое – этот device-uri можно посмотреть в web-интерфейсеcups.

Дополнительная инфа есть здесь: http://mambo.kuhp.kyoto-u.ac.jp/~takushi/

Альтернативные ссылки для скачивания RPM-пакетов:

http://files.alfansa.org/bjfilter-common-2.50-2.i386.rpm
http://www.mediafire.com/download.php?6cxlx0bt9e0

http://files.alfansa.org/bjfilter-pixmaip1000-2.50-2.i386.rpm
http://www.mediafire.com/download.php?6stx52nn0km

http://files.alfansa.org/bjfilter-pixmaip1000-lprng-2.50-2.i386.rpm
http://www.mediafire.com/download.php?0n2nomwoyfz

Posted in *nix.

Tagged with , , .


Пишем CD/DVD-диски в linux

Прожиг дисковИз консоли диски можно записывать программой cdrecord (она же wodim). Для доступа к приводу используется интерфейс SCSI GENERIC (sg). Работать с программой рекомендуется с правами суперпользователя (root-а), поскольку иногда ядром ограничивается множество доступных SCSI-команд для непривелегированных пользователей. Сначала нужно узнать какое устройство в системе у нас соответствует пищущему приводу. Это можно сделать, например, следующей командой:

dmesg | grep -E "CD.*RW" -A 1
scsi 1:0:0:0: CD-ROM            Optiarc  DVD RW AD-7200A  1.05 PQ: 0 ANSI: 5
sr0: scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray

Здесь видно, что пишущему приводу соответствует устройство /dev/sr0. На него есть также симлинки:

ls -l /dev/dvdrw
lrwxrwxrwx 1 root root 3 Июн  4 19:32 /dev/dvdrw -> sr0
ls -l /dev/dvd
lrwxrwxrwx 1 root root 3 Июн  4 19:32 /dev/dvd -> sr0

Затем создаем iso-образ или берем готовый и записываем:

cdrecord -v -dev=/dev/sr0 -blank=fast /tmp/CentOS-5.2-i386-LiveCD.iso                                  
wodim: No write mode specified.                                                                                                    
wodim: Asuming -tao mode.                                                                                                          
wodim: Future versions of wodim may have different drive dependent defaults.                                                       
TOC Type: 1 = CD-ROM                                                                                                               
scsidev: '/dev/sr0'                                                                                                                
devname: '/dev/sr0'                                                                                                                
scsibus: -2 target: -2 lun: -2                                                                                                     
Linux sg driver version: 3.5.27                                                                                                    
Wodim version: 1.1.8                                                                                                               
SCSI buffer size: 64512                                                                                                            
Device type    : Removable CD-ROM                                                                                                  
Version        : 5                                                                                                                 
Response Format: 2                                                                                                                 
Capabilities   :                                                                                                                   
Vendor_info    : 'Optiarc '                                                                                                        
Identification : 'DVD RW AD-7200A '                                                                                                
Revision       : '1.05'                                                                                                            
Device seems to be: Generic mmc2 DVD-R/DVD-RW.                                                                                     
Current: 0x000A (CD-RW)                                                                                                            
Profile: 0x002B (DVD+R/DL)                                                                                                         
Profile: 0x001B (DVD+R)                                                                                                            
Profile: 0x001A (DVD+RW)                                                                                                           
Profile: 0x0016 (DVD-R/DL layer jump recording)                                                                                    
Profile: 0x0015 (DVD-R/DL sequential recording)                                                                                    
Profile: 0x0014 (DVD-RW sequential recording)                                                                                      
Profile: 0x0013 (DVD-RW restricted overwrite)                                                                                      
Profile: 0x0012 (DVD-RAM)                                                                                                          
Profile: 0x0011 (DVD-R sequential recording)                                                                                       
Profile: 0x0010 (DVD-ROM)                                                                                                          
Profile: 0x000A (CD-RW) (current)                                                                                                  
Profile: 0x0009 (CD-R)                                                                                                             
Profile: 0x0008 (CD-ROM) (current)                                                                                                 
Profile: 0x0002 (Removable disk)                                                                                                   
Using generic SCSI-3/mmc   CD-R/CD-RW driver (mmc_cdr).                                                                            
Driver flags   : MMC-3 SWABAUDIO BURNFREE                                                                                          
Supported modes: TAO PACKET SAO SAO/R96R RAW/R96R                                                                                  
Drive buf size : 866304 = 846 KB                                                                                                   
Beginning DMA speed test. Set CDR_NODMATEST environment variable if device
communication breaks or freezes immediately after that.
FIFO size      : 4194304 = 4096 KB
Track 01: data   696 MB
Total size:      800 MB (79:17.94) = 356846 sectors
Lout start:      800 MB (79:19/71) = 356846 sectors
Current Secsize: 2048
ATIP info from disk:
  Indicated writing power: 3
  Reference speed: 6
  Is not unrestricted
  Is erasable
  Disk sub type: High speed Rewritable (CAV) media (1)
  ATIP start of lead in:  -11240 (97:32/10)
  ATIP start of lead out: 359849 (79:59/74)
  1T speed low:  4 1T speed high: 10
  2T speed low:  4 2T speed high:  0 (reserved val  6)
  power mult factor: 1 5
  recommended erase/write power: 5
  A1 values: 24 1A D8
  A2 values: 26 B2 4A
Disk type:    Phase change
Manuf. index: 27
Manufacturer: Prodisc Technology Inc.
wodim: Cannot get next writable address for 'invisible' track.
wodim: This means that we are checking recorded media.
wodim: This media cannot be written in streaming mode anymore.
wodim: If you like to write to 'preformatted' RW media, try to blank the media first.
wodim: WARNING: Data may not fit on standard 74min disk.
Speed set to 1764 KB/s
Starting to write CD/DVD at speed  10.0 in real TAO mode for single session.
Last chance to quit, starting real write in    0 seconds. Operation starts.
Waiting for reader process to fill input buffer ... input buffer ready.
Performing OPC...
Blanking PMA, TOC, pregap
Blanking time:   17.965s
Performing OPC...
Starting new track at sector: 0
Track 01:  696 of  696 MB written (fifo 100%) [buf 100%]  10.2x.
Track 01: Total bytes read/written: 730816512/730816512 (356844 sectors).
Writing  time:  481.694s
Average write speed  10.0x.
Min drive buffer fill was 100%
Fixating...
Fixating time:   31.676s
BURN-Free was never needed.
wodim: fifo had 11512 puts and 11512 gets.
wodim: fifo was 0 times empty and 11422 times full, min fill was 78%.

Для любителей графических интерфейсов есть k3b (обычно имеется в стандартных репозиториях) или проприетарный Nero.

Posted in *nix.

Tagged with , .


Удаление файлов, расширения которых не входят в заданный список

Есть задача – удалять из заданных директорий все файлы кроме тех, "расширения" которых входят в заданный список:

  • .mp3
  • .mp3_env
  • .mp3_dig
  • .mp2_env
  • .mp2_dig
  • .wav
  • .wav_env
  • .wav_dig

Сразу приношу свои извинения эстетам, которые скажут, что в UNIX-like OS нет понятия "расширение имени файла", и что это чисто DOS-овская терминология. Я понимаю, просто так проще было выразить мысль :)

#!/bin/bash
 
PREFIX=/var/spool/samba
SUBJ="Deleted files from $PREFIX at `/bin/hostname -s`"
TMP=/var/tmp/`basename $0`.$$
EMAIL=admin@somehost.com
# Base list of allowed extensions
EXTs="mp3 mp2 wav"
REGEX=".*\.\("
 
for i in $EXTs; do
  REGEX="${REGEX}${i}\|"
  REGEX="${REGEX}${i}_env\|"
  REGEX="${REGEX}${i}_dig\|"
done
 
# Trailing "|" deleting
REGEX=${REGEX/%|/}
# Trailing "\" deleting
REGEX=${REGEX/%\\/}
# Closing regex
REGEX="${REGEX}\)$"
# В результате получили такой regex:
# ".*\.\(mp3\|mp3_env\|mp3_dig\|mp2\|mp2_env\|mp2_dig\|wav\|wav_env\|wav_dig\)$"
 
for DIR in ${PREFIX}/dir1 ${PREFIX}/dir2; do
  find $DIR -type f ! -iregex "${REGEX}" -print0 | \
    /usr/bin/xargs --null -r stat --printf="|%n|\n" >> $TMP
  find $DIR -type f ! -iregex "${REGEX}" -print0 | \
    /usr/bin/xargs --null -r rm
done
 
if [ `/bin/cat $TMP | /usr/bin/wc -l` -gt 0 ]; then
  /bin/cat $TMP | /bin/mail -s "$SUBJ" $EMAIL -- -f robot@someserver.com
fi
 
[ -f $TMP ] && rm $TMP

Posted in *nix.

Tagged with , , , .