Pages

Wednesday, December 31, 2008

Giới thiệu về RPM

RPM là tên viết tắt của RedHat Package Manager, là một chương trình cho phép người dùng quản lý các phần mềm được cài đặt trên Linux một cách mềm dẻo và hữu dụng. Với RPM bạn có thể cài đặt các gói phần mềm một các tự động, có thể gỡ bỏ các phần mềm đã được cài một cách an toàn , có thể kiểm tra tính toàn vẹn của các chương trình, có thể tự đóng gói phần mềm riêng cho mì nh, có thể...rất nhiều...!

I- RPM với người dùng

1. Cài đặt phần mềm

Cú pháp đầy đủ là :

rpm -i (hoặc --install) [ các tuỳ chọ n ]

các tuỳ chọ n là :

-h (hoặc --hash) In kí tự ‘#’ trong quá trình cài đặt
--test Chỉ thử cài đặt, không cài thật--percent Hiện số phần trăm trong quá trình cài đặt
--excludedocs Không cài các tài liệu kèm theo gói
--includedocs Cài cả tài liệu đi kèm (ngầm định)
--replacepkgs Cài đè một bản mới lên gói đã cài đặt trước đó
--replacefiles Có thể chép đè lên file của gói khác
--force Bỏ qua sự xung đột giữa các gói và các file
--noscripts Không thực hiện các script pre-install và post-install
--prefix Ðổi thư mục cài đặt ngầm định của gói (nếu có thể)
--ignorearch Không kiểm tra dòng máy tính (i386, i686, noarch..)
--ignoreos Không kiểm tra hệ điều hành (OS)
--nodeps Không kiểm tra tính phụ thuộc (dependencies)
--ftpproxy Dùng máy tí nh như là một FTP proxy
--ftpport Dùng cổng làm FTP port

Khi một gói nào đó được cài đặt, chương trình rpm sẽ thực hiện các công việc sau :

- Kiểm tra tính phụ thuộc của gói. Một số gói không hoạt động đúng nếu không có một gói nào đó được cài đặt từ trước. Hoặc nó kiểm tra xem có làm thay đổi tính phụ thuộc của các gói đã được cài đặt trước hay không.

Kiểm tra tình trạng xung đột giữa các file. Trong phần này chương trình rpm phải thử cài đặt các file, sau đó kiểm tra xem có xung đột hay không, hoặc thử thay đổi các file cấu hình. Sau đó kiểm tra lại.

- Thực hiện các script trước lúc cài đặt. Một số gói trước khi được cài đặt phải thực hiện một số công việc nhất định nào đó (back up chẳng hạn). Ðây là các shell script được tạo ra bởi người đóng gói.

- Sửa lại các file cấu hì nh đang có trong hệ thống. Một trong những ưu điểm khác của RPM với các trình quản lý cài đặt khác là cách chúng xử lý các file cấu hình. Khi một phần mềm được cài đặt, chúng cần phải thay đổi một số file cấu hình có sẵn trong hệ thống, rpm không chép đè các file cấu hình mới lên các file cũ mà nó phân tích tình trạng của các file cũ để chỉ thực hiện các thay đổi cần thiết (xem phần sau)

- Bung nén các file từ gói cài đặt vào các vị trí thí ch hợp. Bước này mới thật sự là copy các file từ gói cài đặt vào hệ thống, sau đó các thuộc tính của file cũng được rpm xác lập.

- Thực hiện các script sau cài đặt. Tương tự như các script trước lúc cài đặt, bước này đối với một số gói cũng cần được thực hiện, ví dụ như chạy ldconfig để cho các thư viện liên kết động mới có thể được dùng ngay.

- Lưu lại tất cả các thông tin trên vào cơ sở dữ liệu. RPM có một cơ sở dữ liệu rất lớn lưu trữ tất cả các công việc mà nó thực hiện với các gói cùng các thông tin về các gói. Nó sẽ sử dụng cơ sở dữ liệu này để tra cứu thông tin về sau hoặc kiểm tra xung đột.

Ðể cài đặt một gói, đơn giản là dùng lệnh :

rpm -i

Nhớ là tên gói và tên file của gói là khác nhau ví dụ tên gói có thể là : eject-1.2-2 nhưng tên file của gói lại là eject-1.2-2.i386.rpm

Các tùy chọn:

- Thay vì chỉ ra tên file cụ thể nằm trong hệ thống file của máy tính, ta có thể chỉ ra một URL chứa gói cài đặt. Ví dụ :

rpm -i ftp://ftp.redhat.com/RPMS/example-1.0-2.noarch.rpm

Có thể một lúc nào đó bạn cần phải cung cấp cả tên người dùng và mật khẩu để truy cập file đó, lúc đó cần một URL đầy đủ như sau :

ftp://elnino:passwords@ftp.redhat.com/RPMS/example-1.0-2.noarch.rpm

Nhưng xem ra để cho mật khẩu hiện lên như vậy là điều không nên. Bạn có thể chỉ cần cung cấp tên người dùng trong URL, rpm sẽ hỏi bạn mật khẩu và lúc đó mới nhập mật khẩu theo cách không hiện lên màn hình.

- Thông thường thì chỉ cần một dòng lệnh rpm -i nh- vậy là đủ. Nó sẽ thực hiện cài đặt mà không hiện gì ra màn hình cả, trừ khi có lỗi khi cài đặt. Nếu muốn hiện thêm một số thông tin bạn có thể thêm các tùy chọ n -v,-h hoặc -vv, hoặc --percent cứ thử xem.

- Có lúc bạn chỉ thử cài một gói nào đó để xem nó có xung đột hoặc cần một file nào đặc biệt không. Hãy dùng tùy chọn --test

- Có lúc một gói nào đó bị hỏng hoặc mất một số file cần cài lại. Bạn có thể dùng thêm tùy chọ n --replacepkgs. (Không phải là nâng cấp, bạn phải cài lại đúng gói đó theo đúng version và release)

- Một gói nào đó chứa một file mà file đó trong hệ thống đang thuộc về một gói khác (cơ sở dữ liệu của rpm lưu trữ tất các những thông tin này). Khi cài gói mới, rpm sẽ cảnh báo sự xung đột file này và không thực hiện cài đặt.

Nhưng nếu cần thiết phải chép đè như vậy thì hãy dùng thêm tùy chọ n --replacefiles (một file backup sẽ được rpm tạo ra *.rpmsave). Cảnh giác với điều này vì nếu một lúc nào đó bạn xóa gói cài sau ra khỏi hệ thống, file bị ghi đè kia tất nhiên sẽ biến mất. Lúc đó cần phục hồi lại bằng file .rpmsave.

- Khi một gói nào đó (A chẳng hạn) phụ thuộc vào sự tồn tại của một gói nào đó có trước (ví dụ là B). Bạn có thể sẽ không cài được gói A. Nhưng nếu bạn vẫn muốn cài gói A trước, rồi lúc nào đó cài gói B sau thì có thể dùng tùy chọ n --nodeps . Hãy lợi dụng tùy chọn này khi bạn không biết thứ tự của các gói khi cài đặt.

- Thông thường các gói cài đặt sẽ cài đặt các file của mì nh vào một số thư mục nhất định nào đó trong hệ thống. Tuy nhiên có một số phần mềm cho phép người dùng cài đặt vào một vị trí khác (relocateable). Lúc đó bạn phải thêm tùy chọn --prefix vào trong câu lệnh rpm -i.

- Tùy chọn --noscript : RPM thật sự còn làm nhiều công việc hơn là chỉ copy các file đơn thuần. Nó có các mã thi hành cần thiết trước và sau cài đặt, và điều này rất có ý nghĩa với sự hoạt động của một số phần mềm . Nhưng có lúc oái oăm nào đó bạn biết thừa là các script đó làm gì và không muốn chúng thực hiện thì hãy thêm tùy chọn --noscript.

2. Xóa một gói ra khỏi hệ thống

Ðể xóa một gói ra khỏi hệ thống, dùng lệnh :

rpm -e (hoặc --erase) [ các tùy chọ n ]

Các tùy chọ n :

--test Thử xóa, không xóa thực sự.
--noscripts Không thực hiện các mã pre-uninstall và post-uninstall
--nodeps Không kiểm tra tí nh phụ thuộc.

Khi một gói được xóa khỏi hệ thống, rpm thực hiện các công việc sau :

- Kiểm tra xem có một gói nào trong hệ thống phụ thuộc vào gói sẽ bị xóa không.
- Thực hiện script pre-uninstall nếu có.
- Kiểm tra các file cấu hì nh có bị thay đổi không, nếu có sẽ lưu lại một bản copy.
- Tra cứu cơ sở dữ liệu rpm để xóa các file của gói đó.
- Thực hiện các script post-uninstall nếu có.
- Xóa các thông tin liên quan đến các gói trong cơ sở dữ liệu.

3. Nâng cấp một gói

Nâng cấp một gói cách thức cũng tương tự như cài đặt gói. Chỉ khác là tham số không phải -i mà là -U .

Nhưng cần chú ý : bạn có một file .rpm, sẽ có 2 khả năng, một là phần mềm đó hoàn toàn chưa có trên hệ thống của bạn, như vậy bạn chọn tham số -i để cài mới, nếu phần mềm đó đã tồn tại trong hệ thống nhưng với phiên bản cũ hơn, bạn phải chọn tùy chọn -U , nếu chọn -i sẽ xảy ra tì nh trạng xung đột các file giữa gói cũ và gói mới.

Thêm một chú ý nữa là đôi khi bạn cần cài một gói cũ hơn đè lên một gói có phiên bản mới hơn đang tồn tại trong hệ thống, lúc này bạn cần thêm tham số --oldpackage

4. Lấy thông tin về các package

Một trong những điểm thú vị nhất về rpm là nó luôn sẵn sàng cung cấp những thông tin cần thiết về toàn bộ các gói có trong hệ thống của bạn.

Cú pháp đầy đủ như sau :

rpm -q (hoặc --query) [ tùy chọ n ]

+ Chọ n các gói cần cung cấp thông tin (gọ i là query cho tiện):
* pkg1 pkg2 .. pkgN Danh sách các gói cần query (đã cài đặt).
* -p Query một file rpm có thể chưa cài.
* -f Query gói nào chứa file .
* -a Query tất cả các gói đã được cài đặt.
* --whatprovides Query gói nào cung cấp .
* -g Query gói nào thuộc nhóm .
* --whatrequires Query gói nào cần đến .

+Chọ n loại thông tin cần hiển thị :
* (Bỏ trống các tham số sau) Hiện ra tên gói.
* -i Hiện các thông tin chung về gói.
* -l Hiện danh sách các file trong gói.
* -c Hiện danh sách các file cấu hì nh.
* -d Hiện danh sách các file tài liệu.
* -s Hiện danh sách các file cùng với trạng thái.
* --script Hiện ra các script install, uninstall và verify.
* --queryformat Hiện thông tin theo một dạng riêng yêu cầu.
* --dumb Hiện tất cả các thông tin của từng file.
* --provides Hiện các file dùng chung mà gói cung cấp.
* --requires Hiện các file (gói) mà gói cần có.

Có rất nhiều tình huống cần đến việc lấy thông tin từ một hoặc một vài gói nào đó. Chẳng hạn như bạn gặp một file bất kỳ trong hệ thống. Bạn muốn biết file đó thuộc về gói nào, hãy dùng lệnh : rpm -qf . Hoặc bạn có một gói chương trình, bạn không biết nó có gì , chức năng của nó như thế nào... , không cần cài đặt nó, bằng lệng sau bạn có thể có các thông tin đó : rpm -qilp . Bạn có một phần mềm đã được cài đặt trong hệ thống từ rất lâu rồi nhưng không biết nó cài vào đâu và tài liệu ở đâu.v.v. tất cả các thông tin đó đều được đáp ứng bằng rpm -q.

Tips : Bạn có thể sinh ra một danh sách các tên gói đã được cài đặt trong hệ thống bằng lệnh rpm -qa > tên_file_kết_quả . Nếu cần nhiều thông tin hơn, cứ việc thêm các tham số cần thiết vào.

Tips : Bạn có thể có một cách hiển thị thông tin riêng của mì nh. Ví dụ như chỉ đưa ra tên gói và dung lượng mà không đưa ra các thông tin khác (không dùng -i). Hãy dùng thêm --queryformat ‘%{NAME}\n%{SIZE}\n\n’ , chú ý về khuôn dạng của xâu format :

- Tất cả xâu queryformat phải được đặt trong một cặp nháy đơn
- Các thẻ được đặt trong cặp {}, trước mỗi thẻ cần có ký tự %.
- Bạn có thể quy đị nh độ rộng của các trường thông tin cần đưa ra bằng cách thêm một con số n vào trước tên thẻ (sau ký tự %).

Tips : Nhiều khi bạn không rõ có bao nhiêu loại thẻ l\và tên của chúng thế nào, hãy dùng rpm -querytag . Sẽ có rất nhiều thẻ hữu dụng, hãy thử lệnh đó.

Tips : Bạn cần tì m một số gói có một xâu nào đó trong tên, chẳng hạn cần tìm các gói có tên tận cùng là sh, hãy dùng lệnh :

rpm -qa | grep -i sh

Bạn sẽ được ash, bash csh..v.v.

Tips : Dành cho những người muốn xây dựng cơ sở dữ liệu về rpm. Chẳng hạn như lập một bảng hai cột, một cột là tên gói, một cột là thông tin mô tả ngắn gọn (summary hoặc description đều được) :

rpm -qa --queryformat ‘%{NAME}#%{Summary}\n’ > result

Sau đó dùng MS Word convert nội dung tệp result sang table với sapate text at #.

4. Dùng RPM để kiểm tra các gói đã cài đặt

Sau một thời gian vận hành hệ thống, có thể có lúc bạn tự hỏi : "Hệ thống của mì nh có gì trục trặc không nhỉ, có file nào bị lỗi không ? Trạng thái của các phần mềm đang chạy như thế nào ?” Tất cả các vấn đề đó đều được giải quyết ổn thỏa bằng rpm -V.

Cú pháp đầy đủ là :

rpm -V ( --verify, -y) [ các tùy chọ n ]

Các tùy chọn có thể là :

* pkg1 .. pkgN Danh sách các gói cần kiểm tra.
* -p Kiểm tra chí nh file .rpm (không dùng rpmdb).
* -f Kiểm tra gói nào chứa file .
* -a Kiểm tra tất cả các gói.
* -g Kiểm tra các gói thuộc về nhóm .
* --noscripts Không chạy script kiểm tra.
* --nodeps Không kiểm tra tí nh phụ thuộc.
* --nofiles Không kiểm tra thuộc tí nh của file.

Như đã nói ở các phần trước, toàn bộ thông tin về các gói đều được lưu trữ trong cơ sở dữ liệu của rpm. Kể cả là nội dung của từng file ( rpm sử dụng thuật toán MD5 để lưu trữ thông tin về nội dung của một file ). Do đó, mọi sự thay đổi của các gói rpm đều được lưu lại. Lệnh rpm -V sẽ kiểm tra lại tất cả các thông tin đó xem có khớp với ban đầu hay không. Khi có một lỗi nào đó sảy ra, rpm -V sẽ cung cấp các thông tin về lỗi phát hiện được, có các loại lỗi sau :

1. S Kích thước file.
2. M File mode.
3. 5 MD5 check sum.
4. D Số thiết bị (minor và major).
5. L Link file.
6. U Người sở hữu file.
7. G Nhóm sở hữu file.
8. T Thời điểm thay đổi nội dung của file.
9. c File cấu hì nh.
10. missing Thiếu file.
11. Một file cụ thể bị lỗi.

- Một cách kiểm tra khác :

