banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Vài ngày học một lệnh (hoặc một tiện ích) trong Linux  XML
  [Question]   Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 01/03/2008 21:36:08 (+0700) | #1 | 117385
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Tớ lập topic này với mục đích: Thi thoảng mọi người giới thiệu những lệnh hay, những tiện ích thú vị khi làm việc trên môi trường Linux.

Tất nhiên khi giới thiệu, có thể chỉ cần nói tên lệnh là đủ, nhưng mọi người nên giải thích và cho ví dụ càng nhiều càng tốt. Còn các tùy chọn đi kèm khác có thể đọc man

Các bạn có thể tham khảo Alphabetical Directory of Linux Commands tại http://www.linuxdevcenter.com/linux/cmd/

Tớ xin "mở màn" bằng một vài lệnh:

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ụ:

$ 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.

Chủ đề hay, Hoàng sticky nha
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 03/03/2008 08:52:20 (+0700) | #2 | 117631
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
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:

$ 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:

$ 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 http://www.cyberciti.biz/tips/what-is-devshm-and-its-practical-usage.html.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 05/03/2008 08:51:15 (+0700) | #3 | 117978
pnco
HVA Friend

Joined: 24/06/2005 16:33:48
Messages: 515
Offline
[Profile] [PM] [WWW]
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:

~$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.
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 06/03/2008 13:22:16 (+0700) | #4 | 118118
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
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:

$ 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:

$ 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

Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 10/03/2008 02:57:15 (+0700) | #5 | 118722
FaL
Moderator

Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
[Profile] [PM]
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
Hãy giữ một trái tim nóng và một cái đầu lạnh
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 10/03/2008 04:52:38 (+0700) | #6 | 118733
[Avatar]
blueocean89
Member

[Minus]    0    [Plus]
Joined: 31/08/2007 12:06:33
Messages: 156
Location: r00f
Offline
[Profile] [PM]
Xin cho đóng góp:
1. history
.::history - GNU History Library::.

Liệt kê các dòng lệnh hay những gì đã được gõ trên Terminal theo số thứ tự. Ta có thể gọi lại những lệnh ấy nhanh chóng bằng cách gõ !n với n là số thứ tự lệnh đã đã gõ và liệt kê bằng lệnh history.
Xin gõ man history để biết thêm chi tiết.

2. Dấu &
.:: Tiến trình hậu cảnh ::.
Khi một trương trình chạy với thởi gian lâu, ta có thể cho chúng chạy nền [chế độ hậu cảnh] ví dụ như tìm kiếm chẳng hạn - điều này giúp ta tiếp tục thực hiện việc khác. Để đưa tiến trình chạy ở hậu cảnh ta thêm dấu & vào sau lệnh thực hiện chương trình.

Như trong ví dụ dưới đây thì [1] là thứ tự tiến trình chạy ở hậu cảnh, 13766 là mã số tiến trình [PID].
Code:
blueocean@bl-dektop:~$ gnome-system-log &
[1] 13766
blueocean@bl-dektop:~$


Như trong ví dụ thì dấu nhắc đã được trả lại cho ta làm việc khác.

3. Lệnh jobs
Giúp xem các tiến trình chạy trong hậu cảnh.

Code:
blueocean@bl-dektop:~$ jobs
[1]-  Running                 gnome-system-log &
[2]+  Running                 opera &
blueocean@bl-dektop:~$


trons pacrette tiolpsatem otkin ypacs
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 10/03/2008 10:57:09 (+0700) | #7 | 118764
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

FaL wrote:
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

...
 

