Tản mạn Linux


Chụp screenshot
Nguồn gốc tên gọi và cách phát âm Linux
Liên kết cứng và liên kết mềm
Tách tập tin từ RPM
umask
Tìm tập tin có kích thước lớn
Xem utf-8 trong console
Map bàn phím sang dvorak
Chơi CD nhạc với xmms
Thay đổi ngày giờ tạo (sửa đổi) tập tin
USB camera
Sử dụng đĩa MO với đầu đọc USB
mc trong xterm với large/huge font
mount 777
Thí dụ về sambamount
Sơ lược về ghi CD
Cài đặt XFce 4 trên SuSE 8.2
Các link cho SUSE rpm
Cài gaim 0.79 trên SUSE 9.1
Ghi rtsp với mplayer
Cài lại gói chưa update trong SUSE
Khởi động phiên X11 thứ hai
Tắt/bật tiếng beep
Việt hoá ứng dụng với gettext
Mẹo vi: cho kết quả lệnh date giữa dòng
Tiết kiệm không gian đĩa của Windows XP (dùng với VMWare)
Xem các dịch vụ nào đang chạy
Cắt và nối tập tin
Ghi âm thanh
Wget tip: download tập tin trong thư mục được Apache liệt kê
Wget tip: script download các tập tin có thứ tự trong thư mục
Wget tip: download hồi quy
Sơ lược về quản lí Postfix queue
Sơ lược về in ấn
Sử dụng bàn phím tiếng Nhật trong X.org
Script gõ tiếng Nhật
Script đổi tên tập tin sang chữ thường
Cho phép người dùng sử dụng một thiết bị
Cho phép người dùng shutdown máy
Biên dịch src.rpm
Script tạo ogg/mp3
Quản lý gói trong Debian
Cài đặt teTeX
Cài dvipdfmx thêm cho teTeX
Sử dụng vfat với rsync
s bitsticky bit
patchdiff
Lệnh dd
Tạo APT repository đơn giản
.xsession-errors quá lớn
Đồng hồ báo thức
Nghe wma với xmms
Một số lệnh với MySQL
Installing usb wireless card on Debian Lenny



Chụp screenshot


Nguồn gốc tên gọi và cách phát âm Linux

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.linux
Subject: Re: How to pronounce "Linux"?
Message-ID: <1992Apr23.123216.22024@klaava.Helsinki.FI>
Date: 23 Apr 92 12:32:16 GMT
References: <1992Apr23.044317.3916@nuscc.nus.sg>
Organization: University of Helsinki
Lines: 25


In article <1992Apr23.044317.3916@nuscc.nus.sg> npngps@solomon.technet.sg (Ng
Pheng Siong) writes:
>I apologize if this is considered trivial, but what is the
>proper pronunciation for "Linux"?
>
>Lilee or lie?
>Nuxnuks or nerks? Nooks?

Oh god.  We just hashed this through on alt.os.linux.  It /definitely/
needs to go into the FAQ. 

'li' is pronounced with a short [ee] sound: compare prInt, mInImal etc. 
'nux' is also short, non-diphtong, like in pUt.  It's partly due to
minix: linux was just my working name for the thing, and as I wrote it
to replace minix on my system, the result is what it is...  linus' minix
became linux. 

I originally intended it to be called freax (although buggix was one
contender after I got fed up with some of the more persistent bugs :)
and I think the kernel makefiles up to version 0.11 had something to
that effect ("Makefile for the freax kernel" in a comment).  But arl
called the linux directory at nic.funet.fi pub/OS/Linux, and the name
stuck.  Maybe just as well: freax doesn't sound too good either (freax
is obviosly free + freak + the obligatory -x). 

                Linus

arl - [Ari Lemmke]