Khi bạn có một file .rpm. Bạn đang phân vân xem có nên cài nó hay không, bạn đang không biết là liệu gói đó có là nguyên bản hay không ? Có bị một tay hacker nào đó thay đổi thông tin cũng như chương trì nh trong đó không ?. Bạn cần đến lệnh sau :

rpm -K (hoặc --checksig) [ các tùy chọ n ]

ở đây chỉ có một tùy chọ n riêng là --nopgp : không kiểm tra chữ ký PGP.

Khi bạn lấy một phần mềm nào đó về, nếu hợp pháp, bạn sẽ được nhà sản xuất cung cấp một file chữ ký số PGP. Hãy lưu thông tin này vào cơ sở dữ liệu của pgp trong hệ thống của bạn, bằng lệnh sau :

pgp -ka RPM-PGP-KEY ./somekeys.pgp

lúc này chữ ký đó đã có trong hệ thống của bạn. Khi bạn gặp một phần mềm nào đó, họ (ai đó) nói rằng đó là phần mềm của một hãng A nổi tiếng nào đó, mà bạn đã có chữ ký này lưu trong hệ thống rồi..Hãy kiểm tra lời họ nói :

rpm -K

Lệnh trên sẽ so sánh chữ ký số pgp của gói với chữ ký lưu trong hệ thống của bạn để xem có đúng là nhà sản xuất nọ đã đóng gói nó không. Tiếp theo nó kiểm tra kích cỡ file, kiểm tra MD5 checksum..để đảm bảo là file .rpm đó không bị hỏng trên đường truyền (qua internet chẳng hạn). Không nhất thiết là mỗi gói đều phải được ký với một chữ ký PGP nào đó, chi tiết hơn một chút về PGP sẽ được đề cập đến ở phần sau.

II- RPM cho người đóng gói phần mềm