Trong man của grep có một tùy chọn khá hay, đó là -v (--invert-match). Tùy chọn này có ý nghĩa là bạn sẽ lọc ra những dòng text không match với PATTERN. Ví dụ bạn có một file cấu hình của ssh (/etc/ssh/sshd_config). Bạn muốn lọc ra tất cả những dòng mang giá trị cấu hình "thật sự", loại bỏ đi những dòng comment (bắt đầu bằng dấu #), bạn có thể sử dụng tùy chọn -v của grep:
Code:
$ sudo grep -v "^#" /etc/ssh/sshd_config 
Password:




Port 2256

Protocol 2



SyslogFacility AUTHPRIV


MaxAuthTries 3



PasswordAuthentication yes

ChallengeResponseAuthentication no


GSSAPIAuthentication yes
GSSAPICleanupCredentials yes

UsePAM yes

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES 
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT 
AcceptEnv LC_IDENTIFICATION LC_ALL
X11Forwarding yes


Subsystem       sftp    /usr/libexec/openssh/sftp-server

Để viết được lệnh trên bạn cần một chút kiến thức về regex (Regular Expression). Tôi có thể diễn giải nó như sau: "Lọc tất cả những dòng trong file sshd_config không bắt đầu bằng dấu #". Trong regex, ký tự ^ được hiểu là bắt đầu của một dòng.

Trong output của lệnh trên do bạn chỉ bỏ đi những dòng comment nên vẫn còn xuất hiện những dòng trắng (blank lines). Để có thể bỏ đi những dòng này và làm cho output đẹp hơn bạn có thể dùng lệnh sed. Chi tiết về lệnh này chúng ta có thể tìm hiểu vào một dịp khác. Ở đây tôi chỉ muốn giới thiệu một chức năng cơ bản của sed.

Để xoá những dòng blank từ output trên tôi chạy:
Code:
$ sudo grep -v "^#" /etc/ssh/sshd_config | sed '/^$/d'
Port 2256
Protocol 2
SyslogFacility AUTHPRIV
MaxAuthTries 3
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES 
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT 
AcceptEnv LC_IDENTIFICATION LC_ALL
X11Forwarding yes
Subsystem       sftp    /usr/libexec/openssh/sftp-server

Diễn giải: $ được hiểu là kết thúc của một dòng. Như vậy lệnh trên sẽ tìm tất cả những dòng mà giữa "bắt đầu" (^) và kết thúc ($) không có ký tự nào (blank line), sau đó xoá nó đi (d).

Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 13/03/2008 12:40:39 (+0700) | #8 | 119195
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
14. chroot

Cú pháp là:
chroot NEWROOT [COMMAND [ARGS]...] 

Lệnh này sẽ đổi thư mục root đến NEWROOT và chạy lệnh COMMAND với các tham số ARGS.
Chỉ có super-user mới có quyền chạy lệnh này.

Lấy một ví dụ:

+ Tạo một thư mục chroot trong /tmp:
[root@stubborn quanta]# mkdir /tmp/chroot/
[root@stubborn quanta]# cd /tmp/chroot

+ Tạo một số thư mục con trong thư mục này:
[root@stubborn chroot]# mkdir bin lib home

+ Bây giờ chúng ta copy /bin/bash và các thư viện phụ thuộc qua cấu trúc thư mục trong /tmp/chroot. Đầu tiên sử dụng lệnh ldd để liệt kê các thư viện phụ thuộc:
Code:
[root@stubborn chroot]# ldd /bin/bash
        linux-gate.so.1 =>  (0x00110000)
        libtinfo.so.5 => /lib/libtinfo.so.5 (0x0222b000)
        libdl.so.2 => /lib/libdl.so.2 (0x00b47000)
        libc.so.6 => /lib/libc.so.6 (0x009c1000)
        /lib/ld-linux.so.2 (0x00b8e000)


+ Copy các thư viện này sang thư mục /tmp/chroot/lib tương ứng:
Code:
[root@stubborn chroot]$ cp /lib/libtinfo.so.5 /tmp/chroot/lib/
[root@stubborn chroot]$ cp /lib/libdl.so.2 /tmp/chroot/lib/
[root@stubborn chroot]$ cp /lib/libc.so.6 /tmp/chroot/lib/
[root@stubborn chroot]# cp /lib/ld-linux.so.2 /tmp/chroot/lib/


+ Bây giờ copy /bin/bash sang /tmp/chroot/bin:
[root@stubborn chroot]# cp /bin/bash /tmp/chroot/bin

+ Dùng lệnh chroot chuyển sang thư mục /tmp/chroot/:
[root@stubborn chroot]# chroot /tmp/chroot/

Nếu bạn gặp lỗi tương tự như:
chroot: cannot run command `/bin/bash': No such file or directory 

hãy kiểm tra lại xem bạn đã copy đầy đủ các thư viện phụ thuộc qua /tmp/chroot/lib chưa?

+ Sau khi thực hiện chroot, bạn có:
Code:
[root@stubborn chroot]# chroot /tmp/chroot/
bash-3.2#


+ Thử gõ vài lệnh xem sao:
Code:
bash-3.2# pwd
/
bash-3.2# ls
bash: ls: command not found

Như bạn thấy: thư mục hiện tại là / và lệnh ls không được tìm thấy. Gõ exit để thoát.
Code:
bash-3.2# exit
exit
[root@stubborn chroot]#


Bây giờ thử copy lệnh /bin/ls qua /tmp/chroot/bin sau đó thực hiện lại xem sao:
Code:
[root@stubborn chroot]# cp /bin/ls /tmp/chroot/bin/
[root@stubborn chroot]# chroot /tmp/chroot/
bash-3.2# ls
ls: error while loading shared libraries: librt.so.1: cannot open shared object file: No such file or directory

Như vậy là ls vẫn còn thiếu một số thư viện để có thể chạy.

Copy nốt các thư viện này qua /tmp/chroot/lib và thực hiện lần cuối:
Code:
[root@stubborn chroot]# ldd /bin/ls
        linux-gate.so.1 =>  (0x00110000)
        librt.so.1 => /lib/librt.so.1 (0x00365000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x0030d000)
        libacl.so.1 => /lib/libacl.so.1 (0x00691000)
        libc.so.6 => /lib/libc.so.6 (0x009c1000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00b4e000)
        /lib/ld-linux.so.2 (0x00b8e000)
        libdl.so.2 => /lib/libdl.so.2 (0x00b47000)
        libattr.so.1 => /lib/libattr.so.1 (0x0068a000)
[root@stubborn chroot]# cp /lib/librt.so.1 /tmp/chroot/lib
[root@stubborn chroot]# cp /lib/libselinux.so.1 /tmp/chroot/lib
[root@stubborn chroot]# cp /lib/libacl.so.1 /tmp/chroot/lib/
[root@stubborn chroot]# cp /lib/libpthread.so.0 /tmp/chroot/lib/
[root@stubborn chroot]# cp /lib/libdl.so.2 /tmp/chroot/lib/
[root@stubborn chroot]# cp /lib/libattr.so.1 /tmp/chroot/lib/
[root@stubborn chroot]# chroot /tmp/chroot/
bash-3.2# ls
bin  home  lib
bash-3.2#
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 14/03/2008 02:18:32 (+0700) | #9 | 119244
[Avatar]
AIO
Member

[Minus]    0    [Plus]
Joined: 21/02/2008 23:44:02
Messages: 127
Offline
[Profile] [PM]

quanta wrote:
Lệnh này sẽ đổi thư mục root đến NEWROOT và chạy lệnh COMMAND với các tham số ARGS. 

Bác quanta có thể nói rõ hơn về cái đổi thư mục root được không ? Em thấy cách gọi "thư mục root" và từ "đổi" sử dụng cho chroot đối với các newbie như em vẫn khá mơ hồ.

Em xin lỗi đã chen ngang nhưng nếu lập topic mới em thấy cũng hơi khó. Nếu cần bác có thể xóa cái reply của em (hình như em ko nên nói câu này) nhưng bác có thể trả lời vào chính phần chroot của bác được không ?

Cám ơn bác.
chẳng ai nghĩ gì về mình cả
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 14/03/2008 05:23:43 (+0700) | #10 | 119253
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

AIO wrote:

quanta wrote:
Lệnh này sẽ đổi thư mục root đến NEWROOT và chạy lệnh COMMAND với các tham số ARGS. 

Bác quanta có thể nói rõ hơn về cái đổi thư mục root được không ? Em thấy cách gọi "thư mục root" và từ "đổi" sử dụng cho chroot đối với các newbie như em vẫn khá mơ hồ.
 

Chào AIO,

Thử gõ info chroot và đọc, bạn sẽ rõ hơn.

Trên *nix, khi bạn gõ một lệnh, nó sẽ được tìm bắt đầu từ thư mục gốc trong cấu trúc thư mục (tức là root - /). Bây giờ khi bạn thực hiện chroot qua thư mục NEWROOT, gõ một lệnh nào đó, nó sẽ được tìm bắt đầu từ NEWROOT (lúc này NEWROOT được hiểu là thư mục gốc), chứ không phải là /. Đó là lý do tại sao, ở ví dụ trên, khi bạn gõ ls, bạn nhận được thông báo "bash: ls: command not found" (vì ls không nằm trong thư mục bin của /tmp/chroot).


Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 14/03/2008 10:19:27 (+0700) | #11 | 119275
ayunpa
Member

[Minus]    0    [Plus]
Joined: 07/06/2007 23:36:08
Messages: 10
Offline
[Profile] [PM]
Chào mọi người!
Mình thấy mục này rất bổ ích. Vì còn amatuer nen ko dám góp ý, đang có một thắc mắc chưa biết hỏi ở đâu, tiên đây xin hỏi luôn: mình đang dùng FC1, mình dùng lệnh "groupadd" để tạo nhóm, sách thì chỉ vậy nhưng mình thực thi lệnh thì FC báo bash not found... Ai biết chỉ mình với! Mình xin cảm ơn nhiều.
P/s: Xin lỗi vì đã post lộn chỗ nha! smilie
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 14/03/2008 10:59:26 (+0700) | #12 | 119284
[Avatar]
AIO
Member

[Minus]    0    [Plus]
Joined: 21/02/2008 23:44:02
Messages: 127
Offline
[Profile] [PM]
Cảm ơn bác quanta. Em cũng có một lệnh cũng hay.

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ề :

quanta wrote:
Hì, bạn quên không nói là cho đoạn code này vào đâu à? Nếu được thì bạn tìm hiểu và viết tiếp về: ~/.bashrc, ~/.bash_profile, /etc/profile, ... 
chẳng ai nghĩ gì về mình cả
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 14/03/2008 11:10:03 (+0700) | #13 | 119286
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

ayunpa wrote:
Chào mọi người!
Mình thấy mục này rất bổ ích. Vì còn amatuer nen ko dám góp ý, đang có một thắc mắc chưa biết hỏi ở đâu, tiên đây xin hỏi luôn: mình đang dùng FC1, mình dùng lệnh "groupadd" để tạo nhóm, sách thì chỉ vậy nhưng mình thực thi lệnh thì FC báo bash not found... Ai biết chỉ mình với! Mình xin cảm ơn nhiều.
P/s: Xin lỗi vì đã post lộn chỗ nha! smilie 

--> Lần sau bạn nên đưa thông báo lỗi đầy đủ và chính xác.

Khi gặp những lỗi tương tự như "bash: groupadd: command not found", bạn có thể dùng lệnh which groupadd để biết đường dẫn đầy đủ của nó. Nếu which trả về thông báo tương tự như "/usr/bin/which: no groupadd in...", bạn có thể dùng:
Code:
$ whereis groupadd
groupadd: /usr/sbin/groupadd /usr/share/man/man8/groupadd.8.gz

Như bạn thấy groupadd nằm trong /usr/sbin. Bạn phải thực hiện nó với super-user bằng cách chạy lệnh su và nhập vào password của root.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 14/03/2008 11:39:02 (+0700) | #14 | 119293
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

AIO wrote:
Cảm ơn bác quanta. Em cũng có một lệnh cũng hay.

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 

Hì, bạn quên không nói là cho đoạn code này vào đâu à? Nếu được thì bạn tìm hiểu và viết tiếp về: ~/.bashrc, ~/.bash_profile, /etc/profile, ...
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 15/03/2008 00:57:10 (+0700) | #15 | 119337
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Cảm ơn mọi người đã tham gia topic của tớ. Ai tham gia vui lòng đánh số thứ tự cho các lệnh để tiện theo dõi.

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
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 15/03/2008 01:30:34 (+0700) | #16 | 119343
FaL
Moderator

Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
[Profile] [PM]
Chà, có mấy cái lệnh này cũng dzui:
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


Hì, có nhiều client phết nhỉ? :p
Hãy giữ một trái tim nóng và một cái đầu lạnh
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 15/03/2008 03:19:59 (+0700) | #17 | 119361
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

FaL wrote:

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 đó.
 

Trong *nix, . có nghĩa là thư mục hiện tại, .. có nghĩa là thư mục cha. Vậy để chuyển ra ngoài thư mục cha, bạn gõ:
Code:
$ cd ..

(Lưu ý: Sau cd có một khoảng trắng)
Bây giờ, giả sử bạn đang làm việc trong thư mục /mnt/data/linux. Sau đó bạn chuyển sang thư mục /etc/sysconfig. Để quay trở lại thư mục /mnt/data/linux, bạn gõ:
Code:
$ cd -

(Lưu ý: Sau cd có một khoảng trắng)
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 15/03/2008 23:51:35 (+0700) | #18 | 119505
[Avatar]
dabu
Elite Member

[Minus]    0    [Plus]
Joined: 03/03/2003 03:31:20
Messages: 226
Offline
[Profile] [PM]
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
 
It's time to build a new network.
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 07/04/2008 07:18:15 (+0700) | #19 | 123716
[Avatar]
SuperChicken
Elite Member

[Minus]    0    [Plus]
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
[Profile] [PM]
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.
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 07/04/2008 12:44:37 (+0700) | #20 | 123756
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

chicken_IT wrote:
xin lỗi vì đã chen ngang! nhưng sao lâu rùi mình ko thấy các pro viết thêm vậy!mình thấy topic này rất hay!các pác nào pro về Linux xin bỏ chút thời gian để viết thêm cho newbie tụi em nghiên cứu!
cảm ơn các pác! 

Chào chicken_IT,

Tớ lập chủ đề này với mong muốn mọi người cùng đóng góp mà. Bạn hoàn toàn có thể đóng góp được và nên làm điều đó thì chủ đề này nó mới sống lâu được.

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

Code:
# kill -9 `lsof -t /dev/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
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 09/04/2008 11:07:23 (+0700) | #21 | 124139
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
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


Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 09/04/2008 23:08:58 (+0700) | #22 | 124230
[Avatar]
nil
Elite Member

[Minus]    0    [Plus]
Joined: 12/12/2006 18:37:46
Messages: 271
Location: Thùng rác
Offline
[Profile] [PM] [WWW]
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

[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 06/05/2008 12:36:32 (+0700) | #23 | 129171
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
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
 

Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 09/05/2008 05:39:24 (+0700) | #24 | 129649
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
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
 
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 05/06/2008 11:58:23 (+0700) | #25 | 134219
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
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 pushdpopd. 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-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ử.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 13/06/2008 03:30:00 (+0700) | #26 | 135207
[Avatar]
delangthang
Member

[Minus]    0    [Plus]
Joined: 05/04/2005 19:49:08
Messages: 29
Offline
[Profile] [PM]
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.
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 13/06/2008 22:44:49 (+0700) | #27 | 135369
[Avatar]
delangthang
Member

[Minus]    0    [Plus]
Joined: 05/04/2005 19:49:08
Messages: 29
Offline
[Profile] [PM]
33. uname
Bạn đang chuẩn bị tải 1 phần mềm (MySQL chẳng hạn smilie) 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
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 15/06/2008 12:32:14 (+0700) | #28 | 135634
[Avatar]
lihavim
Elite Member

[Minus]    0    [Plus]
Joined: 08/06/2004 15:19:32
Messages: 506
Offline
[Profile] [PM]

quanta wrote:
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 pushdpopd. 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 smilie.
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 20/06/2008 05:00:19 (+0700) | #29 | 136477
[Avatar]
phpvirus
Member

[Minus]    0    [Plus]
Joined: 20/09/2006 00:31:36
Messages: 110
Location: TP HCM
Offline
[Profile] [PM] [Yahoo!]
Đ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.

Thân
[Up] [Print Copy]
  [Question]   Re: Vài ngày học một lệnh Linux 20/06/2008 06:56:46 (+0700) | #30 | 136489
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

phpvirus wrote:
Đ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.
...
 

Về umask:
- Chỗ nào bạn cho là "huyền bí"?
- Điểm nào bạn chưa hiểu rõ?

Về sticky bit, đã có một vài topics trên HVA thảo luận khá sôi nổi. Bạn có thể tìm lại.
Let's build on a great foundation!
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|