(http://www.funet.fi/~arl/)

Liên kết cứng và liên kết mềm

Mọi tập tin đều có một cấu trúc dữ liệu (record) gọi là i-node lưu trữ thông tin về tập tin, và tên tập tin được dùng chỉ như là một tham khảo (reference) cho cấu trúc đó. Một liên kết chỉ là một cách để tham khảo đến nội dung của tập tin. Có hai loại liên kết:


Tách tập tin từ RPM

  1. Liệt kê tên các tập tin thành phần và đường dẫn đầy đủ (full path) của chúng
             rpm -qpl package.rpm
           
  2. Tách (các) tập tin thành phần với lệnh rpm2cpio
             rpm2cpio package.rpm | cpio -iv --make-directories full-path
           
    với full-path là đường dẫn đầy đủ tìm ra trong bước 1 ở trên. Nếu muốn tạo đường dẫn đầy đủ trong thư mục hiện tại, chỉ cần bỏ '/' dẫn đầu đường dẫn. (hoặc chỉ cần rpm2cpio package.rpm | cpio -ivmud)

umask

umask giống như số nhị phân NOT của quyền trên tập tin. Thí dụ:
         rwxr-xr-x  - quyền tập tin mong muốn
         111101101  - quyền tập tin viết theo nhị phân
         000010010  - umask
         0  2  2    - umask bát phân
Vì vậy, nếu quy định cho một phân vùng ổ đĩa trong tập tin fstab với umask=0000, quyền trên phân vùng đó sẽ là rwxrwxrwx. Nếu muốn quy định quyền là rwxrwxr-x, cần thiết lập umask=0002.

Tìm tập tin có kích thước lớn

         find thư_mục -size +20000k
sẽ tìm các tập tin có size hơn 20MB trong thư_mục

Xem utf-8 trong console

         ($ consolechars -v -m straight-to-font -u viscii.sfm -f viscii10-8x16.psf)
         $ unicode_start
	 $ setfont viscii10-8x16 (hoặc consolechars -f viscii10-8x16.psf)
font viscii10-8x16 (thường ở /usr/share/(kbd/)consolefonts hoặc trên redhat thì ở /boot/kbd/consolefonts - vì /usr có thể ở partition khác nên nếu để ở /boot/... thì sẽ set font console trước khi load các partition) đi kèm các distro có vị trí chữ Õ và ạ đảo ngược, có thể tìm font mới (viscii11-8x16.psf, ở http://vinux.sourceforge.net/vim-vn/).

Dùng bảng mã TCVN: $ setfont -m trivial -u tcvn.uni tcvn8x16.

Trên Debian, cần gói console-terminus để có fixed fonts, và kbd-compat để có setfont.


Map (ánh xạ) bàn phím sang dvorak

Từ một xterm
         $ setxkbmap -layout dvorak
Để quay lại bàn phím us
         $ setxkbmap -layout us
* Luyện dvorak với dvorak7min hoặc dvorakng

Chơi CD nhạc với xmms


Thay đổi ngày giờ tạo (sửa đổi) tập tin

         $ touch -t 200403011244 tên_tập_tin
sẽ đổi ngày giờ tạo (sửa đổi) tập tin sang 12:44 pm, March 1, 2004.

USB camera

         $ su -
         $ insmod usbcore (hoặc dùng lệnh modprobe thay vì insmod)
         $ insmod usb-uhci (hoặc usb-ohci)
         $ insmod usb-storage
Sau mỗi lần nạp các module trên, có thể kiểm tra bằng
         $ tail /var/log/kern.log (hoặc /var/log/messages)
Trên một số hệ thống, như SUSE 9.0, mọi thứ đã sẵn sàng.

Kiểm tra thông tin về các thiết bị SCSI. Khoan nối camera vào.

         $ cat /proc/scsi/scsi
Nối camera vào qua cáp USB. Chỉnh camera sang chế độ "Display" (hoặc "Quick View") (đừng mở lens barrier).
         $ tail -n 15 /var/log/kern.log (kiểm tra kernel log xem có thành công không)
         $ cat /proc/scsi/scsi (kiểm tra thiết bị SCSI mới xuất hiện)
         $ mount -t vfat /dev/sda1 /mount (nếu đã có một ổ CR-RW nối vào dùngIDE-SCSI
         interface, camera sẽ là /dev/sda1)
         $ exit (trở thành người dùng thường)
         $ ll /mnt
* Konqueror có thể dùng địa chỉ camera:/ để truy cập vào camera.

Sử dụng đĩa MO với đầu đọc USB

Đĩa MO (magneto optical) được sử dụng phổ biến ở Nhật, có kích thước 3,5" và dung lượng thường là 230MB, 640MB hay 1.3GB,...

mc trong xterm với large/huge font

Font mặc định của xterm thường nhỏ, dùng mc phải "căng" mắt ra mới thấy. Một số giải pháp:

mount 777

Ví dụ như khi cần mount các vfat fs.
         $ su
         $ mount -o umask=0 device dir

Thí dụ về smbmount

	 $ smbmount //LNB_PERSONAL/lnb_personal /home/nien/mnt/LNB_PERSONAL/lnb_personal/
	 -o username=<username>%<password>,fmask=644,dmask=755,uid=500,gid=100,ip=<IPaddress>,debug=0
	 $ smbumount
Nếu có thông báo khi chạy lệnh smbmount:
         smbmnt must be installed suid root for direct user mounts (500,500)
	 smbmnt failed: 1
Tương tự cho trường hợp có thông báo "smbumount must be installed suid root".

Sơ lược về ghi CD

  1. Kiểm tra xem có các package mkisofs, cdrecord; ví dụ:
           $which cdrecord
           /usr/bin/cdrecord
           $which mkisofs
           /usr/bin/mkisofs
        
  2. Kiểm tra các thiết lập phần cứng:
           $dmesg | grep 'hd.:'
        
    Trong kết quả hiển thị có dòng tương tự như
           hdd: LITE-ON LTR-40125S, ATAPI CD/DVDROM drive
        
    Bạn biết được rằng ổ ghi CD (trong trường hợp này) là hdd
           $dmesg | grep 'ide-scsi'
        
    được kết quả tương tự
           hdd: attached ide-scsi driver.
        
    Bạn biết được hdd đã được giả lập SCSI (điều này cần thiết để bạn ghi CD trong Linux). (Nếu chưa, bạn có thể phải thêm tham số cho nhân Linux. Nếu khi khởi động Linux, bạn dùng GRUB thì hiệu chỉnh tập tin /boot/grub/menu.lst (hoặc /boot/grub/grub.conf, tuỳ vào distro bạn đang dùng): thêm hdd=ide-scsi trên dòng lệnh kernel. Thí dụ
           title linux
           kernel (hd1,6)/boot/vmlinuz root=/dev/hdc7 vga=0x317 hđ=ide-scsi
        
    Nếu bạn dùng LILO thì hiệu chỉnh tập tin /etc/lilo.conf: thêm dòng append="hdd=ide-scsi" vào phần kernel. Cần nhớ là sau khi thay đổi cấu hình của LILO thì bạn cần chạy lệnh lilo để cập nhật.)

  3. Ghi CD

* Lưu ý: Trên một số hệ thống, một số các lệnh ở trên đòi hỏi bạn phải có quyền root để thi hành.

* Tạo .iso từ CD:

        dd if=/dev/cdrom of=./filename.iso
hoặc
        dd if=/dev/cdrom of=image.iso bs=X count=Y
với X = Logical block size, Y = Volume size có từ kết quả isoinfo -d -i /dev/cdrom (isoinfo không dùng được trên audio cd).

hoặc

        cat /dev/cdrom > image.iso
hoặc
        readcd dev=ATAPI:0,1,0 f=./filename.iso
Sau khi tạo .iso, có thể kiểm tra bằng cách so sánh

* Tạo bin/toc từ CD:

    cdrdao read-cd --read-raw --datafile image.bin --device ATAPI:0,1,0 --driver generic-mmc-raw image.toc

* Xoá CD-RW

       cdrecord --dev=0,3,0 --blank=fast
hoặc
       cdrdao blank --device ATAPI:0,1,0
Đôi khi, vì lỗi của đĩa, cdrdao không thể xoá ở tốc độ mặc định; khi đó cần ép xoá ở tốc độ thấp hơn với tuỳ chọn --speed (ví dụ, --speed 10).

* Sao chép audio CD (cùng một device)

Ghi CD với bin/cue (hoặc bin/toc)

Dùng cdrdao
         cdrdao write --device 0,0,0 --speed 8 ./file.cue

cũng có thể thêm --simulate để kiểm tra trước khi ghi thực sự.

Cần lưu ý là đôi khi cần phải điều chỉnh nội dung tập tin cue (bằng một text editor) để cho đúng tên của tập tin bin vì tên tập tin trong MS Windows không phân biệt chữ hoa/thường cũng như có thể không có đuôi .bin.

Ngoài ra cũng có thể chuyển đổi bin/cue sang iso bằng binchunker (http://he.fi/bchunk/).

Thao tác với DVD+/-R(W)

Có thể dùng các lệnh tương tự như khi thao tác trên CD. Gói DVD+RW-Tools chứa các công cụ hỗ trợ cho DVD như growisofs (chạy trên nền mkisofs), dvd+rw-format,...

Ghi DVD

Xoá đĩa DVD-RW

Chỉ có đĩa DVD+RW lần đầu tiên sử dụng mới cần format, những lần ghi sau sẽ tự động xoá dự liệu đang có. Reformat DVD+RW không đồng nghĩa với xoá trắng (blanking); nếu vì lí do riêng tư cần xoá hoàn toàn dữ liệu, dùng lệnh growisofs -Z /dev/scdN=/dev/zero. Reformat nhiều lần có thể làm giảm tuổi thọ đĩa (tuổi thọ đĩa có thể chỉ được 10-20 lần reformat). DVD+R không cần format trước khi dùng.

Xem thông tin về đĩa DVD:

         dvd+rw-mediainfo /dev/dvdrw

Cài đặt XFce 4 trên SuSE 8.2

  1. Các gói phụ thuộc (có trên bộ CD SuSE 8.2):

    pkgconfig
    gtk2, gtk2đevel
    glib, glib2đevel
    libxml2, libxml2đevel
    libdbh

    Có thể cài thêm các gói:

    librsvg (2.2.x hoặc mới hơn)
    libstartup-notification (0.5 hoặc mới hơn)
  2. Tải xuống

  3. Cài đặt gói RPM

    Xfce4 và Xfce3 có thể cùng tồn tại trên một hệ thống mà không xung đột nhau, nên không cần dỡ bỏ Xfce3 trước khi cài Xfce4.

    	   rpm -Uvh tên_tâ.p_tin.rpm
    	
    Trình tự cài đặt

    Các gói cần theo đúng trình tự:

    dbh-1.0.15-2.i386.rpm
    libxfce4util-4.0.0-1suse82.i386.rpm
    libxfce4utilđevel-4.0.0-1suse82.i386.rpm
    libxfcegui4-4.0.0-1suse82.i386.rpm
    libxfcegui4đevel-4.0.0-1suse82.i386.rpm
    libxfce4mcs-4.0.0-1suse82.i386.rpm
    libxfce4mcsđevel-4.0.0-1suse82.i386.rpm
    xfce-mcs-manager-4.0.0-1suse82.i386.rpm
    xfce-mcs-managerđevel-4.0.0-1suse82.i386.rpm
    xfce4-panel-4.0.0-1suse82.i386.rpm

    Các gói còn lại không cần theo trình tự:

    xfce4-mixer-4.0.0-1suse82.i386.rpm
    gtk-xfce-engine-2.1.3-1suse82.i386.rpm
    xfce-mcs-plugins-4.0.0-1suse82.i386.rpm
    xfce-utils-4.0.0-1suse82.i386.rpm
    xfce4-iconbox-4.0.0-1suse82.i386.rpm
    xfce4-systray-4.0.0-1suse82.i386.rpm
    xfce4-themes-4.0.0-1suse82.noarch.rpm
    xfce4-toys-4.0.0-1suse82.i386.rpm
    xfdesktop-4.0.0-1suse82.i386.rpm
    xffm-4.0.0-1suse82.i386.rpm
    xffm-icons-4.0.0-1suse82.i386.rpm
    xfwm4-4.0.0-1suse82.i386.rpm
    xfwm4-themes-4.0.0-1suse82.noarch.rpm
  4. Script startxfce4

    Khi đăng nhập vào hệ thống và chọn một trình quản lý cửa sổ, hệ thống Linux sẽ gọi các tập tin nhị phân trong /usr/X11R6/bin/. Khi cài đặt các gói RPM XFce4, script startxfce4 nằm ở /usr/bin/, do đó cần tạo liên kết đến /usr/X11R6/bin/:

              ln - s /usr/bin/startxfce4 /usr/X11R6/bin/XFce4
    	
    Lưu ý rằng tên liên kết là XFce4 mặc dù script khởi động có tên là startxfce4. Sẽ đề cập ở phần saụ
  5. Cá nhân hoá startxfce4

    Nên chép xinitrc từ /etc/X11/xfce4 vào ~/.xfce4 (tạo nếu chưa có) và thêm thuộc tính thi hành cho nó rồi thực hiện các thay đổi trên xinitrc đó theo ý muốn.

              mkdir ~/.xfce4
              cp /etc/xfce4/xinitrc ~/.xfce4
              cd ~/.xfce4
              chmod +x xinitrc
            
  6. Thêm Xfce4 vào thực đơn KDM

    Hiệu chỉnh tập tin kdmrc tại /etc/opt/kde3/share/config/kdm/. Xem đề mục "SessionTypes=" trong tập tin kdmrc:

    	  SessionTypes=kde,gnome,blackbox,afterstep,fvwm2,mwm,twm,failsafe,
    	 
    Đây là danh sách các trình quản lý cửa sổ xuất iện trong thực đơn KDM theo trình tự liệt kệ Lưu ý ở cuối đề mục này có dấu phẩỵ.

    Thêm XFce4 vào danh sách trên; đây cũng là lý do đổi tên liên kết cho startxfce4 ở phần trên: XFce4 dễ nhìn hơn startxfce4. Thí dụ:

              SessionTypes=kde,gnome,blackbox,afterstep,fvwm2,mwm,twm,failsafe,XFce4,
    	 
* Theo http://students.oamk.fi/~olilju00/xfce4/rc2/Installing_XFce4_on_SuSE_8.2.html

Các link cho SUSE rpm


Cài gaim 0.79 trên SUSE 9.1

Nếu cài từ source sẽ gặp rắc rối với SSL khi login với MSN. Nếu lấy gaim từ http://usr-local-bin.org/ thì cần gtk 2.4. Theo http://gaim.nosnilmot.com/faq-ssl.php (không phải http://gaim.sourceforge.net/faq-ssl.php !), có thể lấy gaim từ http://guru.unixtech.be/rpm/packages/Network/gaim/, theo đó, "Please install those packages first (first opencdk, then gnutls and finally gaim"; tuy nhiên cũng cần install thêm libtasn1 (http://guru.unixtech.be/rpm/packages/Development/libtasn1/) trước khi install gnutls.

Ngoài ra, có thể lấy gaim từ ftp://ftp.suse.com/pub/people/mmj/


Ghi rtsp với mplayer

mplayer -dumpstream rtsp://<address>
Sau khi ghi xong, sẽ được tập tin ./stream.dump. Nên đổi tên thành .rm, .ra, .asf, .wmv,... MPlayer hỗ trợ các giao thức HTTP, RTSP, MMS để ghi Windows Media, RealVideo/RealAudio, QuickTime Video.

Cài lại gói chưa update trong SUSE

rpm -ivh -force <tên-gói>

Khởi động phiên X11 thứ hai

Từ một console hoặc terminal không đang sử dụng:
         startx -- :1
Lưu ý:

Tắt/bật tiếng beep

* Gõ lệnh beep để thử tiếng beep.

Việt hoá ứng dụng với gettext

Khi một ứng dụng hỗ trợ gettext nó phát sinh ra các tập tin .pot/.po. Chúng có cấu trúc khá đơn giản: một dòng bắt đầu bằng msgid để lưu câu tiếng Anh, một dòng bắt đầu bằng msgstr để lưu câu dịch. Sau đó là một dòng trắng. Các dòng bắt đầu bằng # là comment. Cứ thế lặp đi lặp lại. Ví dụ:
,----
| # this is comment
| msgid "this is "
| "an English string\n"
| msgstr "đây là dòng tiếng Việt\n"
|
`----

Các chuỗi trong msgid, msgstr sử dụng y chang như trong C. Dấu " hoặc ký tự xuống dòng phải cần quote thành \" hoặc \n. Các %s %d %i ... đại diện cho một nội dung gì đó sẽ được chương trình thêm sau (man printf, man strftime).

Trong dự án GNOME, kí tự _ sẽ được hiển thị là dấu gạch dưới, quy ước của hotkey; khi dịch cần chuyển sang vị trí thích hợp (hoặc có thể bỏ qua). Đối với dự án KDE, đó là kí tự &.

Khi Việt hóa, chỉ thay đổi nội dung phần msgstr thôi, không đụng đến các phần khác. Nếu trong phần comment có chữ "obsolete" thì khỏi cần dịch. Nếu có chữ "fuzzy" thì phải xem lại phần msgstr vì nó không chắc đúng đâu. Nhớ bỏ chữ fuzzy sau khi dịch xong.

Dòng msgid đầu tiên trong file thường là các thông tin header; cứ thấy chỗ nào viết hoa thì điền vào.

Sau khi dịch xong (hoặc đang dịch), có thể kiểm tra bản dịch xem có phạm lỗi gì không bằng lệnh:

,----
| msgfmt file.po -cvo /dev/null
`----
Lưu ý rằng tập tin đã được dịch thường dùng đuôi .po. Đuôi .pot chỉ dùng cho tập tin chưa được dịch.

Nếu có tập tin .pot mới và tập tin .po cũ của phiên bản trước, có thể tạo tập tin .po tương ứng với tập tin .pot mới bằng lệnh

,----
| msgmerge old_file.po file.pot > new_file.po
`----
Để cài chạy thử tập tin .po mình mới tạo ra, tạo tập tin .mo bằng lệnh:
,----
| msgfmt file.po -cvo file.mo
`----
Sau đó tìm trong source của chương trình, tìm bindtextdomain:
,----
| cd package-source
| grep bindtextdomain * đrecurse
`----
Chuỗi đầu tiên thấy sau bindtextdomain chính là tên file .mo. Đổi tên tập tin .mo đã tạo ở trên thành tên này, sau đó chép vô chỗ cũ - tìm trên hệ thống xem .mo cũ nằm ở chỗ nào Thường thì nó nằm ở /usr/share/locales/vi/LC_MESSAGES hoặc /usr/share/locale/vi/LC_MESSAGES,...

Ngoài ra, nếu không có .pot, chỉ muốn sửa cái giao diện đang xài thì có thể reverse .mo thành .po rồi sửa:

,----
| msgunfmt file.mo > file.po
`---- 
(Thanks to pclouds, theo http://sourceforge.net/mailarchive/message.php?msg_id=6365702)

Mẹo vi: cho kết quả lệnh date giữa dòng

Nếu dùng :r !{date} kết quả sẽ xuất hiện ở dòng mới, không ở giữa văn bản nơi muốn đặt. Có thể dùng keybinding command để làm điều này. Trong .vimrc thêm
map DATE i<cr><esc>k:r !date<cr>kJJ
khi đó ở command mode, giữ shift và gõ DATE. Cũng có thể dùng function key, ví dụ dùng F10 và muốn hiển thị thời gian theo UTC:
map <f10> i<cr><esc>k:r !date -u<cr>kJJ
(Thanks to b1nhb00ng)

Tiết kiệm không gian đĩa của Windows XP (dùng với VMWare)

Đôi khi cần dùng các ứng dụng trên Windows mà Linux chưa có phần mềm tương ứng, lúc đó VMWare là một giải pháp. Để tiết kiệm không gian đĩa dành cho hệ điều hành khách Windows XP, có thể thực hiện các việc sau:

Xem các dịch vụ nào đang chạy

lsof -i hoặc netstat -vat. Chú ý có những dịch vụ nào lạ đang chạy không, có thể đó là trojan.

Cắt và nối tập tin

split [tuỳ_chọn] [input [tiền_tố]] cắt input thành các phần có kích thước nhất định tiền_tốaa, tiền_tốab,... Nếu không có input hoặc input là - thì sẽ đọc standard input. Các tuỳ chọn: -a N hậu tố theo sau tiền_tố có chiều dài N (mặc định là 2); -b SIZE quy định kích thước tập tin xuất SIZE byte (có thể kí hiệu b cho 512, k cho 1K, m cho 1 Meg); d hậu tố dùng số thay cho chữ.

cat /path//to/file2 /path/to/file3 >>/path/to/file1 để nối các tập tin đã cắt lại với nhau.

* Có thể dùng lệnh cat để nối các tập tin được cắt trên Windows, cũng như có thể dùng lệnh cat trên Windows để nối các tập tin được cắt trên linux.

* Lệnh split đặt tên các file theo kiểu aa, ab,...; để đặt tên theo kiểu 001, 002,... có thể dùng lxsplit (http://www.freebyte.com/download/lxsplit.tar.gz).


Ghi âm thanh

Nếu đang dùng driver alsa, khởi động alsamixer bằng lệnh $ alsamixer. Di chuyển đến mic (bằng phím mũi tên phải), ấn m để unmute mic, và set capture cho mic và capture. Thử ghi âm thanh với audacity.

Wget tip: download tập tin trong thư mục được Apache liệt kê

wget -nd -r -l1 -nv -A "*.ogg" http://abc.def/music/

Wget tip: script download các tập tin có thứ tự trong thư mục

Thí dụ download các tập tin file001, file002,..., file240.jpg
#!/bin/bash
X=0
while [ $X -le 9 ]
do
        wget http://abc.def/ghk/file00$X.jpg
        X=$((X+1))
done

X=10
while [ $X -le 99 ]
do
        wget http://abc.def/ghk/file0$X.jpg
        X=$((X+1))
done


X=100
while [ $X -le 240 ]
do
        wget http://abc.def/ghk/file$X.jpg
        X=$((X+1))
done
Một script ngắn hơn:
#!/bin/bash
x=1
while [ $x -le 241 ]
do
wget "http://abc.def/ghk/file"`printf %03d.jpg $x`
x=$((x+1))
done
Lưu ý là `printf %03d.jpg $x` dùng dấu backquote (dấu huyền theo VIQR).

Wget tip: download hồi quy

wget -nd -r -l1 -nv -A "*.jpg" http://org.com.net
với:

-nd: không tạo cấu trúc thư mục (no dir)
-r: hồi quy (recurisve)
-l1: level thứ nhất
-nv: thầm lặng (non-verbose)


Sơ lược về quản lí Postfix queue

Postfix có 4 queue chính: maildrop, incoming, activedeferred. Thư gửi từ local sẽ được đưa vào maildrop, và được sao chép sang incoming sau một vài dọn dẹp (cleaning up), tại đó trình quản lí queue chưa "dòm ngó" đến. Active là queue có kích thước giới hạn cho những thư đã được mở để phân phối. Thư không phân phối được (do không tìm thấy host vì mạng chưa kết nối hoặc máy bên kia bị sự cố) sẽ vào deferred để nó không cản trở những phân phối khác.

Trình quản lí queue chỉ giữ thông tin trong bộ nhớ về active queue. Kích thước active queue được giới hạn để bộ nhớ làm việc không bị cạn kiệt vì tải cao. Khi có chỗ trống trong active queue, trình quản lí queue cho vào một thông điệp từ incoming queue và một từ deferred queue.

Ngoài các queue trên, Postfix cũng duy trì hai khoảng lưu trữ. Hold queue dùng cho thư bị niêm phong và sẽ không phân phối cho đến khi một ai đó giải phóng bằng lệnh postsuper. Thư mục corrupt dùng cho những tập tin queue bị hỏng; thay vì bỏ chúng đi, Postfix giữ lại cho người kiểm tra. Tất cả các queue được đặt trong /var/spool/postfix/.

Các thiết lập cấu hình liên quan đến queue trong /etc/postfix/main.cf:

Để xem giá trị hiện tại của các thiết lập này có thể dùng lệnh postconf | grep tên_thiết_lập.

Các lệnh thường dùng trong quản lí queue:


Sơ lược về in ấn

Do lịch sử để lại, có hai hệ thống in ấn trong Linux: BSD và System V. Các lệnh chính:

Sử dụng bàn phím tiếng Nhật trong X.org

/etc/X11/xorg.conf
Section "InputDevice"
Identifier	"Generic Keyboard"
Driver		"keyboard"
Option		"CoreKeyboard"
Option		"XkbRules"	"xorg"
#Option		"XkbModel"	"pc104"
Option		"XkbModel"	"jp106"
Option		"XkbLayout"	"jp"
Option		"XkbVariant"	"jp106"
EndSection

Script gõ tiếng Nhật

#!/bin/bash
#run source ./scriptname
export LC_ALL=ja_JP
export LANG=ja_JP.eucJP
export XMODIFIERS='@im=kinput2'
kinput2 -canna &
#!/bin/bash
# run: jinputx <app_name>
# or source jinputx then type the command
export LC_ALL=ja_JP
export LANG=ja_JP.eucJP
export XMODIFIERS='@im=kinput2'
kinput2 -canna &
$1
#!/bin/bash
#running gedit
export LC_ALL=ja_JP
export LANG=ja_JP.eucJP
export XMODIFIERS='@im=kinput2'
kinput2 -canna &
gedit

Script đổi tên tập tin sang chữ thường

#/bin/sh
find . -exec sh -c '(mv {} `echo {} | tr [A-Z] [a-z]`)' \;
sẽ có tác dụng lên thư mục đang đứng và các thư mục con.

Cho phép người dùng sử dụng một thiết bị

Thông thường chỉ có người dùng root có thể truy cập (mount) ổ CD-ROM hay ổ đĩa mềm,... Thí dụ sau hướng dẫn 4 bước giao quyền truy cập này cho một người dùng. * Ngoài ra có thể chỉ cần một bước để giao quyền sử dụng CD-ROM cho (mọi) người dùng với lệnh chmod 664 /dev/hdd.

Cho phép người dùng shutdown máy

Một trong các cách

Biên dịch src.rpm

   # rpm -Uvh blah.src.rpm
   # cd /usr/src/packages/SPECS
   # vi blah.spec
   # rpmbuild -bb blah.spec
Gói rpm sẽ nằm trong /usr/src/packages/RPMS/

Script tạo ogg/mp3


Quản lý gói trong Debian

apt-get update
cập nhật cơ sở dữ liệu apt (danh sách các gói có thể được cài đặt) từ kho lưu trữ xuống máy. Nên chạy lệnh này thường xuyên.
apt-cache search <từ_khoá>
tìm từ khoá (có ở phần tên gói hoặc miêu tả ngắn) trong kho lưu trữ của debian.
apt-get install <tên_gói>
cài đặt gói
apt-cache show <tên_gói>
hiển thị thông tin của gói
apt-cache policy <tên_gói>
thông tin về các lựa chọn ưu tiên của gói
dpkg -i <tên_gói.deb>
cài đặt gói .deb có trên máy
dpkg -l | grep <từ_khoá>
liệt kê các tập tin có chứa từ khoá (ở phần tên hoặc miêu tả ngắn) đã được cài đặt trên máy (nếu có ii bên trái thì gói đã được cài đặt hợp quy cách).
apt-get remove <gói>
gỡ bỏ gói, không gỡ bỏ tập tin cấu hình
apt-get remove --purge <gói>
gỡ bỏ gói và gỡ bỏ tập tin cấu hình
dpkg -S /đường/đến/tập_tin
hiển thị tên gói chứa tập tin
apt-get upgrade
nâng cấp các gói, trừ những gói nào cần cài thêm các gói mới mà hiện không đang có trên hệ thống hoặc cần loại bỏ các gói hiện đang có (do xung đột)
apt-get dist-upgrade
nâng cấp toàn bộ các gói trong hệ thống, có thể cài thêm gói mới hoặc gỡ bỏ gói xung đột
dpkg-reconfigure <tên_gói>
tái cấu hình gói. Một số gói có tập tin cấu hình riêng, dùng lệnh dpkg -L để tìm.
dpkg -L <tên_gói> | more
liệt kê các tập tin được cài đặt từ gói
alien --rpm-to-deb gói.rpm
chuyển gói rpm thành deb
apt-cache showpkg <tên_gói>
hiển thị reverse dependencies
ar -x <tên_gói.deb>
mở gói deb và tạo 2 tập tin: control.tar.gz (chứa các thông tin dpkg cần để cài đặt và cấu hình) và data.tar.gz (chứa các tập tin nhị phân và dữ liệu).
apt-get clean
gỡ bỏ mọi thứ trừ các lock file trong /var/cache/apt/archives//var/cache/apt/archives/partial/
apt-get autoclean
chỉ gỡ bỏ các tập tin có version cũ (so với Package Lists)

Cài đặt teTeX

  1. Download các gói

    tetex-src-x.x.x.tar.gz
    tetex-texmf-x.x.x.tar.gz

    tại http://www.ctan.org/tex-archive/systems/unix/teTeX/ (bản chính thức) hoặc tại http://www.ctan.org/tex-archive/systems/unix/teTeX-beta/ (bản beta) (xem danh sách mirror tại http://www.ctan.org/tex-archive/CTAN.sites).

  2. Chuẩn bị chỗ (giả sử cài vào /usr/local/tetex)
      $ mkdir -p /usr/local/tetex/share/texmf /usr/local/tetex/share/texmf-dist
  3. Cài đặt
      $ cd /usr/local/tetex/share/texmf-dist
      $ tar xvzf /đường/đến/tetex-texmf-x.x.x.tar.gz
      $ cd /tmp
      $ tar xvzf /đường/đến/tetex-src-x.x.x.tar.gz
      $ cd tetex-src-x.x.x
      $ ./configure --prefix=/usr/local/tetex --disable-multiplatform
      $ make all
      $ make install
      
    Trên Debian có thể cần cài thêm các gói flex, libxaw7-dev, libncurses5, libncurses5-dev, libncursesw5-d, ncurses-base, ncurses-bin (các gói ncurses dùng cho texinfo, nếu không cần có thể cấu hình --without-texinfo).
  4. Thiết lập cấu hình

      $ export PATH=/usr/local/tetex/bin:$PATH
    Tương tự, thêm /usr/local/tetex/man vào MANPATH và /usr/local/tetex/info vào INFOPATH.
      $ texconfig

Cài dvipdfmx thêm cho teTeX

Download dvipdfmx tại http://project.ktug.or.kr/dvipdfmx/
   $ tar xvzf dvipdfmx-YYYYMMDD.tar.gz
   $ cd dvipdfmx-YYYYMMDD
   $ ./configure --prefix=/usr/local/teTeX --with-kpathsea=/usr/local/teTeX
   $ make
   $ make install
   $ mktexlsr

Sử dụng vfat với rsync

rsync thường được dùng để lưu dự phòng - nó kiểm tra ngày giờ thay đổi lần cuối và kích thước tập tin trước khi quyết định chép đè lên tập tin đang có. Giữa các filesystem linux với nhau, chỉ cần chạy lệnh rsync -av nguồn/* đích. Cần một số thiết lập để có thể dùng rsync lưu dự phòng lên vfat. (http://www.osnews.com/story.php?news_id=9681)

s bitsticky bit

SUID=set user ID (on execution): nếu suid bit được set cho một ứng dụng thì ứng dụng đó (với process do nó tạo ra) được chạy như thể là user ID đó (tức là owner) chạy nó, nghĩa là nó có các quyền của user ID đó trên filesystem và các resource khác của hệ thống (thông qua một system call), cho dù người chạy ứng dụng đó là ai. Thường thì user ID có quyền cao hơn quyền của user tạo ra process. Thí dụ quyền của tập tin chương trình mount là -rwsr-xr-x 1 root root.

SGID=set group ID (on execution): sgid bit có ý nghĩa tương tự như suid bit, áp dụng cho nhóm: tập tin được set sgid bit sẽ được thi hành như thể là nó thuộc về nhóm đó hơn là chỉ thuộc về người dùng.

SUID và SGID chỉ có ý nghĩa trên tập tin thi hành được và chúng quan trọng trong vấn đề an ninh của hệ thống. Để tìm các tập tin có các bit này:

find / -type f \( -perm -04000 -o -perm -02000 \) -ls
Để tắt s bit:
chmod a-s tên_chương_trình
Sticky bit trên tập tin: lưu giữ ứng dụng ở bộ nhớ, sau khi chạy xong process đó không được giải phóng khỏi vùng swap và khi chương trình được gọi lại thì process đó chạy thẳng từ vùng swap, giúp cho việc tải chương trình nhanh hơn, do đó có ích cho trường hợp các ứng dụng thường được chạy (chẳng hạn như vi và gcc đối với lập trình viên) trên một hệ thống Unix xưa. Bit này chỉ có tác dụng trên tập tin thi hành được. Nhân Linux bỏ qua bit này trên tập tin.

Sticky bit trên thư mục: chỉ có root và người sở hữu có quyền tháo liên kết (unlink), xoá hoặc đổi tên các tập tin trong thư mục. Không có sticky bit, bất cứ ai có quyền ghi đều có thể xoá hoặc đổi tên tập tin. Sticky bit thường thấy trên các thư mục mà mọi người đều có quyền ghi, như /tmp, ở đó người dùng này không xoá được tập tin của người khác.

Ở lệnh chmod, set user IDset group ID bit được kí hiệu bằng kí tự s, sticky bit được kí hiệu bằng kí tự t. Khi biểu diễn dưới dạng số, giá trị của các bit đặc biệt này đứng ở vị trí đầu tiên, trước các chữ số cho các quyền thông thường, với SUID bit=4, GUID=2 và sticky bit=1.


patchdiff

Áp dụng một patch cho một source code:
cat patch.diff | patch
hoặc
patch < patch.diff
Có thể cần tuỳ chọn -psố (cat patch.diff| patch -p1) để lược bỏ số slash dẫn đầu đường dẫn của các tên tập tin trong tập tin patch. Thí dụ, tên tập tin trong tập tin patch là
/u/howard/src/blurfl/blurfl.c
-p0 sẽ dùng toàn bộ đường dẫn không thay đổi, -p1 cho u/howard/src/blurfl/blurfl.c tức bỏ slash đầu tiên, -p4 cho blurfl/blurfl.c, và nếu không chỉ định -p sẽ được blurfl.c. Giá trị theo sau p phụ thuộc vào thư mục hiện tại hoặc thư mục được chỉ định trong tuỳ chọn -d.

Đảo ngược một patch: dùng tuỳ chọn -R.

Tạo một patch (nếu dùng cvs):

cvs diff > mypatch.diff

Lệnh dd

dd là tiện ích sao chép standard input sang standard output. Dữ liệu input được đọc và viết bằng các block 512 byte. Nếu input read ngắn, input từ nhiều read gộp lại để tạo output block. Sau khi hoàn tất, dd hiển thị con số block input và output toàn bộ và từng phần và input record đã được cắt ngắn ra standard error output. Một số operands:
bs=n
Thiết lập block size của input và output là n byte.
count=n
Sao chép chỉ n input block.
ibs=n
Thiết lập input block size là n byte thay vì mặc định 512.
if=file
Đọc input từ file thay vì từ standard input.
iseek=n
Tìm trên input file n blocks. Đồng nghĩa với skip=n.
obs=n
Thiết lập output block size là n byte thay vì mặc định 512.
of=file
Viết output đến file thay vì standard output.
oseek=n
Tìm trên output file n block. Đồng nghĩa với seek=n.
seek=n
Tìm n block từ nơi bắt đầu của output trước khi sao chép.
skip=n
Bỏ qua n block từ nơi bắt đầu của input trước khi sao chép.
Một số thí dụ:

- Chép một đĩa mềm

Một đĩa mềm 3.5" thông thường có 18 sector/track, 2 head và 80 cylinder.

- Tạo boot image: trong các makefile của nhân Linux, ví dụ /usr/src/linux/arch/alpha/boot/Makefile, srmboot đưa ra lệnh

dd if=bootimage of=$(BOOTDEV) bs=512 seek=1 skip=1
Lệnh này sẽ bỏ qua 512 byte đầu tiên của tập tin bootimage (ngõ vào) (skip=1) và viết bắt đầu ở sector thứ hai của thiết bị $(BOOTDEV) (seek=1). Một cách dùng điển hình của dd là bỏ qua các header thực thi được và bắt đầu ghi ở giữa thiết bị, bỏ qua volume and partition datạ Cẩn thận khi sử dụng vì có thể gây mất dữ liệu.

- Tạo hình ảnh đĩa CD (chú ý rằng không mount /dev/cdrom)

dd if=/dev/cdrom of=cd_img.iso bs=2048
Xem thêm Sơ lược về ghi CD.

Tạo APT repository đơn giản

Dùng APT có thể tự động giải quyết vấn đề dependency. Có thể tạo repository đơn giản chứa các gói deb để dùng với APT, đặt trên máy cá nhân hoặc chia sẻ trên mạng.

Đầu tiên, tạo thư mục chứa các gói deb và đặt các gói deb vào đó. Dùng lệnh dpkg-scanpackages để tạo tập tin Packages.gz chứa thông tin về gói đó. Thí dụ, đang đứng ở thư mục chứa các gói deb:

dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
Với repository đơn giản không cần tập tin override như trường hợp này, /dev/null được dùng tại vị trí của tập tin đó.

Nếu muốn người dùng repository có thể sử dụng Pinning, có thể tạo thêm các tập tin Release.

Để dùng các gói, thêm vào /etc/apt/sources.list:

deb file:/đường/dẫn ./
nếu repository đặt trên máy; hoặc nếu đặt trên mạng:
deb http://địa.chỉ/đường/dẫn ./

.xsession-errors quá lớn

cat /dev/null > ~/.xsession-errors
và đưa vào cron script. Hoặc
rm -f ~/.xsession-errors
ln -s /dev/null .xsession-errors

Đồng hồ báo thức

Theo http://www.ids.org.au/~jam6/index.php?s=alarm+clock
sleep 5h && ogg123 alarm.ogg
sau 5 giờ sẽ phát tập tin alarm.org; hoặc
sleep 5h && watch -n 1 aplay /usr/share/sounds/gaim/redalert.wav
sau 5 giờ sẽ phát tập tin redalert.wav (đi kèm theo gaim) và lặp lại cách 1 giây.

Trên máy cần có chương trình ogg123, aplay, hoặc dùng một chương trình tương tự.

Có thể tạo một tập tin âm thanh ngẫu nhiên dùng để báo thức, lấy nguồn từ /proc/kcore, chứa thông tin bộ nhớ của hệ thống.

gst-launch-0.8 filesrc location=/proc/kcore ! vorbisenc ! filesink location=./alarm.ogg
lệnh này dùng gstreamer và cần quyền root.

xmms cũng có plugin xmms-alarm dùng làm đồng hồ báo thức.


Nghe wma với xmms

Dùng gói xmms-wma có tại http://mcmcc.bat.ru/xmms-wma/. Trên debian cần gói xmms-dev để make. File plugin là libwma.so có tại thư mục gốc; có thể cài thủ công bằng cách copy vô /usr/lib/xmms/Input hoặc ~/.xmms/Plugins/Input.

Một số lệnh với MySQL

tạo backup
mysqldump -u [username] -p[password] --opt [database] > [backup_file]
Tuỳ chọn --add-drop-table (có trong --opt) để xoá table có sẵn khi phục hồi backup (nếu không cần phải drop database trước khi phục hồi).
phục hồi từ một backup
mysql -u [username] -p[password] [database] < [backup_file]
tạo một database tên wp
CREATE DATABASE `wp` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Tuy nhiên có thể có vấn đề hiển thị với character set và collation ở trên. Thường mặc định với lệnh CREATE DATABASE `wp` ; sẽ tạo database có charset latin1, cholation latin1_swedish_ci, có lẽ tương thích tốt hơn về hiển thị tiếng Việt unicode.
hiển thị nội dung một table wp_posts
SELECT * FROM `wp_posts` ;
cập nhật (thay đổi) nội dung có id=1
UPDATE `wp_posts` SET `post_content` ='nội dung mới' WHERE `ID` =1 LIMIT 1 ;

Installing usb wireless card on Debian Lenny

1/ CNet CWD-854 Dongle, P/N: 18-1HGWD85CH.

2/ Linksys WUSB54G:

Note: D-Link DWL-G122: rev B - chipset rt2570; rev C - chipset rt73.

Ref:


Lâm Vĩnh Niên, 2004. Last change: Tue Oct 05 16:45:38 JST 2004