Có hai kiểu đóng gói phần mềm, một là đóng gói chương trì nh (binary, hai là đóng gói mã nguồn (source code). Một gói binary là một gói chương trì nh thực sự, cài nó vào hệ thống tức là bạn cài đặt một phần mềm. Còn gói source code là một gói chứa các file mã nguồn của một phần mềm nào đó. Thông thường một gói source code sẽ có một file nén, các file patch, và một file .spec để xây dựng lên gói binary. Chuyện có một gói source code mà xây dựng thành một gói binary là vấn đề cũng cần phải bàn kỹ hơn...

Trước khi đưa ra cú pháp của lệnh đóng gói rpm, cần đề cập đền một số vấn đề sau.

1- Cấu trúc thư mục dành cho quá trì nh đóng gói

RPM cần một số thư mục đặc biệt để phục vụ cho quá trình đóng gói (RedHat ngầm định một thư mục gốc, đó là /usr/src/redhat (Ta sẽ thay đổi điều này, sẽ đề cập đến trong file rpmrc ở phần cuối !!!).

* /usr/src/redhat/SOURCE Chứa các file source code (file nén), các file patch, các file icon. Nếu ta cài đặt một gói source code, nó sẽ ném các file mã nguồn vào đây.

* /usr/src/redhat/SPECS Chứa các file .spec điều khiển quá trình xây dựng gói. Khi cài một gói source code, file .spec của gói binary cũng được copy vào đây.

* /usr/src/redhat/BUILD Thư mục diễn ra qua trình xây dựng gói

* /usr/src/redhat/RPMS Thư mục mà các gói binary được tạo ra sau quá trình xây dựng. Thật ra còn có các thư mục cấp nhỏ hơn là i386, i686, noarch chứa gói ứng với từng hệ thống cụ thể.

* /usr/src/redhat/SRPMS Thư mục mà các gói source code được tạo ra đặt ở đây.

2- File .spec trái tim của quá trì nh đóng gói rpm

Ðể đóng gói được một phần mềm, rpm cần đến một file mô tả tất cả các quá trình nó cần tiến hành, tất cả các thông tin liên quan đến phần mềm đó, file .spec là một file text thông thường (bạn có thể nghĩ file .spec như là cái gì đó gần giống với Makefile).

Có thể chia nó ra thành các phần sau :

Phần thông tin chung

Ðây là phần chứa tất cả các thông tin về gói mà bạn xây dựng. Nó sẽ được hiện ra khi người dùng query với tham số -i nh- đã nói ở trên.

Phần này bao gồm :

Name: Tên gói (tên chương trì nh), tên này sẽ được kèm theo trong tên file rpm.

Version: Số hiệu phiên bản, số này nên gồm một số phiên bản chính (major) một dấu chấm "." và hai số phiên bản nhỏ (minor). Hai số này sẽ được ghép vào trong tên file rpm tạo ra.

Release: Lần phát hành, thường mỗi lần đóng gói người ta lại tăng số này lên (không nhất thiết là phải thay đổi nội dung của phần mềm). Số này cũng được ghép kèm vào tên file rpm.

Group: Tên nhóm, tên này chỉ ra một nhóm của phần mềm đó. Khi người dùng cài gói vào hệ thống của họ , gói sẽ thuộc nhóm đó. Tên nhóm cha phân cách với nhóm con bởi dấu "/". Về lý thuyết thì ta có thể đặt bất cứ cái tên nhóm nào mà ta muốn, nhưng nên chú ý tới cách mà hệ thống sẽ dùng phần mềm này sắp xếp các gói, nhờ đó mà người dùng của chúng ta có thể query dễ dàng các thông tin về gói.

Copyright: Bản quyền, đây là thông tin xác đị nh bản quyền của phần mềm, có GNU hay không, có thương mại hay không...

Summary: Là các thông tin ngắn gọ n nói lên chức năng, đặc điểm của phần mềm, thông thường chỉ nằm trên một dòng (thông thường), nếu có xuống dòng thì cũng không chứa ký tự xuống dòng \n.

Distribution: Nhà phân phối - tên của nhà phân phối bản Linux mà gói này được dùng trong bản Linux đó.

Vendor: Nhà sản xuất - tên của nhà sản xuất phần mềm, là tổ chức sẽ chịu trách nhiệm về sản phẩm này.

Packager: Người đóng gói, hoặc tổ chức thực hiện việc đóng gói phần mềm.

Source: Nơi lưu trữ source code mà người dùng có thể lấy sau này (một URL).

Do đặc tí nh của các chương trình thuộc khuôn khổ GNU, một phần mềm thường có cả source code được cung cấp miễn phí . Ðây thông thường là một địa chỉ url có tận cùng là một tên file .src.rpm. Tên của gói source này phải trùng với tên file đặt trong thư mục /.../SOURCE. Cần chính xác nếu ta đị nh build gói source.

URL: Là đị a chỉ chứa các thông tin liên quan đến phầm mềm này, là nơi người dùng sẽ nhận được các thông tin về phần mềm đó một cách trực tuyến.

%description: Là mô tả chi tiết hơn về gói phần mềm đó, nó có thể chứa nhiều dòng, có thể có các ký tự xuống dòng.

Provides: Các file dùng chung có thể có ích cho các chương trình khác (thư viện động chẳng hạn..

Require: Cần một số gói nào đó có trước, hoặc một số file nhất đị nh nào đó (phần lớn là các thư viện động)..

Conflict: Một hoặc một số chương trì nh nào đó xung đột với phần mềm này, cần phải chỉ ra chúng ở đây.!

Còn rất nhiều tag khác nữa (xem trong maximum rpm trang 397)...

Phần chứa các script

Phần này chia thành 2 loại script khác nhau, một là loại script cần cho quá trình xây dựng gói, hai là script cần cho quá trình cài đặt.

- Các script cần cho quá trì nh đóng gói :

%prep
........

Phần này là các script chuẩn bị cho quá trình đóng gói (nó có thể chứa các macro rất tiện lợi mà rpm cung cấp), nhưng nếu bạn định đóng gói lại một chương trình đang chạy ổn định trong hệ thống thì phần này sẽ không có gì ..! Oái oăm thay, công việc thật sự hiếm khi lại như vậy. Nhiều khi bạn phải đóng gói một phần mềm từ source code .? Sẽ liên quan đến Makefile, config, patch... Ðó là cả một mảng vấn đề lớn,,,? tôi sẽ dần tìm hiểu, sorry! Xin hãy tạm thời chấp nhận ở mức đơn giản này..!

%build
........

Ðã có phần %prep dường như là đủ chỗ cho bạn đặt các script của mình rồi nhưng để cho mọi đoạn mã được rõ ràng, phần này vẫn là các script giúp bạn tiến hành xây dựng gói rpm từ source code. Thông thường chỉ là một lệnh make (càng làm mới càng thấy công cụ make thật quá tuyệt vời).

Nhưng này !! nếu bạn mới tập tành build rpm từ các file đang chạy ổn định trong hệ thống thì bỏ trống nó và cả phần dưới đây nhé ...!* ! Thank and sorry.!

%install
.........

Lại phải cám ơn công cụ make một lần nữa ! ở đây cũng chỉ cần một lệnh make install có lẽ là đủ cho nhiều trường hợp. (Chú ý đọc dòng in ngiêng ở trên!)

%clean
........

Nghe cái tên đã biết nó là gì ..! Thật vậy, nếu trong quá trình đóng gói, bạn có để lại rác rưởi gì thì hãy dọn dẹp đi bằng các script trong phần này.

- Các script dành cho quá trì nh cài đặt gói :

%pre
.......

Phần này là đoạn script cần thi hành trước khi gói thật sự cài đặt. Theo kiểu những chuyên gia dùng UNIX thì hiếm khi có gì phải làm ở phần này. Nhưng nếu chúng ta định cung cấp phần mềm cho enduser thì bạn hãy cứ thoải mái thêm các script thông báo gì đó, hỏi gì đó..ở đây...!!!?

%post
........

Ðoạn script sau phần này sẽ được thực hiện sau khi gói đã được cài đặt thành công. Có nhiều lý do hơn để viết script ở đoạn này, bạn có thể chạy ldconfig để các thư viện động có thể được dùng ngay, có thể cập nhật lại các file cấu hình, các init script, có thể restart lại một số tiến trình deamon nào đó để có thể dùng ngay được mà không cần reboot máy tí nh...

%preun

Ðến một lúc nào đó phần mềm của bạn không được user tin dùng nữa thì họ sẽ loại bỏ nó. Trước khi họ thật sự loại bỏ nó, bạn thích là gì ở đây thì tuỳ...!

%postun

Lúc này thì phần mềm của bạn ở hệ thống đó đã tiêu rồi...!! Bạn cần phải trả lại trạng thái cũ như trước khi gói đó chưa được cài đặt. Hãy nhớ là bạn đã sửa những file nào, đã thêm gì vào đâu, rồi giải quyết hậu quả ở đây...!! Sau đó chớ quên chạy ldconfig nếu như bạn có một thư viện dùng chung nào đó, restart lại một số dịch vụ có liên quan, nói chung là không nên để người dùng phải reboot lại hệ thống.

Ngoài ra còn một phần script nữa là :

%verifyscript

..... là các script mà bạn muốn chạy để thực hiện các công việc ngoài các công việc mà lệnh rpm -V làm..Ví dụ như là kiểm tra nội dung một file cấu hì nh nào đó không phải thuộc gói của bạn..v.v.

Ngoài ra (lại ngoài ra), còn có các macro %setup và %patch do rpm cung cấp giúp bạn tiện lợi hơn trong quá trì nh xây dựng gói rpm

Phần danh sách các file

%files

Phần này bạn phải chỉ rõ danh sách các file mà gói của bạn có, mỗi file trên một dòng.

Chẳng hạn :

/usr/bin/myprogram
/usr/lib/mylib.so

-Nếu có file cấu hình thì thêm %config vào trước tên file đó, ví dụ :

%config /etc/myprogram.conf

-Nếu là file tài liệu thì thêm %doc vào trước tên file đó, ví dụ :

%doc /usr/doc/myprogram/README

Nếu bạn muốn kèm theo cả thuộc tính file, hãy thêm %attr(filemode,owner,group) vào trước tên mỗi file. Thường thì owner,

group đều là root (hiếm khi ai đó đóng gói phần mềm chỉ riêng cho một người dùng cụ thể trên một hệ thống cụ thể..!)

Tips: Bạn có thấy là việc sinh ra một danh sách file loằng ngoằng như vậy là rất chán không ? Tôi chưa tìm hiểu rõ về việc sinh ra danh sách file từ source code (mà tôi đoán là có tool--hãy thử autoconf). Nhưng nếu bạn không chê mẹo nhỏ sau thì hãy dùng :

- Tạo một thư mục temp nào đó, coi nó như là /

- Chép tất cả các file thuộc gói vào trong thư mục temp đó nhưng theo cấu trúc mà nó thật sự sẽ tồn tại trong hệ thống (có /usr/bin, có /etc...)

- Tại thư mục temp, dùng lệnh find > list

- Bạn sẽ có một danh sách các file trong file list. Hãy edit lại một chút bằng cách loại bỏ tất cả các xâu “./” ở đầu mỗi dòng, nhanh thôi mà..! (bằng mc)

- Sau đó dùng tí nh năng chép vào clipboard của mc (^+insert).

- Mở file .spec cũng bằng mc, paste vào sau %files (Shift+insert).

Ðược chứ..!

Viết một thôi một hồi như vậy, bây giờ mới đến lúc bạn cần phải build :

3- Cú pháp lệnh rpm -b :

rpm -b [các tuỳ chọ n]

là một trong các ký tự sau :

* p Thi hành %prep.
* c Thi hành %prep và %build
* i Thi hành %prep, %build và %install
* b Thi hành %prep, %build, %install và đóng gói binary.
* a Thi hành %prep, %build, %install đóng gói cả binary và source
* l Chỉ kiểm tra %files (kiểm tra danh sách file)
* s Chỉ đóng gói source code.

Các tuỳ chọn là :

* --test Chỉ thử đóng gói.
* --clean Dọ n dẹp sau khi đóng gói.
* --sign Ký chữ ký số PGP vào gói.
* --buildroot Thay thư mục BUILD ngầm định.
* --buildarch Ðóng gói riêng cho một hệ thống nhất định (i386, i686, hoặc noarch)
* --buildos Ðóng gói riền cho một hệ điều hành cụ thể (Linux, Sun Solaris...)

Còn rất nhiều phần thú vị nữa chưa viết hết được :

-RPM cho người lập trì nh với các hàm giao tiếp với các ngôn ngữ lập trì nh như C, python..

-Tạo và ký chữ ký số vào gói rpm.....

Tôi sẽ cố gắng cùng một vài người nữa hoàn thành tài liệu này sao cho thật đầy đủ.

Sunday, December 28, 2008

Tổng quát cách cài đặt gói và phần mềm trên Linux

Xin tổng hợp cách cài đặt phần mềm và các gói trên Linux để các bạn có thể tiện theo dõi.
Khi release các gói thường có các dạng sau:
- .tar.gz hoặc .tar.bz2
- .rpm (đối với debian là .deb)

Đối với các file dạng .tar.gz và .tar.bz2 thì lấy về xong gõ:

đối với .gz:
gunzip file_name.tar.gz && tar -xf file_name.tar

đối với .bz2
bunzip2 file_name.tar.bz2 && tar -xf file_name.tar

nó sẽ bung ra thành một thư mục có tên file_name.

Sau đó tùy theo cái gói đó nó release ra sao mà làm theo nó. Nếu có file configure thì chuyển vào thư mục đó và gõ :

1. Buoc 1:
./configure

nếu muốn chỉ định nơi sẽ cài gói đó thay cho mặc định thì gõ:
./configure --prefix=/<đường dẫn>

2. Sau đó:
make

3. rồi:
make install

Đây là tổng quát của quá trình cài 1 gói trong Linux, đối với một vài gói khi release nó có thể đã confige sẵn rồi, không có file configure nữa thì chỉ cần làm 2 bước sau thôi.
Cũng có thể có một vài gói không có configure gì hết mà nó gói hết script trong một file install, chỉ việc chạy nó như là chạy setup trên Win vậy. Việc này thì các bạn phải đọc readme để biết sẽ phải làm sao. Trên đây là release dạng source. Còn đối với các gói dạng .rpm là dạng binary đã built sẵn thì làm như sau:

rpm -Uivh tên_gói.rpm

Tham số -U có nghĩa là update, cái này không cần nếu bạn cài mới.
Các gói rpm sẽ được cài mặc định vào nơi mà lúc release người ta chỉ định, muốn biết nó được cài vào đâu bạn phải đọc document đi kèm, thường là nó sẽ tạo link hoặc file chạy trong /usr/bin

Sau khi cài xong gói rpm, nếu muốn tìm xem nó được cài vào đâu bạn có thể dùng lệnh sau:
rpm -ql

Nếu không nhớ chính xác tên gói mà chỉ nhớ một phần thì bạn có thể tìm ra bằng cách:
rpm -qa | grep

Khi cài 1 gói, có thể nó sẽ báo thiếu gì đó, mún bỏ qua thì thêm option để bỏ qua check dependency --no-deps :
rpm --no-deps ...

Câu lệnh trên là ta query location (-l) và available (-a) đối với các gói.

Trên đây là 2 động tác thường dùng nhất đối với người dùng Lix và sự thật là đối với những người mới dùng thì cách thứ 1 đối với gói source khi cài sẽ gặp không ít khó khăn, các bạn nên lấy gói rpm về cài sẽ dễ dàng hơn nhiều.

Một số trang để down rpm:
www.freshrpms.net
rpm.livna.org
www.freshmeat.net
www.rpmfind.net

Hoặc lên chính trang của distro mà bạn đang dùng để search. rpm hiện nay trên Internet nhiều vô kể và mirror cũng nhiều vô kể, các bạn hãy vào google và search từ khóa "fedora rpm" thử xem

2/
YUM là viết tắt của chữ "Yellow dog, Updater, Modified", nó là một cách để cài đặt phần mềm rất dễ dàng đơn giản, khi các bạn down cái gói source về để build sẽ gặp phải những trở ngại như thiếu các gói cần thiết - mà đây lại là công việc tốn thời gian công sức nhất của chúng ta, thay vào đó, YUM sẽ tự động tìm các gói cần thiết và cài luôn cho chúng ta, rất nhẹ nhàng.
Yêu cầu để sử dụng yum là: bạn phải connect vào internet để nó down phần mềm về cho bạn. Các bạn này không có net thì đừng đọc bài này ........ hic

Đầu tiên các bạn download nó về tại đây (http://linux.duke.edu/projects/yum/download/2.4/yum-2.4.2.tar.gz). Phiên bản stable hiện tại là 2.4.2. Hiện đã có bản 2.5.x nhưng đó là phiên bản developer, các bạn nếu không có ý định sẽ hỗ trợ phát hiện bugs và phát triển nó thì đừng dùng.
Sau khi lấy về các bạn tiến hành cài đặt như ở trên đã hướng dẫn. Sau đó bạn hãy bỏ cái file /etc/yum.conf cũ của bạn đi và thay bằng file này (http://www.fedorafaq.org/samples/yum.conf). Các bạn cũng có thể không cần thay nếu các bạn đọc hướng dẫn config yum tại đây (http://wiki.linux.duke.edu/ManYumConf). File ở trên là một file mẫu cho những người mới dùng và không muốn phải làm nhiều.
Trong file config đó có một chỗ khá quan trọng đó là tham số

gpgcheck = x

Tham số này cho biết sẽ kiểm tra cái Public key hay không mỗi khi cài đặt phần mềm. Public key này để chứng nhận rằng cái gói rpm đó được lấy từ đúng nguồn tin cậy, không phải là ở một nơi cù bơ cù bất nào đó. Nếu bạn để là "0" nó sẽ không kiểm tra, bạn sẽ đỡ rắc rối khi cài đặt nhưng nguy hiểm. Nếu bạn để là "1" thì mỗi khi cài nó sẽ kiểm tra, và muốn cho nó biết có gì để kiểm tra bạn phải import Public key từ các nơi cung cấp rpm.

Ex: để cung cấp Public key cho yum từ thằng livna, bạn gõ:

rpm --import http://rpm.livna.org/RPM-LIVNA-GPG-KEY-i386

Các public key này các bạn search trực tiếp trong trang cung cấp rpm sẽ có.

Vậy là xong, bây giờ bạn có thể dùng yum. Cách sử dụng rất đơn giản.

Để kiểm tra xem một phần mềm nào đó có bản update chưa:
yum check-update

Để cài đặt một phần mềm:
yum install

Và còn rất nhiều, bạn chạy
yum --help

để biết thêm, ở trên là 2 câu lệnh hay dùng nhất. Còn yum GUI thì dễ rồi, các bạn có thể tự xem tại đây (http://linux.rasmil.dk/cms/modules/dokuwiki/doku.php?id=yumex:yumex) hoặc dùng yum để cài :

yum install yumex

(Sưu tầm)

Wednesday, December 24, 2008

Howto: Linux Add User To Group

How can I add a user to a group under Linux operating system?

You can use useradd or usermod commands to add a user to a group. useradd command creates a new user or update default new user information. usermod command modifies a user account i.e. it is useful to add user to existing group. There are two types of group. First is primary user group and other is secondary group. All user account related information is stored in /etc/passwd, /etc/shadow and /etc/group files to store user information.


useradd example - Add a new user to secondary group

Use useradd command to add new users to existing group (or create a new group and then add user). If group does not exist, create it. Syntax:

useradd -G {group-name} username

Create a new user called vivek and add it to group called developers. First login as a root user (make sure group developers exists), enter:

# grep developers /etc/group
Output:

developers:x:1124:

If you do not see any output then you need to add group developers using groupadd command:

# groupadd developers

Next, add a user called vivek to group developers:
# useradd -G developers vivek

Setup password for user vivek:
# passwd vivek

Ensure that user added properly to group developers:
# id vivekOutput:

uid=1122(vivek) gid=1125(vivek) groups=1125(vivek),1124(developers)

Please note that capital G (-G) option add user to a list of supplementary groups. Each group is separated from the next by a comma, with no intervening whitespace. For example, add user jerry to groups admins, ftp, www, and developers, enter:

# useradd -G admins,ftp,www,developers jerry
useradd example - Add a new user to primary group

To add a user tony to group developers use following command:
# useradd -g developers tony

# id tony
uid=1123(tony) gid=1124(developers) groups=1124(developers)
Please note that small -g option add user to initial login group (primary group). The group name must exist. A group number must refer to an already existing group.
usermod example - Add a existing user to existing group

Add existing user tony to ftp supplementary/secondary group with usermod command using -a option ~ i.e. add the user to the supplemental group(s). Use only with -G option :
# usermod -a -G ftp tonyChange existing user tony primary group to www:
# usermod -g www tony

Friday, December 12, 2008

Các lệnh command trong Linux thường dùng

Các lệnh command trong Linux

Part1: System information

arch hiển thị cấu trúc của máy(1)
uname -m hiển thị cấu trúc của máy(2)
uname -r hiển thị phiên bản kernel đang sử dụng
dmidecode -q Hiển thị hệ thống phần cứng - (SMBIOS / DMI)
hdparm -i /dev/hda trình bày những đặc trưng của 1 ổ cứng ( lưu ý, hard disk cap ATA là hda còn SATA là sda )

yum --enablerepo=[centosplus] : cai goi mo rong

hdparm -tT /dev/sda test thử ổ cứng
cat /proc/cpu hiển thị thông tin CPU
cat /proc/interrupts hiển thị sự ngắt của các tiến trình
cat /proc/meminfo hiển thị bộ nhớ đang sử dụng
cat /proc/swaps hiển thị file ở phân vùng swap
cat /proc/version hiển thị phiên bản kernel
cat /proc/net/dev cho thấy card mạng và thông tin thống kê
cat /proc/mounts hiển thị file hệ thống được sử dụng cho mounts
lspci -tv hiển thị thiết bị PCIdisplay PCI devices
lsusb -tv hiển thị thiết bị USB
date hiển thị ngày hệ thống

cal 2007 hiển thị lịch năm 2007
date 041217002007.00 thiết lập ngày và giờ - MonthDayhoursMinutesYear.Seconds
clock -w lưu thay đổi ngày trên BIOS

Part2: Shutdown (Restart of a system and Logout )

shutdown -h now tắt máy
init 0 tắt máy(2)
telinit 0 tắt máy(3)
shutdown -h hours:minutes & tắt máy sau theo thời gian đợi
shutdown -c hủy lện tắt máy theo thời gian
shutdown -r now khởi đọng lại(1)
reboot khởi động lại(2)
logout rời khỏi phiên làm việc

Part3: Files and Directory

cd /home đến thư mục '/ home'
cd .. quay ngược lại 1 bậc
cd ../.. quay ngược lại 2 bậc
cd đến thư mục home
cd ~user1 đến thư mục home
cd - trở lại thư mục trước đây
pwd hiển thị đường dẫn thư mục hiện hành
ls hiển thị tập tin và thư mục
ls -F hiển thị tập tin trong thư mục
ls -l hiển thị chi tiết tập tin và thư mục
ls -a hiển thị tập tin ẩn
ls *[0-9]* hiển thị tập tin và thư mục có chứa số
tree hiển thị tập tin và thư mục theo cấu trúc cây
lstree hiển thị tập tin và thư mục theo cấu trúc cây(2)
mkdir dir1 tạo 1 thư mục có tên 'dir1'
mkdir dir1 dir2 tạo cùng lúc 2 thư mục
mkdir -p /tmp/dir1/dir2 tạo ra 1 cây thư mục
rm -f file1 xóa tập tin có tên 'file1'
rmdir dir1 xóa thư mục có tên 'dir1'
rm -rf dir1 xóa thư mục 'dir1' và tất cả các tập tin trong thư mục đó
rm -rf dir1 dir2 xóa cùng lúc 2 thư thư mục và tất cả các tập tin trong hai thư mục đó
mv dir1 new_dir đổi tên/ di chuyển 1 tập tin hoặc thư mục
cp file1 file2 sao chép 1 tập tin
cp dir/* . sao chép tất cả các tập tin trong thư mục
cp -a /tmp/dir1 . sao chép thư mục đang làm việc
cp -a dir1 dir2 sao chép một thư mục
ln -s file1 lnk1 tạo một đường dẫn đến 1 tập tin hoặc thư mục
ln file1 lnk1 tạo 1 đường dẫn vật lý đến 1 tập tin hoặc thư mục
touch -t 0712250000 file1 thay đổi thời gian tạo file hoặc thư mục- (YYMMDDhhmm)
file file1 hiển thị kiểu tập tin ở chế độ văn bản
iconv -l hiện danh sách mã hóa
iconv -f fromEncoding -t toEncoding inputFile > outputFile tạo mới từ hồ sơ được nhập vào đã cho bởi việc giả thiết nó được mã hóa trong fromEncoding và chuyển đổi đến toEncoding.
find . -maxdepth 1 -name \*.jpg -print -exec convert "{}" -resize 80x60 "thumbs/{}" \; thay đổi kích thước tập tin trong thư mục hiện hành và gởi chúng đến thư mục thumbnails (cái này ko biết dịch sao) được iu cầu chuyển đổi từ Imagemagick

File search

find / -name file1 tìm tập tin và thư mục trong thư mục hệ thống root từ dấu "/"s
find / -user user1 tìm tập tin và thư mục thuộc về 'user1'
find /home/user1 -name \*.bin tìm tập tin với phần mở rộng '. bin' từ thư mục '/ home/user1'
find /usr/bin -type f -atime +100 tìm tập tin nhị phần và ko được sử dụng hơn 100 ngày
find /usr/bin -type f -mtime -10 tìm tập tin được tạo ra hoặc thay đổi trong vòng 10 ngày gần nhất
find / -name \*.rpm -exec chmod 755 '{}' \; tìm tập tin với phần mở rộng '.rpm' và phân quyền
find / -xdev -name \*.rpm tìm tập tin với phân mở rộng '.rpm' bỏ qua các phân vùng cdrom, pen-drive, etc.…
locate \*.ps tìm tập tin với phần mở rộng '.ps' trước khi chạy lệnh 'updatedb'
whereis halt xuất hiện vị trí tập tin nhị phân, nguồn hoặc hướng dẫn o
which halt xuất hiện đầy đủ đường dẫn nhị phân / phân ứng dụng

Mounting a Filesystem

mount /dev/hda2 /mnt/hda2 mount ổ đĩa tên là hda2 - xác minh tồn tại của thư mục '/ mnt/hda2'
umount /dev/hda2 ngừng mount ổ đĩa có tên hda2 -
fuser -km /mnt/hda2 ép ngừng mount khi thiết bị đang bận
umount -n /mnt/hda2 ngừng mount và ko ghi lên tập tin /etc/mtab - có tác dụng khi tập tin có thuốc tính readonly hoặc bị full ổ cứng
mount /dev/fd0 /mnt/floppy mount một đĩa mềm
mount /dev/cdrom /mnt/cdrom mount a cdrom / dvdrom
mount /dev/hdc /mnt/cdrecorder mount a cdrw / dvdrom
mount /dev/hdb /mnt/cdrecorder mount a cdrw / dvdrom
mount -o loop file.iso /mnt/cdrom mount một tập tin hoặc iso image
mount -t vfat /dev/hda5 /mnt/hda5 mount a Windows FAT32 file system
mount /dev/sda1 /mnt/usbdisk mount a usb pen-drive or flash-drive
mount -t smbfs -o username=user,password=pass //WinClient/share/mnt/share mount a windows network share
Mount 1 folder from windows share
mount –t cifs //192.168.1.77/’Data’ /usr/test --verbose –o user=administrator,domain=HD
Data: Folder of windows share.

Disk Space

df -h hiện danh sách phân vùng được mount
ls -lSr |more hiện kích cỡ của tâptin và thư mục và sắp xếp theo dung lượng
du -sh dir1 estimate space used by directory 'dir1'
du -sk * | sort -rn hiện dung lượng của tập tin và thư mục và sắp sếp theo dung lượng
rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n hiện dung lượng được sử dụng bởi gói được cài đặt và sắp xếp theo dung lượng (fedora, redhat and like)
dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n hiện dung lượng được cài đặt bởi gói deb và sắp xếp theo dung lượng (ubuntu, debian and like)

Users and Groups

groupadd group_name tạo một nhóm mới
groupdel group_name xóa một nhóm
groupmod -n new_group_name old_group_name đổi tên nhóm
useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 tạo một người dùng mới trong nhóm admin
useradd user1 tạo một người dùng mới
userdel -r user1 xóa người dùng ( '-r' loại trừ thư mục gốc)
usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 thay đổi thuộc tính người dùng
passwd đổi mật mã
passwd user1 đổi mật mã người dùng (chỉ dành cho root)
chage -E 2005-12-31 user1 thiết lập độ dài của mật khẩu người dùng
pwck kiểm tra cú pháp đúng và tập tin định dạng trong '/etc/passwd' và sự tồn tại của người dùng
grpck kiểm tra cú pháp đúng và tập tin định dạng trong '/etc/group' và sự tồn tại của nhóm
newgrp group_name đăng nhập tới một nhóm mới để thay đổi nhóm mặc định (của) những tập tin mới được tạo ra. Part1: System informationPart2: Shutdown (Restart of a system and Logout )

Một số cách chạy dịch vụ tự động trong Linux

Các server luôn có nhu cầu khởi động các dịch vụ mình đảm nhiệm lúc boot máy, do đó khi cài một dịch vụ mới lên, bạn phải biết cách làm cho nó tự động chạy. Sau đây là một số cách mà Abel đã làm.

1. Trên các hệ điều hành Debian like (Ubuntu, SuSE...): Dùng công cụ update-rc.d
Ví dụ sau khi cài xong bind (gói DNS Server), Abel muốn cho trình named (file exe của bind) phải tự động chạy khi máy khởi động. Vị trí của file named là: /usr/bin/named.

1.1 Đầu tiên Abel viết một đoạn shell script nho nhỏ với ba nhiệm vụ chính sau đây:
-Kiểm tra xem file /usr/bin/named có thể thực thi được hay không
-Kiểm tra file cấu hình /etc/named có tồn tại hay không
-Nếu hai điều kiện trên thỏa thì xuất ra dòng "Starting named" và chạy file /usr/bin/named


Cụ thể nó thế này:

Code:

#!/bin/sh
#file khoi dong named luc boot may

if test −x /usr/bin/named −a −f /etc/named.conf
then
echo "Starting named"
/usr/bin/named
Fi

(Với những dịch vụ khác cách viết file script là hoàn toàn tương tự)
1.2 Lưu nó lại với cái tên gì đó, ví dụ bootnamed, rồi nhét nó vô thư mục /etc/init.d
1.3 "Biến" nó thành file exe: chmod 755 /etc/init.d/bootnamed
1.4 Dùng lệnh
Code:

update-rc.d bootnamed defaults

Để cập nhật bootnamed vào các thư mục rc.d, các thư mục mà khi boot hệ thống sẽ vào kiểm tra để lôi dịch vụ ra chạy. Tham số defaults cho biết bootnamed sẽ được boot tự động ở init-mode default của hệ thống (ví dụ trong file inittab bạn để init default là 3 thì cứ vào 3 là nó chạy named!)
1.5 Reboot lại máy để kiểm tra

2. Trên các hệ điều hành Redhat like (Redhat, CentOS, Fedora...): Dùng công cụ chkconfig
Đây là một công cụ quản lí service at boottime rất mạnh của Redhat. Ví dụ để xem các service nào được auto run ở level 3, ta dùng lệnh:
Code:

[root@centos init.d]# chkconfig --list | grep 3:on
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
...

Để enable một service ở level được định trước:
Code:

[root@centos init.d]# chkconfig wine on
[root@centos init.d]# chkconfig --list wine
wine 0:off 1:off 2:on 3:on 4:off 5:off 6:off

Disable nó ở tất cả các level:
Code:

root@centos init.d]# chkconfig wine off
[root@centos init.d]# chkconfig --list wine
wine 0:off 1:off 2:off 3:off 4:off 5:off 6:off

Đặc điểm của chkconfig là ta không cần tạo script như với update-rc.d, mà chkconfig sẽ đọc một số dòng đầu của file thực thi của dịch vụ (hay còn gọi là file rc) để xác định file thực thi đó sẽ chạy ở các level nào và độ ưu tiên như thế nào. Ví dụ với dịch vụ sshd ta xem thử file thực thi nó có cái gì
Code:

[root@centos init.d]# head -8 sshd
#!/bin/bash
#
# Init file for OpenSSH server daemon
#
# chkconfig: 2345 55 25
# description: OpenSSH server daemon
#

Ý nghĩa các tham số:
Code:

# chkconfig: 2345 55 25
| | |
| | độ ưu tiên của kill scripts
| |
| độ ưu tiên của start scripts
|
các level mà service được start (2, 3, 4, 5)

Giờ ta sẽ đưa named vào các dịch vụ được boot khi khởi động máy
2.1 Kiểm tra named đã được autorun ở level nào chưa:
Code:

[root@centos init.d]# chkconfig --list named
named 0:off 1:off 2:off 3:off 4:off 5:off 6:off

2.2 Sửa file rc của named lại để cho nó auto run ở level 3. Ban đầu do không autorun ở level nào hết nên 8 dòng đầu của named rc file có dạng:
Code:

[root@cent init.d]# head -8 named
#!/bin/bash
#
# named This shell script takes care of starting and stopping
# named (BIND DNS server).
#
# chkconfig: _ 55 45
# description: named (BIND) is a Domain Name Server (DNS) \
# that is used to resolve host names to IP addresses.

Ta sửa dòng chkconfig thành:
Code:

#chkconfig: 3 55 45

2.3 Add named vào trình quản lí chkconfig
Code:

[root@centos init.d]# chkconfig named --add

2.4 Enable nó lên
Code:

[root@centos init.d]# chkconfig named on

2.5 Kiểm tra lại
Code:

[root@centos rc2.d]# chkconfig named --list
sshd 0:off 1:off 2:off 3:on 4:off 5:off 6:off

Thế là xong!

Kết: Hãy chắc chắn là bạn hoàn toàn kiểm soát được những dịch vụ nào đang autorun trên hệ thống của bạn.

(sưu tầm)

Hướng dẫn cách đưa driver RAID, AHCI vào trong đĩa cài đặt Windows XP bằng nLite

Hướng dẫn cách đưa driver RAID, AHCI vào trong đĩa cài đặt Windows XP bằng nLite
I. Chuẩn bị:
Đĩa cài đặt Windows XP.
Phần mềm nLite.
Driver RAID và AHCI
Tiến hành:
Cài đặt nLite: mọi người có thể vào website http://www.nliteos.com để download bản nLite mới nhất.

Chú ý: trước khi cài đặt nLite cần phải có Mircosoft .NET framework có thể download ở đây http://download.microsoft.com/downlo...a/dotnetfx.exe.
Driver RAID copy từ đĩa đi kèm hoặc download ở đây
http://www.mediafire.com/?15lvzcgw2m1 vào 1 folder trong bài này tôi copy vào folder d:\driver\raid.
Khởi động nLite sau khi đã cài đặt xong như hình 1 nhấn Next để tiếp tục






























Chọn Next và Finish để kết thúc
Bây giờ bạn đã có 1 file bộ cài đặt XP đã có sẵn RAID và AHCI. Đĩa này làm việc tốt trên các main board của Intel có hỗ trợ RAID, AHCI.

Tạo RAID 1 trong dòng main S5000 Serial X5000 LifeCom

config RAID trên dòng main S5000 VSA SASR, thuộc dòng LifeCom Server Serial X5400, thì đây là bài viết cách thiết lập RAID, cụ thể là RAID 1 khá đơn giản,

Từng bước nắm chắc công nghệ về RAID, ko còn run rẩy trước nó.

Nào, cùng hành động :

Trước tiên là vào CMOS, rồi làm theo hình ảnh sau :












Colocated, Dedicated Server là gì?

* I. Colocated là gì ?
Là không gian trên datacenter , Mình setup các dịch vụ cần thiết lên Server của mình và vác lên đó đặt và mình có toàn quyền quyết dịnh sử dụng con server của mình

II. Datacenter là gì ?

Là một phòng, một ngôi nhà mà người ta kéo các đường truyền tốc độ cao, ổn định như Lease Line, ....và trang bị các thể thống Swich và Router rất tốt như Cisco , 3Com ,HP ,.....Ngoài ra , họ thường phải trang bị 2 hệ thống phát điện chính và phụ ( Giống như Pri DNS và Sec DNS đóa )

III. Mình có tự làm Datacenter được không ?
Ai biết config các thiết bị mạng Cisco , HP ,... và chỉ cần trình độ MCSA , cùng với một số kiến thức về thầm mỹ thì có thể tự xây dựng một datacetenr


Datacenter làm dịch vụ cho khách hàng thì nó thường lớn và cực lớn , Còn các datacenter phục vụ cho Cty , Ngân hàng ..... thì thường vài con Server đến vài tủ Rack đựng Server

* Dedicated Server là gí ? là máy chủ riêng mà mình có thể tự quyết định cài đặt bất cứ cái gì lên Server của mình , và nó khác gì so với Colocated và hosting

+ Dedicated : nó giống như mình thuê Server và Colocated , mình không phải bỏ tiền nhiều một lần để mua server để chạy (Hàng tháng thì chắc chắn tốn tiền nhiều hơn Colocated )

+ Colocated : là mình phải bổ tiền đi mua serevr và cài đặt các ứng dụng rồi mang lên datacenter quăng vào tủ Rack ( Tốn tiền nhiều 1 lần mua Serever nhưng hàng tháng thì đóng ít $ hơn Dedicated )

Mua 1 con server về rồi mang lên datacenter là kinh tế nhất


Một vài hình ảnh trên Datacenter


Monitor BW, đường truyền ,..... là không thể thiếu với bất kỳ Datacenter nào





Hệ thống cáp nối vào datacenter và đi ra cung cấp Lease line cho khách hàng


How to Edit/Remove Windows Saved Password

Info: How to Edit/Remove Windows Saved Password

1. Open DOS Prompt or Run
2. Type "rundll32.exe keymgr.dll, KRShowKeyMgr" and press Enter to open Stored User Names and passwords windows.
3. You have 3 options: Add, Remove and Properties.

Shutdown một máy từ xa ta sẽ kết hợp 2 lệnh Runas và Shutdown

Shutdown một máy từ xa ta sẽ kết hợp 2 lệnh Runas và Shutdown
Lệnh Runas: dùng để chạy chưởng trình bằng quyền của một user bất kỳ, không phải user hiện hành. Cách này còn có tên gọi là Secondary Logon

Lệnh Shutdown: dùng để shutdown máy như tên gọi của nó

Giả sử máy may10 có user u1/password 123, user u1 phải có quyền shutdown máy.

Ta dùng lệnh:

Runas /user:may10\u1 /netonly "shutdown -s -m \\may10"

Khi chạy lệnh này nó hỏi password, ta gõ 123.

Gõ Runas /? và shutdown /? để biết thêm về các option.

Wednesday, December 10, 2008

Hướng dẫn mount ổ cứng Backup

Intro này phải làm thật cẩn thận và chú ý là ko dùng lệnh "fdisk /dev/sda" hay "fdisk /dev/hda" vì bạn sẽ edit main và boot partition

Chạy lệnh fdisk để xem những ổ cứng đang hiện hữu trên server



Code:

fdisk -l

Disk /dev/hda: 80.0 GB, 80000000000 bytes
255 heads, 63 sectors/track, 9726 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 268 2048287+ 82 Linux swap
/dev/hda3 269 9726 75971385 83 Linux

Disk /dev/hdc: 80.0 GB, 80000000000 bytes
255 heads, 63 sectors/track, 9726 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Chúng ta thấy 1 ổ cứng là hda và 1 ổ cứng là hdc. hda là main boot drive. chúng ta cần format ổ cứng còn lại.

Code:

fdisk /dev/hdc

-press "n" for new partion
-press "p" for primary partition
-press "1" for the first partition
-press enter for the first AND last cylinders. This will make it automatically use the entire disk
-press "w" for write out to save what you have done

Code:

mkfs.ext3 /dev/hdc1

Bây giờ ta mount ổ cứng này vào ổ backup

Code:

mkdir /backup

Code:

pico -w /etc/fstab

Chèn thêm dòng bên dưới
Code:

/dev/hdc1 /backup ext3 defaults 1 1

Code:

mount /backup

Done

Upgrade Kernel CentOS 5.x nhận 4GB RAM ++

Upgrade Kernel CentOS 5.x nhận 4GB RAM ++

Check kernerl version :

Code:

uname -r

2.6.18-8.1.3.el5

Code:

yum info kernel-PAE

Available Packages
Name : kernel-PAE

Summary: The Linux kernel compiled for PAE capable machines.



Description:
This package includes a version of the Linux kernel with support for up to
64GB of high memory. It requires a CPU with Physical Address Extensions (PAE).

The non-PAE kernel can only address up to 4GB of memory.

Install the kernel-PAE package if your machine has more than 4GB of memory.

Code:

yum install kernel-PAE

Then edit your grub.conf
Code:

pico /etc/grub.conf

#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-53.1.13.el5PAE)
root (hd0,0)
kernel /vmlinuz-2.6.18-53.1.13.el5PAE ro root=LABEL=/
initrd /initrd-2.6.18-53.1.13.el5PAE.img

Change default=1 to default=0

Then save, reboot server

Office Multi Document Password Cracker 2.0.0.4 [Gỡ bỏ pass các tập tin Office]

Thật đau đầu nếu bạn có 1 tập tin xuất ra từ Office mà lại không có pass hoặc vô tình quên pass để mở :-??. Cũng may còn có 1 giải pháp...

Simply download and install Office Multi-document Password Cracker and enjoy the fast and effective removal of “write” and “protection” passwords from Word files as well as “write”, workbook, shared workbook and worksheet passwords from Excel files you choose.For those of your files that have “open” password protection, which is much stronger and usually takes days to remove using an ordinary computer, Office Multi-document Password Cracker provides online decryption service, which means your files will be processed by powerful and secure servers running 24 hours a day, 7 days a week.The decryption process will take about 15 seconds for one document, regardless of the password length.Unlike other tools, Office Multi-document Password Cracker doesn’t require the whole document protected with “open” password to be uploaded to the server.The server receives only a part of the document’s header, which guarantees absolute privacy of your documents content.

LinkDown:
http://www.mediafire.com/download.php?3gunmlujjyw

Microsoft Office 2007 Enterprise 100% Full

Microsoft Office 2007 Enterprise 100% Full

Link down:
http://www.mediafire.com/?sharekey=3d9cda6f4c66023691b20cc0d07ba4d2f2b76a00f4d39f9e
Hoặc
http://www.mediafire.com/?txqj9revf1d
http://www.mediafire.com/?u1vsy22vrnq
http://www.mediafire.com/?xddwvnyumy5
http://www.mediafire.com/?lmxvztmxnjo
http://www.mediafire.com/?cn3ztoizvlm
http://www.mediafire.com/?dncedeobjq1
http://www.mediafire.com/?o519jmalmag
http://www.mediafire.com/?zgwglhzz5dm
http://www.mediafire.com/?xsnly2j34t3
http://www.mediafire.com/?u1mhzctodao
http://www.mediafire.com/?n2wz9tdgxzm
http://www.mediafire.com/?jmlhvdxlzgj

Gồm có 12 phần này bạn dùng HJ-Split để nối lại, Xem file hướng dẩn
http://www.mediafire.com/?idm0n20uyyh

Complete MS Office2003 - Bản rút gọn chỉ 71 Mb Zip

71MB Only A Selfextract And No Activation Needed No Key And Won't Bug Your Work ...Complete Outlook 2003 Word 2003, Excel 2003 and PowerPoint 2003 (No Ms Access)

Bản này là bản thu gọn nhưng chạy hoàn toàn bình thường, không lỗi, không cần CD Key khi cài đặt...Quá trình cài đặt diễn ra tự động (chỉ thiếu Accesss)

Link Download:
http://www.mediafire.com/download.php?xdgnge3xmj1

Firefox 3.0 Hacked Edition Portable

Là một bản đặc biệt nên ngoài những khả năng đặc biệt ra thì Firefox 3.0 Hacked Edition có những tính năng không khác gì một bản firefox3.0 tiêu chuẩn.
Dưới đây là những tính năng mà Mozilla FireFox 3 Final đem lại cho bạn.


1. An toàn hơn

• Xem thông tin trang web chỉ với một cú click: bạn chỉ việc click vào biểu tượng của trang web(favicon) trên thanh địa chỉ để xem ai là chủ sở hữu trang web và để kiểm tra xem kết nối của bạn có được bảo vệ khỏi sự lén theo dõi. Bảng xác nhận được hiển thị nhô lên và dễ hiểu hơn. Khi một trang web sử dụng công cụ chứng thực số cao cấp mở rộng(EV SSL certificate), nút favicon của trang đó sẽ chuyển sang màu xanh lá cây và hiển thị tên của công ty mà bạn đang kết nối.
• Chống Malware: chức năng chống malware cảnh báo cho người sử dụng khi họ mở một trang có ý định cài vào máy bạn các virus, spyware, trojan hoặc các malware khác.
• Trang bảo vệ chống giả mạo mới: nội dung của các trang bị cho là lừa đảo sẽ không được hiển thị.
• Các trang lỗi SSL mới: các trang lỗi sáng sủa và chính xác hơn khi Firefox bắt gặp một chứng thực SSL sai.
• Kiểm tra phiên bản các Add-on và Plugin: Firefox bây giờ có thể tự động kiểm tra phiên bản của các add-on bà plugin đồng thời ngừng hoạt động của các phiên bản cũ, kém an toàn.
• Cập nhật add-on an toàn hơn: để tăng khả năng bảo mật trong việc cập nhật add-on, các add-on được cập nhật theo cách không an toàn sẽ bị ngưng lại.
• Tích hợp công cụ chống virus: Firefox sẽ thông báo cho phần mềm chống virus khi bạn tải về các file có thể thực thi.
• Tiện ích Parental Control trong Vista: Firefox lưu tâm đến thiết lập Parental Control trong Windows Vista nhằm ngưng hoạt động của các file download.
• Tên miền cấp cao nhất hiệu quả(eTLD) phục vụ tốt hơn trong việc hạn chế các cookie và các nội dung bị hạn chế khác đến một tên miền đơn.
• Bảo vệ tốt hơn trong việc chống lại các lỗ hổng dữ liệu cross-site JSON

2. Dễ sử dụng hơn

• Dễ dàng trong việc quản lý mật khẩu: một thanh thông tin thay thế hộp thoại thông báo mật khẩu trước đây, giúp bạn lưu lại mật khẩu sau khi đăng nhập thành công
• Trình cài đặt add-on đơn giản: các add-on đã qua kiểm duyệt được gỡ bỏ giúp cho việc cài đặt phần mở rộng từ các trang thứ ba nhanh gọn hơn.
• Trình Download mới: trình download đã được sửa đổi để dễ dàng hơn trong việc xác định các file đã được tải về, và bạn có thể thấy và tìm kiếm theo tên trang web mà các file được tải về từ đó. Các file đang download và thời gian download còn lại luôn hiển thị trên thanh trạng thái.
• Khôi phục lại file đang download dở: người dùng giờ đây đã có thể phục hồi lại các file đang download sau khi khởi động lại trình duyệt hoặc kết nối lại mạng internet sau khi bị mất.
• Xem toàn màn hình: từ menu View hoặc thông qua phím tắt, tính năng mới giúp bạn phóng to, thu nhỏ toàn bộ trang web, nới rộng bố cục, chữ và ảnh trên trang, hoặc tùy chọn chỉ xem chữ(không hiển thị ảnh). Các thiết lập của bạn sẽ được ghi nhớ mỗi khi bạn quay trở lại trang web này.
• Podcast và Videocast có thể được kết hợp với các công cụ chơi nhạc của bạn.
• Chuyển tab và menu tắt: các tab dễ dàng được xác định với công cụ chuyển tab mới và menu tắt giúp điều khiển các tab nhanh hơn.
• Lưu lại công việc bạn đã làm: Firefox sẽ hỏi người dùng có lưu lại các tab trước khi tắt hay không.
• Tối ưu hóa tác vụ Open và Tabs: việc mở một thư mục trong bookmark sẽ hiển được hiển thị ở một tab mới thay vì thay thế tab hiện hành.
• Kích thước thanh Địa chỉ(Location) và Tìm kiếm(Search) có thể tùy chỉnh dễ dàng.
• Nâng cao tính năng chọn đối tượng: bạn có thể chọn nhiều đoạn văn bản trên trang web bằng cách sử dụng phím Ctrl/Cmd; click đúp hay kéo thả vùng chọn trong chế độ “word-by-word”
• Thanh công cụ tìm kiếm – Find: thanh công cụ Find mở ra với từ khóa là từ đang được chọn.
• Quản lý Plugin: người dùng có thể ngừnghoạt động từng plugin riêng lẻ trong trình quản lý Add-on Manager.
• Tích hợp với Windows: Firefox đã cải tiến các icon trên Windows, và sử dụng widget giao diện người nguyên thủy trong trình duyệt và web form.
• Tích hợp với Mac: giao diện mới cho Mac biến các thanh công cụ, icon, và các đối tượng giao diện người dùng khác trông giống các ứng dụng OS X nguyên bản. Firefox cũng sử dụng các widget OS X và hỗ trợ Growl trong việc thông báo hoàn thành các file download và các cập nhật hiện hữu. Một sự kết hợp nút điều khiển Tiến và Lùi giúp bạn dễ dàng hơn trong việc di chuyển đến các trang web.
• Tích hợp với Linux: các biểu tượng, nút bấm và kiểu dáng menu của Firefox sử dụng giao diện GTK nguyên bản.

3. Cá nhân hóa hơn:

• Nút sao(Star): nhanh chóng thêm trang web vào bookmark từ thanh địa chỉ với chỉ một cú click chuột; cú click tiếp thep giúp bạn sắp xếp và đánh nhãn(tag).
• Tag: kết hợp từ khóa với bookmark của bạn để sắp xếp chúng theo chủ đề.
• Thanh địa chỉ và tự động hoàn thành: bạn gõ vào tất cả hoặc chỉ cần một phần tiêu đề, tag hay địa chỉ trang web để xem danh sách phù hợp từ lịch sử truy cập và bookmark; cách hiển thị mới giúp bạn dễ dàng tìm thấy kết quả mong muốn. Các kết quả được trả về tùy theo tần suất truy cập của bạn.
• Thư mục Bookmark thông minh: nhanh chóng truy cập các bookmark mới nhất và các trang đã được đánh tag, cũng như các trang web thường truy cập.
• Công cụ tổ chức các địa điểm: xem, tổ chức và tìm kiếm thông qua bookmark, tag, và lịch sử truy cập với tính năng xem nhiều đối tượng cùng lúc và các thư mục thông minh giúp bạn lưu trữ các tìm kiếm thường dùng. Tạo và khôi phục lại toàn bộ bản lưu trữ dự phòng bất cứ lúc nào bạn muốn.
• Điều khiển giao thức truy cập: các ứng dụng web, như các nhà cung cấp dịch vụ email yêu thích của bạn, có thể được sử dụng thay cho các ứng dụng desktop trong việc quản lý email: liên kết đến các trang khác. Hỗ trợ tương tự cho các giao thức khác(các ứng dụng web sẽ phải được đăng ký trước với Firefox để kích hoạt.
• Download và cài đặt các Add-on: Công cụ Add-on Manager(Tool > Add-ons) có thể được sử dụng để download và cài đặt một add-on trên website của Firefox. Khi bạn lần đầu tiên mở Add-ons Manager, một danh sách các Add-on được đề nghị sẽ hiện ra giúp bạn dễ dàng chọn lựa.
• Dễ dàng sử dụng tính năng Download Action: một ô tùy biến các ứng dụng mới cung cấp một giao diện người dùng để cấu hình điều khiển cho rất nhiều loại file và lược đồ giao thức.

4. Cải thiện Platform cho các Developer:

• Giao diện đồ họa mới và quản lý font: kiến trúc hiển thị hình ảnh và văn bản mới trong Gecko 1.9 cung cấp sự cải tiến khả năng hiển thị đối với CSS, SVG cũng như cải thiện hiển thị font với các chữ ghép và các script phức tạp.
• Quản lý màu sắc: (kích hoạt tính năng này bằng cách gõ about:config lên thanh địa chỉ rồi thiết lập thuộc tính gfx.color_management.enabled) Firefox có thể tùy chỉnh các hình ảnh với các màu sắc được tích hợp sẵn.
• Hỗ trợ Offline: kích hoạt ứng dụng web để cung cấp tính năng offline(chủ website phải hỗ trợ thêm tính năng này cho trang web của họ để người sử dụng có thể dùng tính năng này).
• Khả năng bao quát hoàn thiện của FireFox 3 dành cho các nhà phát triển website và add-on(Các nhà phát triển có thể xem toàn bộ bản khái quát về Firefox 3 để phục vụ cho việc xây dựng website và add-on. )

5. Hiệu năng được nâng cao

• Tốc độ: tăng tốc độ đọc của trình xử lý Javascript cũng như cung cấp các tùy chỉnh để tối ưu hóa hiệu năng. So với Firefox 2, các ứng dụng web như Google Mail và Zoho Office chạy nhanh gấp hai lần ở Firefox 3 và công cụ kiểm tra SunSpider của Apple hiển thị các cải tiến so với các phiên bản trước đây.
• Bộ nhớ: một số công nghệ mới kết hợp với nhau để giảm dung lượng bộ nhớ sử dụng khi mở Firefox 3. Chu kỳ bộ nhớ được phá vỡ và tập hợp lại bởi trình tập hợp chu kỳ tự động, một bộ xác định bộ nhớ mới giúp giảm phân mảnh bộ nhớ, hàng trăm lỗ hổng đã được vá, và khả năng caching đã được điều chỉnh.
• Độ tin cậy: Các bookmark, history, cookies, và preferences giờ đây được lưu trữ trong một định dạng cơ sở dữ liệu an toàn giúp tránh việc mất mát dữ liệu ngay cả khi hệ thống sụp đổ…

LinkDown:
http://www.box.net/shared/p27x0o1vpm
http://www.mediafire.com/?1jbz199vgns

Tuesday, December 9, 2008

Các địa chỉ Website hữu ích để học Linux

1/ Website bao gồm các lệnh cơ bản trong Linux
Địa chỉ: http://www.faculty.ucr.edu/~tgirke/Documents/UNIX/linux_manual.html

Ở website này bạn sẽ học được hầu như toàn bộ các lệnh cơ bản trong Linux, chia thành các mục như:
+ Lệnh cơ bản
+ Trợ giúp
+ Tìm kiếm
+ Quyền và chủ quyền
+ Lệnh hệ thống
+ Quản lý tiến trình
+ Thao tác với Vi
+ Shell
+ Shell scripts
+ Remote copy
+ Nén và bung nén
+ Lệnh cài đặt
+ Lệnh liên quan đến thiết bị
+ Biến môi trường
+ ...


2/ Website "khổng lồ" về Tutorials và Shell scripts
Địa chỉ: http://www.cyberciti.biz/

Website chia thành các mục nhỏ như:
+ Backup
+ File system
+ GNOME
+ Hardware
+ Performance
+ Laptop
+ Phone
+ Monitoring

3/ Website hướng dẫn cấu hình các dịch vụ chính
Địa chỉ: http://www.linuxhomenetworking.com/

Nội dung website chia thành 3 mục:
+ The Linux File Server Project: DHCP, Samba, ...
+ The Linux Web Server Project: iptables, vsftp, dns, apache, ...
+ Advanced Linux Topics: NFS, LDAP, squid, MySQL, VPN, ...

4/ Website tập trung vào bảo mật trong Linux
http://www.linsec.ca/Home

5/ Website tin tức tổng hợp về linux:
http://www.linuxworld.com/
http://www.linux-mag.com/

6/ Website hướng dẫn rất chi tiết các lênh trong CentOS 5, FC8:
http://www.server-world.info/en/

Dành cho các "tín đồ" của Fedora: http://fedoraguide.info/index.php?title=Main_Page

Bạn vừa cài Fedora xong và chưa biết làm gì với nó. Có lẽ đây là website dành cho bạn. Ở đây, bạn sẽ học được những thao tác cơ bản nhất để làm việc với Fedora:
+ Sử dụng yum
+ Thêm các repository
+ Cài các gói phần mềm cơ bản
+ Cấu hình một số dịch vụ ở mức cơ bản như: Samba, Apache, proftp, pptp, ...

7/ http://www.howtoforge.com -> hướng dẫn cài đặt - cấu hình (có hình minh họa) đến từng chi tiết - đảm bảo xem xong không làm theo được - ko lấy $_$

Một tài liệu tuy viết cho distro "đồ cổ" Fedora Core 2, nhưng phần lớn những lệnh trong này "vẫn chạy tốt". Các bạn có thể đọc và thực hành từ từ để ngấm:
http://www.chezmoi.dk/secrets.htm
Trong tài liệu này, có một số lệnh rất hữu ích hoặc thuộc loại "bí mật" như:
+ Trên Terminal, ấn Esc sau đó ấn * để hiển thị tất cả các lệnh trong Linux
+ Tại sao root cũng không thể xoá một file?
+ Tại sao không thể unmount được CDROM?
+ Tính thời gian để chạy một lệnh?
+ Ghi lại các hành động của bạn trên Terminal vào một text file
+ Một số alias hữu ích
+ Đặt password cho một text file với Vim
+ Làm sao tăng độ phân giải trong chế độ console?
+ Bỏ đi các dòng giống nhau trong một text file
+ ...

8/ http://www.linuxcommand.org/
1 site tổng quát về các lệnh trong linux
cho thấy dùng command trên linux dễ như dùng lệnh trong DOS/ trong cmd của win vậy
Cụ thể :

* LinuxCommand
* Learning the shell
* Writing shell scripts
* Script library
* SuperMan pages
* Who, What, Where, Why

9/
http://www.linuxdevcenter.com/
http://www.yolinux.com/

http://www.linuxhaxor.net/2007/09/05/68-linux-related-free-e-books/ => 68 ebook Linux miễn phí

(copy of hvaonline)

Cac lệnh trong Linux

Lệnh để runlevels :
Syntax:
init [Options]

Options ----------------------------------- Chức năng sử dụng
0 --------------- Tắt máy
1 --------------- Chế độ một người dùng (Single -User) sử dụng khi backup và recovery
2 --------------- Không sử dụng
3 --------------- Đa người dùng có hỗ trợ net work và text login
4 --------------- Không sử dụng
5 --------------- Đa người dùng hỗ trợ network và graphic
6 --------------- Restart

Chú ý : giữa init và options có khoảng trắng .

1. w
Lệnh này hiển thị những ai đang logged on và họ đang làm gì. Phần tiêu đề hiển thị theo thứ tự: thời gian hiện tại, hệ thống đã chạy bao lâu, bao nhiêu users đang logged on, tải trung bình của hệ thống 1, 5, 15 phút trước

Các entries hiển thị cho mỗi user theo cấu trúc: login name, tty name, remote host, login time, idle time, JCPU, PCPU, command line của process hiện tại



Ví dụ

Code:

$ w
22:19:16 up 1:32, 3 users, load average: 0.68, 0.55, 0.42
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
quanta tty7 :0 20:50 0.00s 6:54 1.95s gnome-session
quanta pts/3 :0.0 21:21 0.00s 0.03s 0.00s w
quanta pts/4 :0.0 21:25 20:43 0.03s 0.03s bash


2. last
Hiển thị danh sách những người logged in cuối cùng. Lệnh này tìm kiếm trong file /var/log/wtmp và hiển thị tất cả các user đã logged in từ lúc file này được tạo. Mỗi lần hệ thống reboot, cột user sẽ hiển thị với tên "reboot". Ví dụ:
Code:

$ last -15
quanta pts/1 :0.0 Fri Feb 29 22:27 still logged in
quanta pts/1 :0.0 Fri Feb 29 22:27 - 22:27 (00:00)
quanta pts/1 :0.0 Fri Feb 29 22:23 - 22:23 (00:00)
quanta pts/5 :0.0 Fri Feb 29 21:34 - 21:58 (00:23)
quanta pts/4 :0.0 Fri Feb 29 21:25 still logged in
quanta pts/3 :0.0 Fri Feb 29 21:21 still logged in
quanta pts/2 :0.0 Fri Feb 29 21:17 - 22:19 (01:01)
quanta pts/1 :0.0 Fri Feb 29 21:11 - 22:19 (01:07)
quanta pts/0 :0.0 Fri Feb 29 20:51 - 20:59 (00:08)
quanta tty7 :0 Fri Feb 29 20:50 still logged in
reboot system boot 2.6.23.14-115.fc Fri Feb 29 20:47 (01:45)
quanta pts/0 :0.0 Fri Feb 29 20:44 - down (00:02)
quanta tty7 :0 Fri Feb 29 20:03 - down (00:43)
reboot system boot 2.6.23.14-115.fc Fri Feb 29 20:02 (00:44)
quanta pts/3 :0.0 Fri Feb 29 14:22 - 18:22 (03:59)

wtmp begins Fri Feb 1 14:10:09 2008

Tại dòng cuối cùng các bạn sẽ nhìn thấy file wtmp được tạo từ lúc nào.

3. free
Lệnh này hiển thị tổng lượng bộ nhớ còn trống, đang dùng, cũng như bộ nhớ swap trên hệ thống của bạn.
Cú pháp:
free [-b | -k | -m] [-o] [-s delay ] [-t] [-V]
với:
-b: tính theo bytes
-k: tính theo kilobytes
-m: tính theo megabytes

Thường thì bạn sẽ dùng free -m để xem lượng RAM và swap đang được sử dụng:
Code:

$ free -m
total used free shared buffers cached
Mem: 1001 865 135 0 37 333
-/+ buffers/cache: 494 506
Swap: 1105 0 1105


4. df
Cú pháp:
df [OPTION]... [FILE]...
Hiển thị dung lượng đĩa cứng còn trống của một hệ thống file. Nếu tên file không được đưa vào thì toàn bộ không gian trống trên các hệ thống file đã mounted được hiển thị. Mặc định lệnh này sẽ hiển thị với blocks 1K.

Ví dụ để xem lượng đĩa cứng còn trống trên toàn bộ hệ thống của bạn với đơn vị là Gygabytes bạn có thể dùng lệnh:
Code:

$ df --block-size=1GB
Filesystem 1GB-blocks Used Available Use% Mounted on
/dev/sda2 3 2 1 58% /
/dev/sda6 8 2 6 26% /var
/dev/sda5 11 5 6 46% /usr
/dev/sda7 1 1 1 33% /tmp
/dev/sda1 1 1 1 19% /boot
tmpfs 1 0 1 0% /dev/shm
/dev/sda8 75 61 11 86% /mnt/data

Nhìn vào cột Mounted on ở kết quả trên bạn thấy có một "tên" /dev/shm khá lạ. Bạn có thể đọc thêm về nó tại đây.
http://www.cyberciti.biz/tips/what-is-devshm-and-its-practical-usage.html

4. du
Lệnh này dùng để thống kê mức sử dụng đĩa. Mặc định nó sẽ hiển thị tại thư mục hiện hành và chỉ hiển thị số block trên file system. vd:
Code:

~$du
8 ./.xemacs
680 ./1/2/3/03
792 ./1/2/3/04/02
1208 ./1/2/3/04/01
5472 ./1/2/3/04/03
7476 ./1/2/3/04
852 ./1/2/3/01/02
924 ./1/2/3/01/01
1820 ./1/2/3/01/03
4300 ./1/2/3/01
2516 ./1/2/3/02
1048 ./1/2/3/05/05/01
5312 ./1/2/3/05/05.gif
816 ./1/2/3/05/05/02
2924 ./1/2/3/05/05/03
252 ./1/2/3/05/05/04
10356 ./1/2/3/05
25552 ./1/2/3
2516 ./1/2/3
852 ./1/2/2/02
924 ./1/2/2/01
1820 ./1/2/2/03
3600 ./1/2/2
792 ./1/2/1/02
1208 ./1/2/1/01
5472 ./1/2/1/03
7476 ./1/2/1
680 ./1/2/4
1300 ./1/2/4/5/03
1944 ./1/2/4/5/02
172 ./1/2/4/5/04
3420 ./1/2/4
43416 ./1/2
82808 ./1
81932 ./123
165176 .

Nếu bạn muốn output dễ đọc hơn thì có thể truyền thêm -sh cho nó. vd:
Code:

~$du -sh
161M .

Lệnh này linh hoạt hơn df ở chỗ nó có thể thống kê mức sử dụng đĩa của bất kỳ thư mục nào. Chi tiết các bạn có thể xem trang man.

6. ps
Hiển thị thông tin về các tiến trình hiện thời. Thông tin hiển thị được chia thành nhiều cột, nhưng thường thì bạn chú ý nhiều nhất đến cột có tên là PID (Process ID). Giá trị của tiến trình trong cột PID này sẽ được sử dụng trong lệnh kill. Lệnh ps thường được dùng trong vài trường hợp sau:
+ Có một process đang bị treo và bạn muốn stop nó --> bạn chạy ps lấy PID để kill
+ Bạn khởi động 1 process nhưng nó làm máy bạn chạy ngày càng chậm đi --> chạy ps xem nó đang chiếm bao nhiêu % CPU, sau đó có thể lấy PID để kill
+ Xem các processes thuộc về một user nào đó

Một vài ví dụ:

Hiển thị tất cả các tiến trình theo cú pháp BSD:
Code:

$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 4780 0.0 0.1 5848 1348 ? S 21:26 0:00 /usr/sbin/userh
root 4783 0.3 3.7 104324 38408 ? S 21:26 0:11 wireshark
quanta 4900 0.2 1.8 79772 18572 ? Sl 21:38 0:05 gnome-terminal
quanta 4904 0.0 0.0 2616 596 ? S 21:38 0:00 gnome-pty-helpe
quanta 4905 0.0 0.1 4892 1628 pts/1 Ss 21:38 0:00 bash
quanta 5122 0.0 0.1 4892 1636 pts/2 Ss 21:54 0:00 bash
quanta 5271 0.0 0.0 4080 892 pts/1 S+ 22:12 0:00 man ps
quanta 5274 0.0 0.1 4704 1120 pts/1 S+ 22:12 0:00 sh -c (cd /usr/
quanta 5275 0.0 0.0 4704 580 pts/1 S+ 22:12 0:00 sh -c (cd /usr/
quanta 5279 0.0 0.0 4420 832 pts/1 S+ 22:12 0:00 /usr/bin/less -
quanta 5326 0.0 0.0 4584 980 pts/2 R+ 22:22 0:00 ps aux


Hiển thị các tiến trình user "quanta" đang chạy:
Code:

$ ps -u quanta
PID TTY TIME CMD
4347 ? 00:00:00 kded
4656 ? 00:00:00 kio_file
4779 ? 00:00:00 consolehelper-g
4900 ? 00:00:06 gnome-terminal
4904 ? 00:00:00 gnome-pty-helpe
4905 pts/1 00:00:00 bash
5122 pts/2 00:00:00 bash
5271 pts/1 00:00:00 man
5274 pts/1 00:00:00 sh
5275 pts/1 00:00:00 sh
5279 pts/1 00:00:00 less
5333 ? 00:00:03 pidgin
5364 pts/2 00:00:00 ps


7. kill
Lệnh này sẽ làm chấm dứt một process.
Cú pháp:
Code:

kill [ -s signal | -p ] [ -a ] [ -- ] pid ...
kill -l [ signal ]

Các signal thông dụng:

SIGHUP (-1): Đây là một tín hiệu treo, nó chỉ thị cho chương trình re-load file cấu hình hoặc re-open giao diện, chứ không chấm dứt process
SIGTERM (-15): đây là một tín hiệu chấm dứt "tao nhã". Nó chỉ thị cho chương trình dừng những gì đang chạy lại, hỏi xem có processes (hoặc users) nào đang kiểm soát nó không, sau đó mới thoát.
SIGKILL (-9): tín hiệu bắt buộc chấm dứt luôn một process.

Lệnh killall: được dùng khi bạn muốn kill tất cả các process với tên chắc chắn. Lúc này bạn không cần dùng ps để tìm PID. Ví dụ: # killall httpd

Với output này:
Code:

$ ps -u quanta
PID TTY TIME CMD
4347 ? 00:00:00 kded
4656 ? 00:00:00 kio_file
4779 ? 00:00:00 consolehelper-g
4900 ? 00:00:06 gnome-terminal
4904 ? 00:00:00 gnome-pty-helpe
4905 pts/1 00:00:00 bash
5122 pts/2 00:00:00 bash
5271 pts/1 00:00:00 man
5274 pts/1 00:00:00 sh
5275 pts/1 00:00:00 sh
5279 pts/1 00:00:00 less
5333 ? 00:00:03 pidgin
5364 pts/2 00:00:00 ps

Giả sử muốn "kill" pidgin bạn có thể gõ:
Code:

$ kill -9 5333

8. grep PATTERN [FILE]...

Tìm kiếm PATTERN trong FILE.

Ví dụ:
Code:

[FaL@FaL ~]$ grep www /etc/passwd
www:*:80:80:World Wide Web Owner:/nonexistent:/usr/sbin/nologin

9. Dấu | Chuyển data stream giữa các lệnh:

Với dấu | output của lệnh trước sẽ trở thành input stream data của lệnh sau.

Ví dụ:
Code:

[FaL@FaL ~]$ ls / | grep root
root

còn đây là output của ls /:

Code:

[FaL@FaL ~]$ ls /
COPYRIGHT compat etc media rescue tmp
bin dev home mnt root usr
boot dist lib net sbin var
cdrom entropy libexec proc sys

Chi tiết xem thêm man

10. man
Hiển thị manual page cho các lệnh, file config,... Có thể nói đọc man là bước đầu tiên khi muốn tìm hiểu một lệnh hoặc config một file nào đó.

Ví dụ:
Code:

$man man
$man passwd

+++Lệnh : alias

Lệnh này sử dụng nếu như bạn không quen thuộc với "rm", "cp" hay "mv" .. mà thích "del", "copy" hay "move" hơn thì sao, và nếu như bạn muốn nó bao giờ cũng -v Code:

alias del="rm -v"
alias copy="cp -v"
alias move="mv -v"
Như vậy, khi bạn gõ del, shell sẽ tự hiểu là bạn muốn gõ rm -v

Lưu ý : lệnh này chỉ có hiệu lực tại thời điểm tạo lệnh, nếu thoát khỏi terminal trong GUI hay logout trong Text Mode lệnh sẽ mất hiệu lực. Nếu các bạn muốn hiểu sâu hơn hoặc muốn lệnh automatically khi khởi động hãy tìm hiểu về :
16. mktemp
mktemp [-V] | [-dqtu] [-p directory] [template]
Bạn đang viết một đoạn script và cần tạo một file hoặc thư mục tạm mà không muốn phải kiểm tra xem nó đã được tạo trước đó hay chưa, bạn có thể dùng lệnh mktemp. Lệnh này tạo một file hoặc thư mục với tên duy nhất. File hoặc thư mục này được đặt trong /tmp vào có dạng tmp.XXXXXXXXXX. Dùng tuỳ chọn -d để tạo thư mục thay vì file.
Ví dụ, trong các script files bạn có thể dùng như sau:
Code:

STORE=`mktemp -d`
sau đó gọi đến đường dẫn của thư mục này với $STORE

17. file

Lệnh này xác định loại file.
Ví dụ:
Code:

$ file OReilly\ DNS\ and\ BIND
OReilly DNS and BIND: PDF document, version 1.3

Code:

$ file CV
CV: Microsoft Office Document
Code:

$ file how\ linux\ works
how linux works: MS Windows HtmlHelp Data --> chm

Code:

$ file Chuyen5nguoi
Chuyen5nguoi: MPEG ADTS, layer III, v1, 128 kBits, 44.1 kHz, Monaural -->mp3

Code:

$ file Hanoi\ pho
Hanoi pho: Standard MIDI data (format 1) using 2 tracks at 1/120

Code:

$ file Pictures/
Pictures/: directory

17. who: Ai đang dzô máy tui?
Code:

[FaL@FaL ~]$ who
root ttyv1 Mar 14 11:10
FaL ttyp1 Mar 14 10:43 (:0.0)
FaL ttyp2 Mar 14 10:43 (:0.0)
congaquay ttyp3 Mar 14 11:11 (192.168.2.15)
8050 ttyp4 Mar 14 11:13 (85.143.68.8)


18. whoami / who am i: Tui là ai?

Code:

[FaL@FaL ~]$ whoami
FaL
[FaL@FaL ~]$ who am i
FaL ttyp2 Mar 14 10:43 (:0.0)

19. pwd: Tui đang ở đâu?
Code:

[FaL@FaL ~]$ pwd
/net/ftp/pub/softs

20. id: Chứng minh thư của tui đâu?
Code:

[FaL@FaL ~]$ id
uid=1019(FaL) gid=1003(FaL) groups=1003(FaL),0(wheel)
id của user FaL là 1019, thuộc nhóm FaL (cùng tên) với id của nhóm là 1003, những nhóm mà thằng FaL còn tham gia là: 1003 và 0 (wheel)

21. cd: đưa tui tới ...
Nếu ko có tham số ở sau, cd sẽ đưa tui ... về nhà, cho dù tui có đang ở nơi đâu.
Code:

[FaL@FaL ~]$ pwd
/net/ftp/pub/softs
[FaL@FaL ~]$ cd
[FaL@FaL ~]$ pwd
/home/FaL


Nếu sau cd có đường dẫn bạn sẽ được chuyển đến đường dẫn đó.

22. ls (list): Cho tui xem cái list!
Code:

[FaL@FaL ~]$ ls /home/friends
8050 Melf g0u22 lot tangzhiling
Bisaram Sirius hoangquyet moona tequilar
Carrot Tarona khanhvan notnhacxinh test
Lupanbl4 congaquay lho phituan uzbfriend
Tham số -l (chữ L): xem thông tin chi tiết của từng file:
Code:

[FaL@FaL ~]$ ls - /home/friends
total 40
drwxr-xr-x 4 755 friends 512 Mar 5 01:10 8050
drwxr-xr-x 2 Bisaram friends 512 Mar 13 19:54 Bisaram
drwxr-xr-x 2 Carrot friends 512 Mar 2 23:38 Carrot
drwxr-xr-x 4 Lupanbl4 friends 512 Mar 14 01:36 Lupanbl4
drwxr-xr-x 4 Melf friends 512 Mar 13 22:31 Melf
drwxr-xr-x 9 Sirius friends 512 Mar 12 15:16 Sirius
drwxr-xr-x 2 Tarona friends 512 Mar 3 23:35 Tarona
drwxr-xr-x 5 congaquay friends 512 Mar 8 20:28 congaquay
drwxr-xr-x 7 g0u22 friends 512 Mar 12 01:29 g0u22
drwxr-xr-x 6 hoangquyet friends 1024 Mar 13 00:46 hoangquyet
drwx--x--- 7 khanhvan friends 512 Mar 12 02:33 khanhvan
drwxr-xr-x 7 lho friends 512 Mar 11 23:39 lho
drwxr-xr-x 6 lot wheel 512 Feb 27 13:15 lot
drwxr-xr-x 5 moona friends 512 Mar 13 20:44 moona
drwxr-xr-x 7 notnhacxinh friends 512 Mar 11 19:27 notnhacxinh
drwxr-xr-x 6 phituan friends 512 Mar 12 16:37 phituan
drwxr-xr-x 5 tangzhiling friends 512 Feb 29 11:56 tangzhiling
drwxr-xr-x 2 tequilar friends 512 Mar 13 13:32 tequilar
drwxr-xr-x 4 hoangquyet friends 512 Feb 28 01:24 test
drwxr-xr-x 4 uzbfriend friends 512 Mar 3 23:59 uzbfriend


23. Which- lệnh hiện thị 'đầy đủ' đường dẫn.

Cấu trúc câu lệnh : which -[option] [--] programname [...]

Ví dụ bạn muốn xem đường dẫn openssl bạn sử dụng
$ which openssl

hay bạn xem thử đường dẫn mysql cũa bạn. Sử dụng
$ which mysql
Tham khảo đầy đủ: $man which


Mạn phép viết tiếp 1 lệnh:
24. find - tìm kiếm tập tin/thư mục

Cấu trúc câu lệnh: find [DIR_TO_FIND] -name "FILENAME_WITH_REGEX" -type f/d ....

Đây là 1 lệnh tìm kiếm không dựa trên database như lệnh locate, lệnh này rất mạnh vì hỗ trợ việc kết hợp với các lệnh khác.

Ví dụ bạn muốn tìm và xóa tất cả các tập tin/thư mục có tên là .svn trong thư mục hiện tại, bạn chỉ cần gõ:

find . -name ".svn" -exec rm -rf {}\;

Nếu muốn chỉ xóa tập tin thì thêm -type f vào câu trên.

25. lsof

Liệt kê các files, sockets, pipes đang mở, đang được sử dụng bởi các tiến trình khác.

Một số tham số hữu ích hay dùng:
+ Xem /dev/dsp (thường liên quan đến sound card) đang bị dùng bởi chương trình nào:
Code:

# lsof | grep /dev/dsp
amarokapp 4316 quanta 18w CHR 14,3 3430 /dev/dsp


+ Xem tại sao khi unmount CD Rom lại gặp lỗi "device is busy":
Code:

# lsof | grep /mnt/cdrom

+ Xem ứng dụng nào đang dùng cổng 80:
Code:

# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
httpd 2443 root 4u IPv4 5561 TCP *:http (LISTEN)
httpd 2648 apache 4u IPv4 5561 TCP *:http (LISTEN)
httpd 2649 apache 4u IPv4 5561 TCP *:http (LISTEN)
httpd 2650 apache 4u IPv4 5561 TCP *:http (LISTEN)
httpd 2651 apache 4u IPv4 5561 TCP *:http (LISTEN)
httpd 2652 apache 4u IPv4 5561 TCP *:http (LISTEN)
httpd 2653 apache 4u IPv4 5561 TCP *:http (LISTEN)
httpd 2654 apache 4u IPv4 5561 TCP *:http (LISTEN)
httpd 2655 apache 4u IPv4 5561 TCP *:http (LISTEN)


+ Tất cả các processes đang sử dụng bash shell:
Code:

# lsof /bin/bash
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
mysqld_sa 2342 root txt REG 8,2 735144 95056 /bin/bash
firefox 3195 quanta txt REG 8,2 735144 95056 /bin/bash
run-mozil 3208 quanta txt REG 8,2 735144 95056 /bin/bash
bash 3694 quanta txt REG 8,2 735144 95056 /bin/bash
sh 4096 quanta txt REG 8,2 735144 95056 /bin/bash
sh 4097 quanta txt REG 8,2 735144 95056 /bin/bash
bash 4114 quanta txt REG 8,2 735144 95056 /bin/bash
bash 4212 root txt REG 8,2 735144 95056 /bin/bash


+ Ai đang dùng vim:
Code:

# lsof /usr/bin/vim
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
vim 4554 root txt REG 8,5 1704392 131146 /usr/bin/vim


+ Init processes đang sử dụng những files nào:
Code:

# lsof -c init
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
init 1 root cwd DIR 8,2 4096 2 /
init 1 root rtd DIR 8,2 4096 2 /
init 1 root txt REG 8,2 38760 253571 /sbin/init
init 1 root mem REG 8,2 226208 190260 /lib/libsepol.so.1
init 1 root mem REG 8,2 105968 191330 /lib/libselinux.so.1
init 1 root mem REG 8,2 1692524 190257 /lib/libc-2.7.so
init 1 root mem REG 8,2 20564 190265 /lib/libdl-2.7.so
init 1 root mem REG 8,2 128952 192051 /lib/ld-2.7.so
init 1 root 10u FIFO 0,16 269 /dev/initctl


26. stat
Cung cấp tất cả các thuộc tính về một file

Ví dụ:
Code:

$ stat ssh-banner.txt
File: `ssh-banner.txt'
Size: 340 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 127379 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 500/ quanta) Gid: ( 500/ quanta)
Access: 2008-04-08 09:24:55.000000000 +0700
Modify: 2008-02-19 22:56:40.000000000 +0700
Change: 2008-03-27 14:02:32.000000000 +0700

Code:

$ stat She\'s\ Gone\ -\ Steel\ Heart.mp3
File: `She\'s Gone - Steel Heart.mp3'
Size: 9339410 Blocks: 18280 IO Block: 4096 regular file
Device: 802h/2050d Inode: 127446 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 500/ quanta) Gid: ( 500/ quanta)
Access: 2008-04-04 20:51:39.000000000 +0700
Modify: 2008-04-04 14:23:33.000000000 +0700
Change: 2008-04-04 14:23:33.000000000 +0700


27. netstat
Đưa ra thông tin về network connections, routing tables, interface.

Ví dụ:
- Thông tin về các connections:
Code:

[root@localhost ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:640 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3938 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1158 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5520 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1523 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:33396 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:3938 127.0.0.1:51459 TIME_WAIT
tcp 0 0 127.0.0.1:51452 127.0.0.1:1158 TIME_WAIT
tcp 0 0 127.0.0.1:33457 127.0.0.1:1521 ESTABLISHED

- Tiến trình nào đang lắng nghe trên cổng 22:
Code:

[root@localhost ~]# netstat -anp |grep 22
tcp 0 0 :::22 :::* LISTEN 3216/sshd
Ta thấy tiến trình với PID là 3216 đang nghe trên cổng này. Kết hợp với ps sẽ thêm một số thông tin:
Code:

[root@localhost ~]# ps -ef |grep 3216
root 3216 1 0 Mar26 ? 00:00:00 /usr/sbin/sshd

- In ra bảng định tuyến:
Code:

[root@localhost ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
100.0.0.0 * 255.0.0.0 U 0 0 0 eth0
default 100.0.0.254 0.0.0.0 UG 0 0 0 eth0

28. groups

groups [OPTION]... [USERNAME]...
Liệt kê các nhóm mà user đó là thành viên.

Ví dụ:

$ groups quanta
quanta lp wheel vboxusers


29. Liệt kê các thành viên trong một nhóm


$ grep wheel /etc/group | cut -d: -f4
root,quanta


$ awk -F: '$1 ~ /wheel/ {print $4}' /etc/group
root,quanta


30. apropos

apropos keyword ...
Đôi khi muốn thực hiện một tác vụ nào đó, nhưng bạn không biết phải dùng lệnh nào. Có nhiều cách để có thể tìm được, một trong số đó là dùng lệnh apropos. Lệnh này sẽ tìm trong man page chuỗi ký tự miêu tả ngắn gọn về lệnh bạn cần tìm.

Ví dụ:
+ Muốn tìm các lệnh liên quan đến user account bạn có thể gõ:

$ apropos 'user account'
createuser (1) - define a new PostgreSQL user account
dropuser (1) - remove a PostgreSQL user account
endutxent [getutxid] (3p) - user accounting database functions
getutxent [getutxid] (3p) - user accounting database functions
getutxid (3p) - user accounting database functions
getutxline [getutxid] (3p) - user accounting database functions
lnewusers (1) - Create new user accounts
pututxline [getutxid] (3p) - user accounting database functions
setutxent [getutxid] (3p) - user accounting database functions
userdel (8) - delete a user account and related files
usermod (8) - modify a user account
usermode-gtk (rpm) - Graphical tools for certain user account management tasks
usermode (rpm) - Tools for certain user account management tasks
utmpx.h [utmpx] (0p) - user accounting database definitions


+ Các lệnh liên quan đến monitoring:

$ apropos monitoring
asterisk-snmp (rpm) - Module that enables SNMP monitoring of Asterisk
frysk (7) - The Frysk Debugging, Tracing, and Monitoring Tool Suite
inotify (7) - monitoring file system events
iputils (rpm) - Network monitoring tools including ping
lm_sensors (rpm) - Hardware monitoring tools
mii-diag (8) - Network adapter control and monitoring
monit (1) - utility for monitoring services on a Unix system
ntp_mon (5) - Monitoring Options
procps (rpm) - System and process monitoring utilities
psacct (rpm) - Utilities for monitoring process activities
quota (rpm) - System administration tools for monitoring users' disk usage.
sensors-detect (8) - detect hardware monitoring chips
smartd (8) - SMART Disk Monitoring Daemon
smartd.conf [smartd] (5) - SMART Disk Monitoring Daemon Configuration File
smartmontools (rpm) - Tools for monitoring SMART capable hard disks
swatch (rpm) - Tool for actively monitoring log files
tcpdump (rpm) - A network traffic monitoring tool
time (rpm) - A GNU utility for monitoring a program's use of system resources


+ Các lệnh làm việc với processes:

$ apropos processes
Apache2::SubProcess (3pm) -- Executing SubProcesses under mod_perl
capgetp [cap_get_proc] (3) - Linux specific capability manipulation on arbitrary processes
cap_get_proc (3) - POSIX capability manipulation on processes
capsetp [cap_get_proc] (3) - Linux specific capability manipulation on arbitrary processes
cap_set_proc [cap_get_proc] (3) - POSIX capability manipulation on processes
exec (n) - Invoke subprocesses
faked (1) - daemon that remembers fake ownership/permissions of files manipulated by fakeroot processes
fuser (1) - identify processes using files or sockets
fuser (1p) - list process IDs of all processes that have one or more files open
kill (1p) - terminate or signal processes
kill (3p) - send a signal to a process or a group of processes
killall (1) - kill processes by name
killall5 (8) -- send a signal to all processes
killpgrp (8) - kill all processes in the same process group
monit (rpm) - Manages and monitors processes, files, directories and devices
mysql_zap (1) - kill processes that match a pattern
numactl (8) - Control NUMA policy for processes or shared memory
peekfd (1) - peek at file descriptors of running processes
perlipc (1) - Perl interprocess communication (signals, fifos, pipes, safe subprocesses, sockets, and semaphores)
pgrep (1) - look up or signal processes based on name and other attributes
pkill [pgrep] (1) - look up or signal processes based on name and other attributes
ps (1) - report a snapshot of the current processes
psmisc (rpm) - Utilities for managing processes on your system
pstree (1) - display a tree of processes
renice (1) - alter priority of running processes
smbcontrol (1) - send messages to smbd, nmbd or winbindd processes
sysvinit (rpm) - Programs which control basic system processes

31. pushd và popd

Đôi khi bạn thường xuyên phải làm việc với vài thư mục có đường dẫn khá dài. Lệnh cd có thể chuyển qua lại giữa chúng, nhưng có một cách nhanh hơn đó là dùng pushd và popd. 2 lệnh này sẽ tạo ra một ngăn xếp thư mục ảo (Virtual directory stack):
+ pushd: thay đổi thư mục hiện tại và đưa thư mục bạn sẽ đến vào stack
+ popd: lấy thư mục ở đỉnh ra khỏi stack và đưa bạn đến thư mục kế tiếp trong stack

Ví dụ: Tôi thường xuyên làm việc với vài thư mục: /mnt/data/linux-unix/packages, /mnt/data/pentaho, /mnt/data/linux-unix/Ebooks, ... Tôi sẽ "đẩy" chúng và ngăn xếp để khi cần thì "lấy" ra cho nhanh:
Code:

$ pushd .
~ ~

$ pushd /mnt/data/linux-unix/packages/
/mnt/data/linux-unix/packages ~ ~

$ pushd /mnt/data/pentaho/
/mnt/data/pentaho /mnt/data/linux-unix/packages ~ ~

$ pushd /mnt/data/linux-unix/Ebooks/
/mnt/data/linux-unix/Ebooks /mnt/data/pentaho /mnt/data/linux-unix/packages ~ ~


Để liệt kê các thư mục đang có trong stack bạn dùng lệnh dirs:
Code:

$ dirs
/mnt/data/linux-unix/Ebooks /mnt/data/pentaho /mnt/data/linux-unix/packages ~ ~


Bây giờ, để chuyển đến thư mục /mnt/data/pentaho, bạn chỉ việc gõ popd:
Code:

$ popd
/mnt/data/pentaho /mnt/data/linux-unix/packages ~ ~

$ pwd
/mnt/data/pentaho


2 lệnh này cũng hỗ trợ các tham số để chuyển đến một phần tử xác định trong ngăn xếp, đó là +n và -n. Ví dụ, hiện tại ngăn xếp của bạn như sau:
Code:

$ dirs
/mnt/data/linux-unix/Ebooks /mnt/data/pentaho /mnt/data/linux-unix/packages ~ ~

Bạn cần chuyển /mnt/data/linux-unix/packages lên đỉnh ngăn xếp, bạn có thể gõ:
Code:

$ pushd +2
/mnt/data/linux-unix/packages ~ ~ /mnt/data/linux-unix/Ebooks /mnt/data/pentaho

$ pwd
/mnt/data/linux-unix/packages

Hiểu nôm na là ngăn xếp sẽ bị "quay" sang trái 2 phần tử.

32. top
Kiểm tra các tiến trình đang hoạt động (giống task manager của windows), xem tiến trình nào đang chiếm tài nguyên hệ thống như thế nào. top sẽ cập nhật liên tục thay đổi của các tiến trình. nhấn q để kết thúc lệnh

Code:

[root@server ~]# top
top - 15:27:19 up 133 days, 6:10, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 87 total, 1 running, 86 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 0.3% sy, 0.0% ni, 99.3% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 254968k total, 247336k used, 7632k free, 45144k buffers
Swap: 524280k total, 1500k used, 522780k free, 130524k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3288 mysql 16 0 130m 17m 3988 S 0.3 7.1 96:46.27 mysqld
1 root 16 0 3516 548 468 S 0.0 0.2 0:08.48 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.32 ksoftirqd/0
3 root 5 -10 0 0 0 S 0.0 0.0 0:01.93 events/0
4 root 5 -10 0 0 0 S 0.0 0.0 0:00.03 khelper
5 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 kblockd/0
6 root 15 0 0 0 0 S 0.0 0.0 0:00.00 khubd
34 root 15 0 0 0 0 S 0.0 0.0 0:00.04 kapmd
37 root 15 0 0 0 0 S 0.0 0.0 0:05.12 pdflush
38 root 15 0 0 0 0 S 0.0 0.0 0:04.11 pdflush
39 root 15 0 0 0 0 S 0.0 0.0 0:04.54 kswapd0
40 root 7 -10 0 0 0 S 0.0 0.0 0:00.00 aio/0
186 root 15 0 0 0 0 S 0.0 0.0 0:00.00 kseriod
432 root 15 0 0 0 0 S 0.0 0.0 4:31.33 kjournald
1610 root 6 -10 0 0 0 S 0.0 0.0 0:00.00 ata/0
1611 root 7 -10 0 0 0 S 0.0 0.0 0:00.00 ata_aux
1621 root 6 -10 2152 448 360 S 0.0 0.2 0:00.03 udevd

@quanta: đã edit rồi. Cảm ơn bạn nhiều.


33. uname
Bạn đang chuẩn bị tải 1 phần mềm (MySQL chẳng hạn ) nhưng nó có quá nhiều phiên bản, để xác định phiên bản nào là phù hợp với hệ thống của mình bạn phải biết được các thông tin như "nền tảng phần cứng" (dịch từ chữ hardware-platform), version của nhân:
Code:

[root@server root]# uname --help
Usage: uname [OPTION]...
Print certain system information. With no OPTION, same as -s.

-a, --all print all information, in the following order:
-s, --kernel-name print the kernel name
-n, --nodename print the network node hostname
-r, --kernel-release print the kernel release
-v, --kernel-version print the kernel version
-m, --machine print the machine hardware name
-p, --processor print the processor type
-i, --hardware-platform print the hardware platform
-o, --operating-system print the operating system
--help display this help and exit
--version output version information and exit

Để xem hệ thống của bạn đang chạy nhân version nào:
Code:

[root@server root]# uname -r
2.4.21-4.EL


31. pushd và popd

Đôi khi bạn thường xuyên phải làm việc với vài thư mục có đường dẫn khá dài. Lệnh cd có thể chuyển qua lại giữa chúng, nhưng có một cách nhanh hơn đó là dùng pushd và popd. 2 lệnh này sẽ tạo ra một ngăn xếp thư mục ảo (Virtual directory stack):
+ pushd: thay đổi thư mục hiện tại và đưa thư mục bạn sẽ đến vào stack
+ popd: lấy thư mục ở đỉnh ra khỏi stack và đưa bạn đến thư mục kế tiếp trong stack


Hoặc có thể dùng alias dùng cho nhanh.
Ví dụ, muốn tạo 2 thằng đến 2 thư mục /path/to/Ebooks và /path/to/packages:
Code:

alias 2book="cd /path/to/Ebooks"
alias 2pac="cd /path/to/packages"

Khi nào cần chuyển đến thư mục chứa Ebook, đơn giản là nhấn 2book


Đang đợi các pác giới thiệu về lệnh umask. Mình đọc trong phần "Những cuộc đối thoại với .... " của bác conmale có giới thiệu lệnh này. Cả những phần pác Thái hay các MOD khi config 1 soft nào đó cũng dùng lệnh này. Mình cũng đọc và tham khảo trên google, nhưng quả thật chưa hiểu rõ cái huyền bí của nó, và 1 số lệnh về bit STICKY.

Đang mong bài của các bạn về các lệnh này. Mình xin đóng góp 2 3 lệnh đơn giản.

34. Lệnh mkdir

Lệnh này dùng để tạo thư mục mới

35. lệnh touch
Dùng để tạo ra 1 file mới. Hoặc bạn có thể dùng lệnh "vi" <- lệnh này dùng để soạn thảo văn bản và tạo file mới, nếu file này chưa tồn tại. 36. Lệnh rm. Lệnh này dùng để xoá file hay thư mục Options -f: dùng để xoá ko cần hỏi. 37. Lệnh rpm Dùng để install/ uninstall software hay 1 application. Options: -qa để xem version của soft đã install. Tham khảo chi tiết lệnh này trong phần "mục lục các bài viết có giá trị của hđh *nix" hoặc gõ man rpm. Mình chỉ biết nhiêu đó, nếu thiếu mong các MOD bổ sung. 38. enca & enconv Detect and convert encoding of text files Code: enca [-L LANGUAGE] [OPTION]... [FILE]... enconv [-L LANGUAGE] [OPTION]... [FILE]... Tôi dùng Vim để soạn thảo một file tiếng Việt. Ban đầu, việc hiển thị khi gõ cũng khi save và mở lại đều ok. Bỗng nhiên hôm nay mở lại thì bị phần charset bị hỏng, và nội dung không còn hiển thị đúng tiếng Việt, mà thành thế này: Code: Bản 5.0 + cải thiện performance 5-10 lần + batched read interface + more metadata objects + giảm lượng bá»™ nhá»› + enable query cache Loay hoay một hồi, tôi cũng tìm được lệnh enca và enconv. - Lệnh enca sẽ cho biết encoding mà file đó sử dụng - Lệnh enconv dùng để chuyển đổi encoding Và may mắn, là cuối cùng tôi cũng khôi phục được phần nội dung hiển thị đúng tiếng Việt: Code: $ enconv -x UTF-8 -L none < du =" disk"> 0 (nghĩa là giảm độ ưu tiên), tận dụng CPU rảnh rỗi. Nếu kết hợp với nohup nữa thì tuyệt.
Code:

# nice gzip OfficeXpSp3-kb832671-fullfile-enu.exe

Ở một cửa sổ khác, chạy top
Code:

top - 13:44:39 up 4:34, 4 users, load average: 0.58, 0.62, 0.49
Tasks: 134 total, 2 running, 132 sleeping, 0 stopped, 0 zombie
Cpu(s): 18.5%us, 6.2%sy, 65.7%ni, 0.0%id, 9.0%wa, 0.0%hi, 0.6%si, 0.0%st
Mem: 1025596k total, 1011384k used, 14212k free, 33616k buffers
Swap: 811240k total, 84k used, 811156k free, 505860k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21685 testuser 30 10 2048 572 244 R 64.6 0.1 0:07.12 gzip OfficeXpSp3-kb832671-fullfile-enu.exe
2471 root 20 0 399m 34m 10m S 12.4 3.5 19:44.95 /usr/bin/Xorg :0 -br
12623 testuser 25 5 237m 85m 22m S 3.4 8.5 12:16.84 /usr/lib/firefox-3.0.1/firefox
21707 root 20 0 9344 2796 2240 S 1.7 0.3 0:00.03 sshd: unknown [priv]
21709 root 20 0 8556 2256 1824 S 1.7 0.2 0:00.03 sshd: [accepted]


44. split
lệnh này giúp chúng ta chia nhỏ một tập tin ra theo kích thước định sẵn. ví dụ đơn giản khi bạn có một bộ film có đuôi *.mpg dài 1GB nhưng lại không thể cho ra đĩa trắng (khoảng 700MB) . bạn có thể dùng lệnh này chia nhỏ file film đó ra thành 2 phần mỗi phần khoảng 500MB như sau :
$split -b 500m phim.mpg phim
nó sẽ chia file phim thanh 2 file là (phimaa và phimab )mỗi file có dung lượng là 500MB.

tham số: tùy chọn -b để xác định dung lượng tập tin tạo ra (được tính theo byete). sau -b là một số và một chữ cái : k (kích thước tính theo KB) hoặc m (tính theo MB). Nếu không đưa ra thông tin này thì mặc định nó sẽ là 1MB.

sau khi chia bộ phim đó được chia ra làm 2 file là phimaa và phimab thì các bạn sao ra 2 đĩa và sang một máy linux khác để dùng ghép 2 file phim này vào thành file ban đâu :

$cat phim* > phim.mpg


Tiêu đề là "vài ngày" mà đã hơn tháng rồi không có update. Hôm nay cho nó up phát.

39. du
...


42. xargs: lệnh đổi các dòng trong STDIN thành parameter cho command ở sau

Sắp xếp giảm dần theo kích cỡ của các file trong 1 thư mục:
Code:

$ du -s * | sort -rn
10884 LPIC-1.Linux.Professional.Institute.Certification.Study.Guide._Level1.Exams.101.and.102_.pdf
5476 Linux Professional Institute (LPI) Certification Bible.pdf
3100 117-101
2472 117-201
2352 OReilly.LPI.Linux.Certification.in.a.Nutshell.2nd.Edition.Jul.2006.chm
1872 117-102
1052 117-202
564 Linux Professional Institute (LPI) Certification Level 1.pdf
548 Testking LPI
72 Appendix G.pdf
8 Incorrect Answer.otl
4 questions.otl


Sort by human-readable:
Code:

$ du -s * | sort -rn | cut -f2 | xargs -d '\n' du -sh
11M LPIC-1.Linux.Professional.Institute.Certification.Study.Guide._Level1.Exams.101.and.102_.pdf
5.4M Linux Professional Institute (LPI) Certification Bible.pdf
3.1M 117-101
2.5M 117-201
2.3M OReilly.LPI.Linux.Certification.in.a.Nutshell.2nd.Edition.Jul.2006.chm
1.9M 117-102
1.1M 117-202
564K Linux Professional Institute (LPI) Certification Level 1.pdf
548K Testking LPI
72K Appendix G.pdf
8.0K Incorrect Answer.otl
4.0K questions.otl



44. split
lệnh này giúp chúng ta chia nhỏ một tập tin ra theo kích thước định sẵn ...

Để PREFIX là số thay vì chữ:
Code:

$ du -sh Open\ source\ Security\ Tools.pdf
13M Open source Security Tools.pdf

Code:

$ split -b 5m -d Open\ source\ Security\ Tools.pdf Open\ source\ Security\ Tools.
Code:

$ du -sh *
5.1M Open source Security Tools.00
5.1M Open source Security Tools.01
2.8M Open source Security Tools.02
13M Open source Security Tools.pdf


45.tar
Cái này để nén và giải nén đây
Code:

$ tar --help
GNU `tar' saves many files together into a single tape or disk archive, and
can restore individual files from the archive.

Usage: tar [OPTION]... [FILE]...

Examples:
tar -cf archive.tar foo bar # Create archive.tar from files foo and bar.
tar -tvf archive.tar # List all files in archive.tar verbosely.
tar -xf archive.tar # Extract all files from archive.tar.
VD:
Code:

$ tar -xvjf httpd-2.2.9.tar.bz2
Các option thường sử dụng:
x: giải nén.
v: liệt kê các file được bung ra trong quá trình giải nén
f: khi giải nén 1 file thì phải có option này.
j: file được giải nén có đuôi là .bz2. Trong trường hợp các định dạng file khác thì thay thế cho phù hợp (z: file.gz, Z: file.Z...). file.tar thì như ví dụ trong phần help trên.
VD giải nén 1 file.gz:
Code:

$ tar -xvzf mysql-5.0.67.tar.gz
-c: nén thành file:
Code:

$ tar -cvfj /mnt/usb/doc.bz2 ~/documents
Nén thư mục documents trong thư mục home của tui thành file doc.bz2 lưu trong /mnt/usb


46. Xem trạng thái battery của laptop

$ cd /proc/acpi/battery/BAT1

Xem các thông số sản xuất và hiện tại pin đã "thoái hóa" tới mức nào
/proc/acpi/batterry/BAT1$ cat info
present: yes
design capacity: 4000 mAh
last full capacity: 3421 mAh
battery technology: rechargeable
design voltage: 11100 mV
design capacity warning: 300 mAh
design capacity low: 136 mAh
capacity granularity 1: 32 mAh
capacity granularity 2: 32 mAh
model number: PRESPAL
serial number: 24966
battery type: LION
OEM info: PANASONIC


Tình trạng hiện tại
/proc/acpi/batterry/BAT1$ cat state
present: yes
capacity state: ok
charging state: discharging
present rate: 1896 mA
remaining capacity: 3063 mAh
present voltage: 11864 mV

47. calendar
Một số sự kiện nổi bật trên thế giới trong ngày hiện tại và ngày kế tiếp

$ calendar
Code:

Nov 19 Gettysburg Address delivered, 1863
Nov 19 Anniversary of the 1968 Coup by the Army in Mali
Nov 19 Discovery Day in Puerto Rico
Nov 19 Feast Day of S.A.S. Prince Rainier in Monaco
Nov 19 Garifuna Settlement in Belize
Nov 19* Day of Prayer and Repentance (Buss- und Bettag) in Federal Republic of Germany
Nov 19 N'oubliez pas les Tanguy !
Nov 19 Bonne fête aux Tanneguy !
Nov 19 Aujourd'hui, c'est la St(e) Mechtilde.
Nov 19 N'oubliez pas les Mathilde !
Nov 19 Bonne fête aux Patrocle !
Nov 19 Sainte Élisabeth nous montre quel bonhomme sera l'hiver.
Nov 19 День ракетных войск и артиллерии
Nov 20 Robert Francis Kennedy (RFK) born in Boston, Massachusetts, 1925
Nov 20 Revolution Day in Mexico
Nov 20 Duane Allman is born in Nashville, Tennessee, 1946
Nov 20 Joe Walsh is born in Cleveland, 1947
Nov 20 Aujourd'hui, c'est la St(e) Edmond.
Nov 20 N'oubliez pas les Octave !
Nov 20 Bonne fête aux Adventor !
Nov 20 Aujourd'hui, c'est la St(e) Solutor.
Nov 20 N'oubliez pas les Ambroise !
Nov 20 Bonne fête aux Rutus !
Nov 20 Combate de la Vuelta de Obligado, 1845

Xem các sự kiện trong ngày 02 và 03 tháng 09
$ calendar -t 02.09
Code:

Sep 02 Great Britain adopts Gregorian Calendar, 1752
Sep 02 Japan signs unconditional surrender on US battleship `Missouri', 1945
Sep 02 N'oubliez pas les Ingrid !
Sep 02 Nace en Buenos Aires el escritor Esteban Echeverría, 1805
Sep 02 Muere Bernardino Rivadavia, primer presidente argentino, 1845
Sep 03 Richard ``the Lionheart'' crowned king of England, 1189
Sep 03 Anniversary of the Founding of the Republic in San Marino
Sep 03 Independence Day in Qatar
Sep 03 Memorial Day in Tunisia
Sep 03 Bonne fête aux Grégoire !
Sep 03 Kriegserklärung Großbritaniens und Frankreichs an Deutschland, 1939
Sep 03 Vier-Mächte-Abkommen über Berlin, 1971

48, 49. gconf-editor và gconftool-2

Code:

Name : gconf-editor
Arch : i386
Version : 2.22.0
Release : 1.fc9
Size : 1.4 M
Repo : installed
Summary : Editor/admin tool for GConf
URL : http://www.gnome.org
License : GPLv2+ and GFDL
Description: gconf-editor allows you to browse and modify GConf configuration sources.


gconftool-2 - làm việc với gconf-editor từ command line

Ví dụ:

1. Dùng tổ hợp phím Windows + E để mở nautilus:

- Từ Terminal, bạn gõ: gconf-editor
- Tìm theo đường dẫn /apps/metacity/global_keybindings, nhấp đúp vào run_command_1, nhập vào giá trị E.
- Chuyển sang /apps/metacity/keybinding_commands, nhấp đúp vào command_1, nhập vào nautilus

2. Dùng tổ hợp phím Alt + L để khoá màn hình

Code:

$ gconftool-2 --type string --set /apps/metacity/global_keybindings/run_command_2 "L"
$ gconftool-2 --type string --set /apps/metacity/keybinding_commands/command_2 "gnome-screensaver-command --lock"


3. Alt + X để chạy xvnkb
Code:

$ gconftool-2 -t string -s /apps/metacity/global_keybindings/run_command_3 "X"
$ gconftool-2 -t string -s /apps/metacity/keybinding_commands/command_3 "xvnkb --method=telex --charset=utf8"

...

Bạn thử enable remote desktop bằng command line xem?


51. mpstat

Dùng để in ra trạng thái của cpu: user, idle, sys, iowait.. và các số liệu liên quan.


Code:

# mpstat
Linux 2.6.18-92.el5 (s1.xyz.com) 12/05/2008

09:38:26 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
09:38:26 AM all 13.98 0.05 15.57 2.45 0.02 0.60 0.00 67.34 2426.45



Để xem trang thái của tất cả các cpu:

Code:

# mpstat -P ALL

Linux 2.6.18-92.el5 (s1.xyz.com) 12/05/2008

09:47:16 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
09:47:16 AM all 13.98 0.05 15.53 2.44 0.02 0.60 0.00 67.38 2429.00
09:47:16 AM 0 10.98 0.04 15.04 1.83 0.00 0.35 0.00 71.76 1000.99
09:47:16 AM 1 10.75 0.12 14.08 5.46 0.01 0.37 0.00 69.22 64.27
09:47:16 AM 2 12.08 0.04 15.15 1.84 0.00 0.47 0.00 70.41 0.00
09:47:16 AM 3 12.94 0.05 15.75 2.08 0.00 0.43 0.00 68.74 13.53
09:47:16 AM 4 11.87 0.05 16.69 2.50 0.01 0.32 0.00 68.57 30.14
09:47:16 AM 5 14.01 0.04 13.71 1.81 0.00 0.29 0.00 70.13 0.49
09:47:16 AM 6 13.62 0.03 18.13 1.76 0.00 0.41 0.00 66.05 24.52
09:47:16 AM 7 25.55 0.01 15.74 2.26 0.16 2.16 0.00 54.13 1295.06


Hnay xài 2 lệnh này hơi bị nhiều