<![CDATA[Latest posts for the topic "Vài ngày học một lệnh (hoặc một tiện ích) trong Linux"]]> /hvaonline/posts/list/24.html JForum - http://www.jforum.net Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 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]]>
/hvaonline/posts/list/19738.html#117385 /hvaonline/posts/list/19738.html#117385 GMT
Re: Vài ngày học một lệnh Linux 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.]]>
/hvaonline/posts/list/19738.html#117631 /hvaonline/posts/list/19738.html#117631 GMT
Re: Vài ngày học một lệnh Linux 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.]]>
/hvaonline/posts/list/19738.html#117978 /hvaonline/posts/list/19738.html#117978 GMT
Re: Vài ngày học một lệnh Linux 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
]]>
/hvaonline/posts/list/19738.html#118118 /hvaonline/posts/list/19738.html#118118 GMT
Re: Vài ngày học một lệnh Linux 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
]]>
/hvaonline/posts/list/19738.html#118722 /hvaonline/posts/list/19738.html#118722 GMT
Re: Vài ngày học một lệnh Linux 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:~$
]]>
/hvaonline/posts/list/19738.html#118733 /hvaonline/posts/list/19738.html#118733 GMT
Re: Vài ngày học một lệnh Linux

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). ]]>
/hvaonline/posts/list/19738.html#118764 /hvaonline/posts/list/19738.html#118764 GMT
Re: Vài ngày học một lệnh Linux 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#
]]>
/hvaonline/posts/list/19738.html#119195 /hvaonline/posts/list/19738.html#119195 GMT
Re: Vài ngày học một lệnh Linux

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.]]>
/hvaonline/posts/list/19738.html#119244 /hvaonline/posts/list/19738.html#119244 GMT
Re: Vài ngày học một lệnh Linux

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). ]]>
/hvaonline/posts/list/19738.html#119253 /hvaonline/posts/list/19738.html#119253 GMT
Re: Vài ngày học một lệnh Linux /hvaonline/posts/list/19738.html#119275 /hvaonline/posts/list/19738.html#119275 GMT Re: Vài ngày học một lệnh Linux 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, ... 
]]>
/hvaonline/posts/list/19738.html#119284 /hvaonline/posts/list/19738.html#119284 GMT
Re: Vài ngày học một lệnh Linux

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! :D 
--> 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.]]>
/hvaonline/posts/list/19738.html#119286 /hvaonline/posts/list/19738.html#119286 GMT
Re: Vài ngày học một lệnh Linux

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, ...]]>
/hvaonline/posts/list/19738.html#119293 /hvaonline/posts/list/19738.html#119293 GMT
Re: Vài ngày học một lệnh Linux 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
]]>
/hvaonline/posts/list/19738.html#119337 /hvaonline/posts/list/19738.html#119337 GMT
Re: Vài ngày học một lệnh Linux 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]]>
/hvaonline/posts/list/19738.html#119343 /hvaonline/posts/list/19738.html#119343 GMT
Re: Vài ngày học một lệnh Linux

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)]]>
/hvaonline/posts/list/19738.html#119361 /hvaonline/posts/list/19738.html#119361 GMT
Re: Vài ngày học một lệnh Linux 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  
]]>
/hvaonline/posts/list/19738.html#119505 /hvaonline/posts/list/19738.html#119505 GMT
Re: Vài ngày học một lệnh Linux 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.]]> /hvaonline/posts/list/19738.html#123716 /hvaonline/posts/list/19738.html#123716 GMT Re: Vài ngày học một lệnh Linux

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
]]>
/hvaonline/posts/list/19738.html#123756 /hvaonline/posts/list/19738.html#123756 GMT
Re: Vài ngày học một lệnh Linux 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
]]>
/hvaonline/posts/list/19738.html#124139 /hvaonline/posts/list/19738.html#124139 GMT
Re: Vài ngày học một lệnh Linux 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
]]>
/hvaonline/posts/list/19738.html#124230 /hvaonline/posts/list/19738.html#124230 GMT
Re: Vài ngày học một lệnh Linux 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  
]]>
/hvaonline/posts/list/19738.html#129171 /hvaonline/posts/list/19738.html#129171 GMT
Re: Vài ngày học một lệnh Linux 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  
]]>
/hvaonline/posts/list/19738.html#129649 /hvaonline/posts/list/19738.html#129649 GMT
Re: Vài ngày học một lệnh Linux 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ử.]]>
/hvaonline/posts/list/19738.html#134219 /hvaonline/posts/list/19738.html#134219 GMT
Re: Vài ngày học một lệnh Linux 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.]]>
/hvaonline/posts/list/19738.html#135207 /hvaonline/posts/list/19738.html#135207 GMT
Re: Vài ngày học một lệnh Linux 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
]]>
/hvaonline/posts/list/19738.html#135369 /hvaonline/posts/list/19738.html#135369 GMT
Re: Vài ngày học một lệnh Linux

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 :D.]]>
/hvaonline/posts/list/19738.html#135634 /hvaonline/posts/list/19738.html#135634 GMT
Re: Vài ngày học một lệnh Linux 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 ]]> /hvaonline/posts/list/19738.html#136477 /hvaonline/posts/list/19738.html#136477 GMT Re: Vài ngày học một lệnh Linux

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.]]>
/hvaonline/posts/list/19738.html#136489 /hvaonline/posts/list/19738.html#136489 GMT
Re: Vài ngày học một lệnh Linux 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 encaenconv. - 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 < MySQL\ Cluster
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
Hiện tại vẫn chưa biết nguyên nhân tại sao. Nhưng cũng xin ghi lại solution để anh em nào gặp tình trạng này có thể dùng. ]]>
/hvaonline/posts/list/19738.html#136954 /hvaonline/posts/list/19738.html#136954 GMT
Re: Vài ngày học một lệnh Linux

SuperChicken wrote:
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. 
Bạn có chắc là lệnh ở ví dụ trên chạy tốt ? ;) Trong trường hợp filename có khoảng trống (blank) thì có chạy không ? Trong trường hợp có quá nhiều file (vài trăm nghìn đến khoảng 1 triệu file) thì có chạy được không ? ]]>
/hvaonline/posts/list/19738.html#138745 /hvaonline/posts/list/19738.html#138745 GMT
Re: Vài ngày học một lệnh Linux

vnpenguin wrote:

SuperChicken wrote:
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. 
Bạn có chắc là lệnh ở ví dụ trên chạy tốt ? ;)  
Phải có một khoảng trắng ở giữa {}\

vnpenguin wrote:
Trong trường hợp filename có khoảng trống (blank) thì có chạy không ?  
Không hiểu ý SuperChicken có phải là xóa những files tận cùng bằng .svn. Nếu thế thì sao không rm -fr *.svn nhỉ?

vnpenguin wrote:
Trong trường hợp có quá nhiều file (vài trăm nghìn đến khoảng 1 triệu file) thì có chạy được không ?  
Tôi vừa test với 300000 files, nó chạy hết ... 20 phút. ]]>
/hvaonline/posts/list/19738.html#139254 /hvaonline/posts/list/19738.html#139254 GMT
Re: Vài ngày học một lệnh Linux

quanta wrote:
Không hiểu ý SuperChicken có phải là xóa những files tận cùng bằng .svn. Nếu thế thì sao không rm -fr *.svn nhỉ? 
Chính xác là xóa những files tận cùng bằng .svn trong thư mục hiện tại và tất cả các thư mục con. Câu lệnh rm -fr *.svn chỉ xóa file trong thư mục hiện tại. Bổ sung thêm là rm -fr *.svn bị giới hạn số file nên không thể chạy được khi số lượng file .svn quá nhiều.]]>
/hvaonline/posts/list/19738.html#139269 /hvaonline/posts/list/19738.html#139269 GMT
Re: Vài ngày học một lệnh Linux

quanta wrote:

vnpenguin wrote:
Bạn có chắc là lệnh ở ví dụ trên chạy tốt ? ;)  
Phải có một khoảng trắng ở giữa {}\ 
Chính xác, hình như là tui gõ thiếu :D . Còn việc chạy tốt hay không thì tất nhiên tui đã dùng rồi thì mới dám đưa lên chứ, tui vẫn thường dùng cách này để xóa tất cả file của SVN trong 1 thư mục.

quanta wrote:
Không hiểu ý SuperChicken có phải là xóa những files tận cùng bằng .svn. Nếu thế thì sao không rm -fr *.svn nhỉ? 
Cái này thì LinuXpert trả lời rồi đó. Giả sử có 3 thư mục, .svn, abc, def (trong abc, def lại có những thư mục .svn) thì nó sẽ chỉ xóa thư mục .svn ở ngoài thôi, còn mấy thư mục .svn trong abcdef thì nó không xóa.]]>
/hvaonline/posts/list/19738.html#139380 /hvaonline/posts/list/19738.html#139380 GMT
Re: Vài ngày học một lệnh Linux

quanta wrote:
Tôi vừa test với 300000 files, nó chạy hết ... 20 phút.  
hmm :)]]>
/hvaonline/posts/list/19738.html#139494 /hvaonline/posts/list/19738.html#139494 GMT
Re: Vài ngày học một lệnh Linux 39. du Nếu không nhầm thì du = disk usage. Lệnh này để xem dung lượng đã sử dụng của 1 thư mục (đôi khi bạn cũng muốn biết thư mục chứa film của mình được mấy Gb :D hoặc bạn muốn xem dung lượng của thư mục mình chuẩn bị backup là bao nhiêu để chuẩn bị thiết bị lưu trữ...) Code:
# du -hs /home
3.5G    /home
# du -hs /etc
92M     /etc
# du -hs /bin
5.2M    /bin
Bạn cũng có thể dùng:
du -sb dir (size in Bytes) du -sk dir (size in KBytes) du -sm dir (size in MegaBytes) 
Xem thêm:
http://linux.die.net/man/1/du 
]]>
/hvaonline/posts/list/19738.html#148585 /hvaonline/posts/list/19738.html#148585 GMT
Re: Vài ngày học một lệnh Linux 40. nohup Nếu bạn muốn thực hiện một lệnh từ xa, mà lệnh đó chiếm nhiều thời gian ( ví dụ như backup hoặc restore database ), bạn nên dùng nohup: Code:
# nohup command &
Khi đó trong thời gian thực hiện lệnh, nếu kết nối tới máy chủ của bạn bị ngắt dẫn tới việc terminal thoát ra, thì lệnh command vẫn tiếp tục chạy.]]>
/hvaonline/posts/list/19738.html#148600 /hvaonline/posts/list/19738.html#148600 GMT
Re: Vài ngày học một lệnh Linux Code:
[text@server ~]$ uptime 
 13:32:50 up  4:22,  3 users,  load average: 0.34, 0.32, 0.33
42. xargs: lệnh đổi các dòng trong STDIN thành parameter cho command ở sau. Ví dụ nén tất cả các file trong thư mục hiện thời thành gz (tất nhiên gõ gzip * cũng được). Code:
# ls | xargs gzip
43. nice: khi chạy 1 ứng dụng nặng nào đó, tốn nhiều CPU, không cần gấp gáp quá, mà không muốn ảnh hưởng tới các foreground process. Nice sẽ đặt trị số NICE của process lên > 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]
]]>
/hvaonline/posts/list/19738.html#148602 /hvaonline/posts/list/19738.html#148602 GMT
Re: Vài ngày học một lệnh Linux 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 
]]>
/hvaonline/posts/list/19738.html#150737 /hvaonline/posts/list/19738.html#150737 GMT
Re: Vài ngày học một lệnh Linux 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
]]>
/hvaonline/posts/list/19738.html#150738 /hvaonline/posts/list/19738.html#150738 GMT
Re: Vài ngày học một lệnh Linux 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
]]>
/hvaonline/posts/list/19738.html#150740 /hvaonline/posts/list/19738.html#150740 GMT
Re: Vài ngày học một lệnh Linux

thangdiablo wrote:
Lão nào control cái box này PIN bài lên nhé. 
Không ai PIN thì tớ cho nó up tiếp vậy. Nhớ hồi mới mày mò Linux, tải về mấy gói source để cài đặt, chúng được nén dạng gz, bz2 gì đó, phải kiếm winrar để giải nén trên window$ rồi hì hục chép qua máy linux. hix, ngu thế không biết. 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]]>
/hvaonline/posts/list/19738.html#154378 /hvaonline/posts/list/19738.html#154378 GMT
Re: Vài ngày học một lệnh Linux

lihavim wrote:

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 :D. 
Vài alias tôi dùng trên máy (bạn có thể tùy ý sáng tạo): 1. Cho normal user: Code:
alias ..='cd ..'
alias ...='cd ../../'
alias cl='clear'
alias df='df -h'
alias l='cd /mnt/data/linux'
alias p='cd /mnt/data/linux/packages' 
alias c='cd /mnt/data/linux/code'
alias e='cd /mnt/data/linux/ebooks'
alias t='cd /mnt/data/linux/To\ do\ write'
alias v1='cd /mnt/data/Video'
alias tcs='cd /mnt/data/Music/01_TrinhCongSon/'
alias v2='cd /home/quanta/Video'
alias m='cd /mnt/data/Music'
alias v='vnstat $1'
alias h='history'
alias trim='grep -v "^#" $1 | sed "/^$/d"'
alias mk='mkdir'
alias j='job -l'
alias f='freemind'
alias ff='firefox &'
alias s='skype &'
alias t='cd /mnt/data/linux/To\ do\ write'
alias x='xvnkb --method=telex --charset=utf8'
alias v='VBoxManage'
alias a='aria2c $1'
2. Cho root: Code:
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias h='history'
alias cdrom='mount /dev/sr0 /mnt/cdrom'
alias log='tail -f /var/log/messages'
alias trim='grep -v "^#" $1 | sed "/^$/d"'
alias s='service $1 $2'
alias openports='netstat -nape --inet'
alias psx='ps -auxw | grep $1'
alias b='echo $2 > /sys/devices/virtual/backlight/sony/brightness'
alias v='vnstat $1'
alias pt='powertop'
alias n='netstat $1'
alias r='route $1'
alias e='exit'
alias t='tail -f $1'
Sau khi thêm những dòng này vào ~/.bashrc, để có thể dùng luôn, các bạn cần gõ lệnh: Code:
$ . ~/.bashrc
hoặc: Code:
$ source ~/.bashrc
]]>
/hvaonline/posts/list/19738.html#154441 /hvaonline/posts/list/19738.html#154441 GMT
Re:Vài ngày học một lệnh Linux 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 . -jfs ]]> /hvaonline/posts/list/19738.html#155472 /hvaonline/posts/list/19738.html#155472 GMT Re: Vài ngày học một lệnh Linux 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 
]]>
/hvaonline/posts/list/19738.html#159371 /hvaonline/posts/list/19738.html#159371 GMT
Re: Vài ngày học một lệnh Linux 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
]]>
/hvaonline/posts/list/19738.html#159480 /hvaonline/posts/list/19738.html#159480 GMT
Re: Vài ngày học một lệnh Linux Code:
root@GantzPC:~# calendar -t 11.9     
Sep 11 	Terrorists destroy World Trade Center in New York, 2001
Sep 11 	Anniversary of military coup in Chile
Sep 11 	Ethiopian New Year in Ethiopia
Sep 11 	National Holiday in Chile
Sep 11 	Aujourd'hui, c'est la St(e) Adelphe.
Sep 11 	Tu peux semer sans crainte
	Quand arrive la saint Hyacinthe.
Sep 12 	Jesse Owens born, 1913
Sep 12 	German paratroopers rescue Mussolini from captivity, 1943
Sep 12 	Germany annexes Sudetenland, 1938
Sep 12 	Amilcar Cabral's Birthday in Guinea-Bissau
Sep 12 	Defender's Day in Maryland
Sep 12 	Revolution Day in Ethiopia
Sep 12 	N'oubliez pas les Apollinaire !
Trong ubuntu có lệnh này.]]>
/hvaonline/posts/list/19738.html#160999 /hvaonline/posts/list/19738.html#160999 GMT
Re: Vài ngày học một lệnh Linux

Destiny3986 wrote:
Trong ubuntu có lệnh này. 
trong Fedora ko có :P ======================================= Xem và thay đổi cấu hình card mạng với ethtool ethX - VD: xem thông tin firmware eth0 Code:
$ ethtool -i eth0
driver: b44
version: 2.0
firmware-version: 
bus-info: 0000:03:00.0
]]>
/hvaonline/posts/list/19738.html#161204 /hvaonline/posts/list/19738.html#161204 GMT
Re: Vài ngày học một lệnh Linux 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ị <Mod4>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 "<Alt>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 "<Alt>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?]]>
/hvaonline/posts/list/19738.html#161405 /hvaonline/posts/list/19738.html#161405 GMT
Re: Vài ngày học một lệnh Linux Bạn thử enable remote desktop bằng command line xem?  Code:
gconftool-2 -s -t bool /desktop/gnome/remote_access/enabled true
Để disable thì sửa giá trị true thành false Để disable confirmation request (connect là vào luôn) Code:
gconftool-2 -s -t bool /desktop/gnome/remote_access/prompt_enabled false
Đã thử trên Fedora 9 Thói quen google :^) , ở bài viết này tác giả gọi đây là "dirty way", không hiểu vì sao. Em google cũng là "dirty way". http://sidrit.wordpress.com/2008/08/03/enable-remote-desktop-on-ubuntu-from-command-line/]]>
/hvaonline/posts/list/19738.html#161411 /hvaonline/posts/list/19738.html#161411 GMT
Re: Vài ngày học một lệnh Linux 50. Clear Dùng để Clear Console sreen (xoá trắng màn hình) Code:
$ clear
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 :( ]]>
/hvaonline/posts/list/19738.html#161507 /hvaonline/posts/list/19738.html#161507 GMT
Re: Vài ngày học một lệnh Linux Code:
$/sbin/ifconfig
hay các lệnh tương tự như vậy mới thực hiện, trong khi người khác chỉ cần gõ: Code:
$ifconfig
Đó là vì biến PATH của bạn chưa có đường dẫn đến lệnh này: Code:
$echo $PATH
/usr/kerberos/bin:/usr/local/bin:/usr/bin
để thêm đường dẫn này vào bạn gõ: Code:
$PATH=$PATH:/sbin

$echo $PATH
/usr/kerberos/bin:/usr/local/bin:/usr/bin:/sbin
]]>
/hvaonline/posts/list/19738.html#166211 /hvaonline/posts/list/19738.html#166211 GMT
Re: Vài ngày học một lệnh Linux 52. piping (|) and sed pipe (|) sẽ chuyển output của một lệnh thành standard input của lệnh sau đó. sed: là một công cụ stream editor cho phép chỉnh sửa ngay trên input Chúng ta sẽ kết hợp 2 lệnh này để thực hiện một phép http://6v8.gamboni.org/Mass-renaming-with-linux-shell.html. Ví dụ: đổi tất cả các file trong thư mục hiện tại có đuôi là *.otl (phần mở rộng của http://www.sourcefiles.org/Editors/vi/vimoutliner-0.3.4.tar.gz.shtml) thành *.txt: Code:
$ ls -d *.otl | sed 's/\(.*\).otl$/mv "&" "\1.txt"/' | sh
P/S: phần giải thích chi tiết đã có ở đường liên kết phía trên. 53. Xem những lệnh được sử dụng nhiều nhất Code:
$ history | awk '{print $2}' | sort | uniq -c | sort -rn | head
Chúng ta sẽ giải thích từng lệnh rõ hơn: 1. history: hiển thị các lệnh bạn đã từng thực hiện. Lệnh này chia thành 2 cột: cột đầu tiên hiển thị số thứ tự của lệnh, cột thứ 2 hiển thị tên lệnh. 2. awk '{print $2}': cắt lấy cột thứ 2 - tức là tên lệnh 3. sort: sắp xếp lại các lệnh này (các lệnh giống nhau sẽ đứng gần nhau) 4. uniq -c: đếm và loại bỏ các lệnh giống nhau 5. sort -rn: sắp xếp lại theo giá trị số từ cao đến thấp 6. head: lấy 10 lệnh đầu tiên có số lần sử dụng nhiều nhất ]]>
/hvaonline/posts/list/19738.html#166685 /hvaonline/posts/list/19738.html#166685 GMT
Re: Vài ngày học một lệnh Linux 54. dmidecode - đọc bảng DMI của hệ thống và hiển thị thông tin về phần cứng và BIOS Ngoài /proc/cpuinfo, /proc/meminfo, lshw, ... lệnh này sẽ hữu ích trong một số trường hợp. DMI là viết tắt của từ Desktop Management Interface - dùng để quản lý và theo dõi các thành phần trên máy tính. Đọc thêm tại: http://www.dmtf.org/standards/dmi/ Một bản ghi trong bảng DMI có dạng: Code:
Record Header: Handle {record id}, DMI type {dmi type id}, {record size} bytes
Record Value: {multi line record value}
record id: định danh duy nhất cho bản ghi dmi type id: loại bản ghi record size: kích cỡ của bản ghi multi line record value: giá trị bản ghi cho một loại DMI xác định Vài ví dụ: Thông tin về BIOS: Code:
# dmidecode -t bios
# dmidecode 2.9
SMBIOS 2.4 present.

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
	Vendor: Phoenix Technologies LTD
	Version: R0070J4
	Release Date: 12/06/2006
	Address: 0xE7210
	Runtime Size: 101872 bytes
	ROM Size: 1024 kB
	Characteristics:
		PCI is supported
		PC Card (PCMCIA) is supported
		PNP is supported
		BIOS is upgradeable
		BIOS shadowing is allowed
		ESCD support is available
		Boot from CD is supported
		Selectable boot is supported
		EDD is supported
		8042 keyboard services are supported (int 9h)
		CGA/mono video services are supported (int 10h)
		ACPI is supported
		USB legacy is supported
		AGP is supported
		Smart battery is supported
		BIOS boot specification is supported
		Function key-initiated network boot is supported
		Targeted content distribution is supported
	BIOS Revision: 7.0
	Firmware Revision: 7.0
Thông tin về hệ thống: Code:
# dmidecode -t 1
# dmidecode 2.9
SMBIOS 2.4 present.

Handle 0x0001, DMI type 1, 27 bytes
System Information
	Manufacturer: Sony Corporation
	Product Name: VGN-N230E
	Version: C3LNME3Z
	Serial Number: 28249635-3008138
	UUID: 7C1A72A0-B4E7-11DB-893E-0013A94F8444
	Wake-up Type: Power Switch
	SKU Number: N/A
	Family: N/A
Thông tin về bộ xử lý: Code:
# dmidecode -t Processor
# dmidecode 2.9
SMBIOS 2.4 present.

Handle 0x0004, DMI type 4, 35 bytes
Processor Information
	Socket Designation: N/A
	Type: Central Processor
	Family: Other
	Manufacturer: GenuineIntel
	ID: E8 06 00 00 FF FB E9 BF
	Version: Genuine Intel(R) CPU           T2250  @ 1.73GHz
	Voltage: 1.3 V
	External Clock: 133 MHz
	Max Speed: 1733 MHz
	Current Speed: 1733 MHz
	Status: Populated, Enabled
	Upgrade: None
	L1 Cache Handle: 0x0005
	L2 Cache Handle: 0x0006
	L3 Cache Handle: 0x0007
	Serial Number: N/A
	Asset Tag: N/A
	Part Number: N/A
Thông tin về RAM: có bao nhiêu thanh, lượng RAM lớn nhất hỗ trợ, ... Code:
# dmidecode -t memory
# dmidecode 2.9
SMBIOS 2.4 present.

Handle 0x0009, DMI type 16, 15 bytes
Physical Memory Array
	Location: System Board Or Motherboard
	Use: System Memory
	Error Correction Type: None
	Maximum Capacity: 2048 GB
	Error Information Handle: Not Provided
	Number Of Devices: 2

Handle 0x000A, DMI type 17, 21 bytes
Memory Device
	Array Handle: 0x0009
	Error Information Handle: Not Provided
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 1024 MB
	Form Factor: SODIMM
	Set: None
	Locator: SODIMM1
	Bank Locator: Bank 0
	Type: DDR2
	Type Detail: Unknown

Handle 0x000B, DMI type 17, 21 bytes
Memory Device
	Array Handle: 0x0009
	Error Information Handle: Not Provided
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 1024 MB
	Form Factor: SODIMM
	Set: None
	Locator: SODIMM2
	Bank Locator: Bank 1
	Type: DDR2
	Type Detail: Unknown
Các loại DMI: Code:
Type   Information
       ----------------------------------------
          0   BIOS
          1   System
          2   Base Board
          3   Chassis
          4   Processor
          5   Memory Controller
          6   Memory Module
          7   Cache
          8   Port Connector
          9   System Slots
         10   On Board Devices
         11   OEM Strings
         12   System Configuration Options
         13   BIOS Language
         14   Group Associations
         15   System Event Log
         16   Physical Memory Array
         17   Memory Device
         18   32-bit Memory Error
         19   Memory Array Mapped Address
         20   Memory Device Mapped Address
         21   Built-in Pointing Device
         22   Portable Battery
         23   System Reset
         24   Hardware Security
         25   System Power Controls
         26   Voltage Probe
         27   Cooling Device
         28   Temperature Probe
         29   Electrical Current Probe
         30   Out-of-band Remote Access
         31   Boot Integrity Services
         32   System Boot
         33   64-bit Memory Error
         34   Management Device
         35   Management Device Component
         36   Management Device Threshold Data
         37   Memory Channel
         38   IPMI Device
         39   Power Supply
]]>
/hvaonline/posts/list/19738.html#166776 /hvaonline/posts/list/19738.html#166776 GMT
Re: Vài ngày học một lệnh Linux Code:
# export HISTTIMEFORMAT=’%F %T ‘
# history | more
]]>
/hvaonline/posts/list/19738.html#166793 /hvaonline/posts/list/19738.html#166793 GMT
Script watermark hàng loạt ảnh trong một thư mục Code:
$ yum info ImageMagick
Installed Packages
Name       : ImageMagick
Arch       : i386
Version    : 6.4.0.10
Release    : 2.fc10
Size       : 27 M
Repo       : installed
Summary    : An X application for displaying and manipulating images
URL        : http://www.imagemagick.org/
License    : ImageMagick
Description: ImageMagick(TM) is an image display and manipulation tool for the X Window System. ImageMagick can read and write
           : JPEG, TIFF, PNM, GIF, and Photo CD image formats. It can resize, rotate, sharpen, color reduce, or add special
           : effects to an image, and when finished you can either save the completed work in the original format or a
           : different one. ImageMagick also includes command line programs for creating animated or transparent .gifs,
           : creating composite images, creating thumbnail images, and more.  ImageMagick is one of your choices if you need a
           : program to manipulate and display images. If you want to develop your own applications which use ImageMagick code
           : or APIs, you need to install ImageMagick-devel as well.
Giả sử bạn có hàng loạt ảnh có kích thước giống nhau là 1944x2592, ngang dọc đủ cả, nằm trong một folder. Muốn tạo dấu ấn bằng text ở góc dưới bên phải cho hàng loạt ảnh này, bạn có thể chạy một lệnh như sau: Code:
$ for img in *; do mogrify -verbose -font /usr/share/fonts/msttcorefonts/verdana.ttf -pointsize 50 -draw "gravity SouthEast fill gray text 0,0 'Photographed by: quanta'" $img; done
Muốn dòng text này lùi vào một chút, bạn có thể dùng: Code:
$ for img in *; do mogrify -verbose -font /usr/share/fonts/msttcorefonts/verdana.ttf -pointsize 50 -draw "fill gray text $((`identify -format '%w' $img` - `echo "Photographed by: quanta" | wc -c` * 27 - 34)),$((`identify -format '%h' $img` - 34)) 'Photographed by: quanta'" $img; done
Mời các bạn thử mở rộng ra một số trường hợp như: - ảnh có kích thước tuỳ ý - watermark bằng một ảnh khác - ...]]>
/hvaonline/posts/list/19738.html#168281 /hvaonline/posts/list/19738.html#168281 GMT
Re: Script watermark hàng loạt ảnh trong một thư mục /hvaonline/posts/list/19738.html#168336 /hvaonline/posts/list/19738.html#168336 GMT Re: Script watermark hàng loạt ảnh trong một thư mục /hvaonline/posts/list/19738.html#168344 /hvaonline/posts/list/19738.html#168344 GMT Re: Script watermark hàng loạt ảnh trong một thư mục

lamer wrote:
Watermark có hai nghĩa: 1. Hình chìm thấy được 2. Dữ liệu ẩn (steganography) để đánh dấu (ví dụ như cái dấu hiệu ở góc phải tấm Declaration of Independence trong film National Treasure đó) Cái này có lẽ là theo nghĩa 1. 
Bác khoanh đỏ cái dấu hiệu trên tấm hình đó giùm mình được không? Mình nghĩ rằng đã gọi là "steganography" thì phải là "invisible watermarking" chứ nhỉ? Ngoài lề là các bạn có thể dùng http://steghide.sourceforge.net/index.php để làm việc này: Code:
Name       : steghide
Arch       : i386
Version    : 0.5.1
Release    : 9.fc9
Size       : 488 k
Repo       : installed
Summary    : A steganography program
URL        : http://steghide.sourceforge.net
License    : GPLv2
Description: Steghide is a steganography program that is able to hide data in various kinds of image- and audio-files. The
           : color- respectivly sample-frequencies are not changed thus making the embedding resistant against first-order
           : statistical tests. Features of steghide include compression and encryption of embedded data,  embedding of a
           : checksum to verify the integrity of the extracted data and support for jpeg, bmp, wav and au files.
]]>
/hvaonline/posts/list/19738.html#168350 /hvaonline/posts/list/19738.html#168350 GMT
Re: Script watermark hàng loạt ảnh trong một thư mục

Z0rr0 wrote:
Bản thân từ steganos có nghĩa là che đi (covered), trong khi watermark là phải thấy được. Nên tui nghĩ không thể hiểu watermark là steganography được đâu anh lamer. Ý nghĩa khác nhau hoàn toàn :) 
Watermark có 2 loại là: visible và invisible. Cuốn http://books.google.com.vn/books?id=vNCwqtQ0iEcC&pg=PA522&lpg=PA522&dq=%22Steganography%22+%2B+%22invisible+watermarking%22&source=bl&ots=ueZQb7j2CR&sig=AQKiy0y2PgxtrphPZD0liO6RxSw&hl=vi&sa=X&oi=book_result&resnum=2&ct=result có so sánh giữa Digital watermarking và Steganography. Bạn nào muốn ngâm cứu thêm thì có thể đọc cuốn http://avaxhome.ws/ebooks/programming_development/DigitalWatermarking_Steganography.html.]]>
/hvaonline/posts/list/19738.html#168394 /hvaonline/posts/list/19738.html#168394 GMT
Re: Script watermark hàng loạt ảnh trong một thư mục /hvaonline/posts/list/19738.html#168401 /hvaonline/posts/list/19738.html#168401 GMT Re: Vài ngày học một lệnh Linux

SuperChicken wrote:
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. 
Do vô ý, không hiểu từ khi nào primary group của mình bị thay đổi. Do đó các files hoặc thư mục mới được tạo ra sẽ được owned bởi primary group này (mà không phải là "quanta"). Mình muốn chạy một lệnh để: tìm tất cả các files và thư mục được owned bởi user "quanta", group không phải là "quanta" thì thay đổi chủ quyền group cho files / thư mục đó thành "quanta": Code:
$ find ~ -user quanta -not \( -group quanta \) -exec sudo chgrp -R quanta "{}" \;
Giải thích một chút: ~ chỉ $HOME folder -user quanta owned bởi user quanta -not phủ định của biểu thức đứng sau -exec thực hiện một lệnh với các folders tìm được. Các bạn thử so sánh với xargs xem sao. {} đại diện cho thư mục hiện tại đang được xử lý \; mời các bạn thử giải thích ]]>
/hvaonline/posts/list/19738.html#170537 /hvaonline/posts/list/19738.html#170537 GMT
Re: Vài ngày học một lệnh Linux

quanta wrote:
... -exec thực hiện một lệnh với các folders tìm được. Các bạn thử so sánh với xargs xem sao. ...  
-exec sẽ thực thi lệnh chgrp lần lượt với tham số là từng kết quả được cho ra từ lệnh find (mỗi lần thực thi lệnh chgrp sẽ có tham số là 1 file hoặc thư mục tìm được) nên tốc độ thực thi sẽ chậm nếu số lượng file/thư mục quá nhiều. Ngược lại xargs sẽ truyền một số kết quả cho ra từ lệnh find là tham số trong một lần thực thi lệnh chgrp (mỗi lần thực thi lệnh chgrp sẽ có tham số là một số file hoặc thư mục tìm được) nên tốc độ sẽ nhanh hơn khi số lượng file/thư mục quá nhiều.

quanta wrote:
... \; mời các bạn thử giải thích  
Đánh dấu kết thúc câu lệnh, thực thi lệnh chgrp mỗi khi có một file/thư mục được tìm thấy.]]>
/hvaonline/posts/list/19738.html#172193 /hvaonline/posts/list/19738.html#172193 GMT
Re: Vài ngày học một lệnh Linux 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.   Em đang tìm hiểu cái lệnh kill . Khi đọc đoạn này của anh em thấy rất hay vì em đang băn khoăn mấy cái options trong lệnh kill. ở trên anh đã giải thích 3 options là SIGHUP(-1) ; SIGTERM (-15) và SIGKILL (-9) . Đây hầu như là các options được dùng chủ yếu trong lệnh kill. Nhưng em thấy trong sig của lệnh kill thì có tới 64 cái sig . # kill -l để biết 64 sig đó . Anh có thể giải thích tiếp các sig còn lại được không ạ.? ! Em cũng đã tìm trong man và googling nhưng không được rõ lắm . Đây là 1 trong những link em thấy đầy đủ hơn cả nhưng vẫ tối nghĩa   ]]> /hvaonline/posts/list/19738.html#174375 /hvaonline/posts/list/19738.html#174375 GMT Re: Vài ngày học một lệnh Linux

F10 wrote:
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.  
Em đang tìm hiểu cái lệnh kill . Khi đọc đoạn này của anh em thấy rất hay vì em đang băn khoăn mấy cái options trong lệnh kill. ở trên anh đã giải thích 3 options là SIGHUP(-1) ; SIGTERM (-15) và SIGKILL (-9) . Đây hầu như là các options được dùng chủ yếu trong lệnh kill. Nhưng em thấy trong sig của lệnh kill thì có tới 64 cái sig . # kill -l để biết 64 sig đó . Anh có thể giải thích tiếp các sig còn lại được không ạ.? ! Em cũng đã tìm trong man và googling nhưng không được rõ lắm . Đây là 1 trong những link em thấy đầy đủ hơn cả nhưng vẫ tối nghĩa  
  kill ko hẳn là để giết 1 process, đó chỉ là 1 cách trong các hệ thống Posix để gửi signal từ process này cho process khác. Ý nghĩa từng signal này thì theo cái bảng kia hoặc trong 1 số các sách lập trình linux/unix cũng có mô tả. Ví dụ ALRM (Alarm) là 1 signal nhận được khi có sự hẹn giờ. Có nhiều các sự kiện xảy ra với process đều được OS báo lại bằng signal (và lệnh kill/hàm kill này). Có 3 signal thường dùng để kết thúc ứng dụng, trong đó 2 cái SIGHUP và SIGTERM là ứng dụng có thể bắt được, còn SIGKILL thì ko thể: - SIGHUP (signal hang up): làm việc kiểu ngày xưa, khi kết nối terminal với modem, khi bị ngưng kết nối này (hang up), thì nó báo cho process (lệnh đang chạy) để thoát. Có 1 lệnh là nohup nó chặn cái signal này lại để cho process ... chạy tiệp. - SIGTERM: (terminate) ngưng ứng dụng lại, ví dụ khi Ctrl+C thì lệnh ngưng lại. Tuy nhiên nó cho phép ứng dụng dọn dẹp trước khi thoát, hoặc có khi phớt lờ cái signal này chạy tiếp. - SIGKILL: (giết :-))): cái này ngưng ứng dụng lại và ứng dụng không thể hứng đc, mọi thứ rác còn lại (ví dụ temp file) có thể còn. OS hay gửi SIGKILL cho tất cả các process đang chạy khi nó reboot/shutdown.]]>
/hvaonline/posts/list/19738.html#175228 /hvaonline/posts/list/19738.html#175228 GMT
Re: Vài ngày học một lệnh Linux 55. logsave(8) Trong quá trình làm việc với hệ điều hành GNU/Linux, có thể bạn sẽ muốn lưu lại thông tin output của một số lệnh đang sử dụng. Để thực hiện điều đó, các bạn có thể dùng logsave(8). Cú pháp: Code:
logsave [ -asv ] log-file command
Mô tả: Mỗi lần được gọi, logsave(8) sẽ tiến hành chạy chương trình command và sao chép thông tin output của nó ra log-file do người dùng chỉ định. Nếu bạn thay thế command bằng một dấu ngắt đơn (’-‘) thì logsave(8) sẽ lấy thông tin từ stdin để ghi ra log-file. Các tùy chọn: -a Nếu tập tin log-file đã tồn tại trước đó trên đĩa cứng thì thông tin output sẽ được ghi thêm vào tập tin thay vì ghi đè lên thông tin cũ. 2 flags còn lại -s -v các bạn có thể tham khảo từ man page Code:
$man 8 logsave
]]>
/hvaonline/posts/list/19738.html#176286 /hvaonline/posts/list/19738.html#176286 GMT
Re: Vài ngày học một lệnh Linux Code:
find / | grep -v -e ^/proc/ -e ^/tmp/ -e ^/dev/ > preinstall.list
Sau đó biên dịch chương trình rồi chạy tiếp. Code:
find / | grep -v -e ^/proc/ -e ^/tmp/ -e ^/dev/ > postinstall.list
Sau đó so sánh 2 file. Code:
diff preinstall.list postinstall.list > installed.list
Vậy bây giờ bạn có thể gỡ ra bất cứ khi nào bạn muốn.]]>
/hvaonline/posts/list/19738.html#177428 /hvaonline/posts/list/19738.html#177428 GMT
Re: Vài ngày học một lệnh Linux 59. head Lệnh này dùng để hiển thị n kí tự hoặc n dòng đầu tiên của 1 file. Thích hợp dùng để trích xuất 1 phần dữ liệu của 1 file mà không cần đọc toàn bộ file, đặc biệt với các file lớn. Cú pháp: Code:
head option filename
option thường dùng: -c N: dùng để in ra N kí tự đầu tiên của file, nếu có dấu trừ trước số N thì sẽ in ra N kí tự cuối cùng của file - n N: in ra N dòng đầu tiên của file, nếu có dấu trừ trước số N thì sẽ in ra N dòng cuối cùng của file Mặc định nếu ko có tham số, lệnh head tương đương với: Code:
head -n 10 filename
Xem thêm man head]]>
/hvaonline/posts/list/19738.html#178168 /hvaonline/posts/list/19738.html#178168 GMT
Re: Vài ngày học một lệnh Linux 60. hexedit Lệnh này dùng để xem và chỉnh sửa file dưới dạng hex hay binary. hexedit làm việc y hệt như 1 chương trình soạn thảo với đầy đủ chức năng từ chỉnh sửa, save, copy, paste, ... cùng hàng loạt các phím tắt kèm theo. Chi tiết xem thêm man hexedit.]]> /hvaonline/posts/list/19738.html#178450 /hvaonline/posts/list/19738.html#178450 GMT Vài ngày học một lệnh Linux 61. vol_id, blkid, ls -l /dev/disk/by-uuid Nếu đã dùng qua một vài distro và để ý bạn sẽ thấy rằng trong file /etc/fstab, ở cột đầu tiên, mặc định Ubuntu sẽ dùng UUID để định danh partition thay vì /dev/sdxn như một số distro khác: Fedora, Slackware, ... Khi đó hẳn bạn sẽ thắc mắc "làm sao để biết được UUID của một partition?". Câu trả lời chính là lệnh vol_id. Với lệnh này, ngoài UUID, bạn còn biết được loại filesystem cũng như label của partition đó nữa. Code:
$ vol_id /dev/sda5
ID_FS_USAGE=filesystem
ID_FS_TYPE=ntfs
ID_FS_VERSION=3.1
ID_FS_UUID=01C998ED00829A00
ID_FS_UUID_ENC=01C998ED00829A00
ID_FS_LABEL=QUANTA
ID_FS_LABEL_ENC=QUANTA
Ngoài ra, bạn có thể dùng blkid để liệt kê thuộc tính của tất cả các partitions: Code:
$ blkid 
/dev/sda1: UUID="785C40EA5C40A4AA" LABEL="SERVICEV002" TYPE="ntfs" 
/dev/sda2: UUID="01C998ECFFEA0380" LABEL="WIN2K3" TYPE="ntfs" 
/dev/sda3: UUID="e1b46788-14df-4d8c-84d5-00f9a32698a1" TYPE="ext3" 
/dev/sda5: UUID="01C998ED00829A00" LABEL="QUANTA" TYPE="ntfs" 
/dev/sda6: TYPE="swap" UUID="a4e3113e-cbeb-4d41-8327-577af36db2e4"
hoặc đọc nội dung của file /dev/disk/by-uuid: Code:
$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 2009-06-15 17:17 01C998ECFFEA0380 -> ../../sda2
lrwxrwxrwx 1 root root 10 2009-06-15 17:17 01C998ED00829A00 -> ../../sda5
lrwxrwxrwx 1 root root 10 2009-06-15 17:17 785C40EA5C40A4AA -> ../../sda1
lrwxrwxrwx 1 root root 10 2009-06-15 17:17 a4e3113e-cbeb-4d41-8327-577af36db2e4 -> ../../sda6
lrwxrwxrwx 1 root root 10 2009-06-15 17:17 e1b46788-14df-4d8c-84d5-00f9a32698a1 -> ../../sda3
Theo các bạn thì dùng UUID sẽ hữu hiệu nhất khi nào?]]>
/hvaonline/posts/list/19738.html#183629 /hvaonline/posts/list/19738.html#183629 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#185196 /hvaonline/posts/list/19738.html#185196 GMT Vài ngày học một lệnh Linux

quanta wrote:
Theo các bạn thì dùng UUID sẽ hữu hiệu nhất khi nào? 
Để định danh một phân vùng đĩa cứng "bình thường" trong GNU/Linux (ý em là không LVM, không RAID) thì theo em được biết là có 3 cách: 1. Bằng đường dẫn trực tiếp: /dev/?d?? Ưu điểm là cực kì ngắn gọn, dễ nhớ Nhược điểm là rất dễ bị thay đổi khi tạo thêm phân vùng đĩa cứng hay lắp đĩa cứng mới vào hệ thống. 2. Bằng UUID: lấy thông tin này bằng cách $ls -l /dev/disk/by-uuid Ưu điểm là tương đối cố định, và mang tính duy nhất (trừ trường hợp cloning thì mới cho ra các phân vùng trùng UUID) Nhược điểm là quá dài, khó đọc và khó nhớ. 3. Bằng LABEL: lấy thông tin này bằng $ls -l /dev/disk/by-label Ưu điểm là tương đối cố định, ít có khả năng bị thay đổi, ngắn gọn và dễ nhớ Nhược điểm dễ bị trùng lắp do đây là giá trị do con người gán. (Ngoài ra trong thư mục /dev/disk còn có 2 thư mục con là by-idby-path, nhưng em chưa thử để biết có dùng làm định danh cho đĩa được không?) Vậy, em nghĩ rằng cách định danh trực tiếp /dev/?d?? chỉ có lợi trong các trường hợp như lệnh mount(8) chứ không nên dùng trong các tập tin quan trọng như grub.conf (menu.lst). /etc/fstab hay lilo.conf vì rất dễ dẫn tới trường hợp hệ thống không boot được. Hai cách sử dụng UUID và LABEL thì sẽ tương đối an toàn và ổn định hơn, đảm bảo sự hoạt động nhịp nhàng của hệ thống. Vậy, quay trở lại câu hỏi ban đầu của anh quanta, thì đơn giản là dùng UUID trong trường hợp người dùng không muốn quan tâm (hoặc không biết) về mấy vấn đề này và muốn để cho hệ thống của mình hoạt động ổn định lâu dài. Tuy nhiên em mở rộng bài viết ra một chút: Nếu người dùng muốn quản lí hệ thống của mình ở mức cao nhất thì có thể tham khảo cách dùng LABEL thay cho UUID, Chỉ riêng đối với LABEL thì người dùng nên tạo thói quen đặt tên LABEL theo 1 quy luật nào đó để cho đảm bảo không bị trùng lắp, dẫn đến định danh sai phân vùng. Ví dụ vài cách đặt tên LABEL mà đa số mọi người hay dùng nhưng lại là các đặt tên "xấu": LABEL=home cho mount point /home LABEL=root cho mount point / Giả sử đem đĩa cứng chứa các phân vùng này qua hệ thống GNU/Linux khác có cách đặt tên LABEL tương tự hoặc ngược lại thì sẽ gây ra nhập nhằng, có thể dẫn tới hệ thống không hoạt động được. Em thử ví dụ vài cách đặt tên LABEL "tốt" /home trên đĩa cố định thì có thể LABEL=home-local /home trên đĩa di động thì có thể LABEL=home-portable /home trên vùng lưu trữ qua mạng thì có thể LABEL=home-network Hoặc là nếu không thì có thể đặt tên LABEL mang tính cá nhân ví dụ như em (St Konqueror) thì sẽ đặt LABEL theo dạng stk-* (như stk-home, stk-root...) Vài lời ]]>
/hvaonline/posts/list/19738.html#186389 /hvaonline/posts/list/19738.html#186389 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#187460 /hvaonline/posts/list/19738.html#187460 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 62. shopt shopt là viết tắt của shell option, nó có chức năng kiểm soát hành vi của shell qua các tùy chọn. Đọc thêm tại http://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html. Vài ví dụ: Liệt kê các tùy chọn đang "bật": Code:
$ shopt -s
cmdhist        	on
expand_aliases 	on
extquote       	on
force_fignore  	on
hostcomplete   	on
interactive_comments	on
progcomp       	on
promptvars     	on
sourcepath     	on
Tự chỉnh sửa các lỗi gõ phím: Code:
$ shopt -s cdspell
bash-3.1$ cd /mnt/data/linuz
/mnt/data/linux
bash-3.1$ pwd
/mnt/data/linux
Cho phép cp sao chép các files và thư mục ẩn: Code:
$ shopt -s dotglob
Danh sách các lệnh đã gõ không bị ghi đè lẫn nhau: Code:
$ shopt -s histappend
Không phân biệt chữ hoa - chữ thường trong tên files khi gõ lệnh: Code:
$ bind "set completion-ignore-case on"
bash-3.1$ shopt -s nocaseglob
bash-3.1$ cd /mnt/data/hv[TAB]
bash-3.1$ pwd
/mnt/data/HVA
Xóa tất cả các files trong một thư mục trừ một hoặc một vài files: Code:
$ ls -la
total 514216
drwxrwxrwx 1 root root      4096 2009-07-27 00:02 .
drwxrwxrwx 1 root root     49152 2009-07-26 10:05 ..
-rwxrwxrwx 1 root root         0 2009-07-26 23:47 .file
drwxrwxrwx 1 root root         0 2009-07-26 23:47 .test
-rwxrwxrwx 1 root root 526501693 2008-08-17 04:39 FaceOff [1997]-Salman.mkv
bash-3.1$ shopt -s extglob
bash-3.1$ rm -fr !(FaceOff\ \[1997\]-Salman.mkv )
bash-3.1$ ls -la
total 52
drwxrwxrwx 1 root root  4096 2009-07-27 00:04 .
drwxrwxrwx 1 root root 49152 2009-07-26 10:05 ..
... ]]>
/hvaonline/posts/list/19738.html#187704 /hvaonline/posts/list/19738.html#187704 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 63. mencoder Mình có một file video, do sơ ý nên trong quá trình quay có một khoảng thời gian mình xoay máy ảnh từ ngang thành dọc (sau đó thì đã xoay trở lại). Tuy chỉ mất một đoạn khoảng hơn 1 phút nhưng nó làm mình khá khó chịu. Loay hoay một hồi với AVI Trimmer, VirtualDub,... trên http://www.winehq.org/ mà không xử lý được, mình chợt nhớ ra là trên Linux có thằng mencoder có thể làm được. Giả sử đoạn video bị quay ngang kia bắt đầu từ thời điểm hh0:mm0:ss0 đến thời điểm hh1:mm1:ss1, và có độ phân giải là Width x Height = A x B (A>B) - Đầu tiên mình cắt nó ra làm 3 phần: Code:
mencoder -endpos hh0:mm0:ss0 -oac copy -ovc copy in.avi -o part1.avi
mencoder -ss hh0:mm0:ss0 -oac copy -ovc copy in.avi -o tmp.avi

mencoder -endpos hh1:mm1:ss1 -oac copy -ovc copy tmp.avi -o part2.avi
mencoder -ss hh1:mm1:ss1 -oac copy -ovc copy tmp.avi -o part3.avi
- Xoay đoạn video kia (part2) sang phải một góc 90 độ: Code:
mencoder -oac copy -ovc lavc -vf rotate=1 part2.avi -o part2_rotated90.avi
(Lúc này kích thước của nó lại là B x A) - Phóng to tỷ lệ của part2 lên thành A x (A*A/B): Code:
mencoder part2_rotated90.avi -oac copy -ovc lavc -vf scale=A:(A*A/B) -o part2_zoomin.avi
- Cắt phần ảnh thừa ở phía trên và phía dưới đi, để nó trở về kích thước A x B: Code:
mencoder part2_zoomin.avi -oac copy -ovc lavc -vf crop=A:B -o part2_final.avi
- Gộp 3 phần này lại để có một file video như ý: Code:
mencoder -forceidx -oac copy -ovc lavc part1.avi part2_final.avi part3.avi -o final_out.avi
mencoder còn rất nhiều chức năng khác, bạn thử tìm hiểu xem nhé.]]>
/hvaonline/posts/list/19738.html#191323 /hvaonline/posts/list/19738.html#191323 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#193312 /hvaonline/posts/list/19738.html#193312 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux

thozao wrote:
Cho em hỏi với. Anh,chị,em: có biết lệnh, phần mềm hay phần cứng nào có thể tính tổng dung lượng bytes vào/ra internet trên 1 máy (Linux -CentOS) không ạ?  
- ifconfig, iftop, bandwidthd, bmon, vnstat... - SNMP + MRTG + routers2.cgi - ... ]]>
/hvaonline/posts/list/19738.html#193323 /hvaonline/posts/list/19738.html#193323 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux Code:
# shutdown -P 0
Khi dùng Linux mình thường dùng lệnh này để tắt :) Bổ sung vài IP Commands trên Linux và UNIX, những IP Commands này mình lấy tại trang whatismyip.com Linux Code:
Display Current Config for all NIC's: ifconfig
Display Current Config for eth0: ifconfig eth0
Assign IP: ifconfig eth0 192.168.1.2
Ping: ping -c 3 192.168.1.1
Assign multiple IP's: ifconfig eth0:0 192.168.1.2
Assign second IP: ifconfig eth0:1 192.168.1.3
Disable network card: ifconfig eth0 down
Enable network card: ifconfig eth0 up
View current routing table: route "or" route -n
View arp cache: arp "or" arp -n
Assign IP/Subnet: ifconfig eth0 192.168.1.2 netmask 255.255.255.0
Assign Default Gateway: route add default gw 192.168.1.1
Trace Route: traceroute www.whatismyip.com
Trace Path: tracepath www.whatismyip.com
DNS Test: host www.whatismyip.com
Advanced DNS Test: dig www.whatismyip.com
Reverse Lookup: host 66.11.119.69
Advanced Reverse Lookup: dig -x 66.11.119.69
UNIX Code:
Display Current Config for all NIC's: ifconfig
Display Current Config for dc0: ifconfig dc0
Assign multiple IP's: ifconfig dc0:0 192.168.1.2
Assign second IP: ifconfig dc0:1 192.168.1.3
Disable network card: ifconfig dc0 down
Enable network card: ifconfig dc0 up
Assign IP/Subnet: ifconfig dc0 inet 192.168.1.2 netmask 255.255.255.0
Assign Gateway: route delete default && route add default 192.168.1.1
]]>
/hvaonline/posts/list/19738.html#193325 /hvaonline/posts/list/19738.html#193325 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#199745 /hvaonline/posts/list/19738.html#199745 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux Code:
complete -W "$(ls /etc/init.d/)" service
từ giờ khi sử dụng lệnh service, chỉ cần nhớ chữ cái đầu của dịch vụ rồi ấn tab. làm tương tự với chkconfig: Code:
complete -W "$(ls /etc/init.d/)" chkconfig
]]>
/hvaonline/posts/list/19738.html#201640 /hvaonline/posts/list/19738.html#201640 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 66. Hiển thị lượng memory mà một process sử dụng Code:
ps -eo size,args | grep httpd | grep -v grep | awk '{mem += $1} END {print mem}'
hoặc các bạn có thể dùng pmap: Code:
# pmap `pidof httpd` | tail -1
 total           224900K
Lệnh này rất hữu ích để bạn theo dõi và đưa ra một con số thích hợp cho monit: /hvaonline/posts/list/1515.html#7287]]>
/hvaonline/posts/list/19738.html#213951 /hvaonline/posts/list/19738.html#213951 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#215919 /hvaonline/posts/list/19738.html#215919 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux

thuc960 wrote:
Cho mình hỏi lệnh trong windows là net view vậy trong linux lệnh tương tự như vậy là gì vậy 
smbtree.]]>
/hvaonline/posts/list/19738.html#215920 /hvaonline/posts/list/19738.html#215920 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 67. Công cụ khóa màn hình dòng lệnh vlock(1) Hi all, Hôm nay mình mới biết đến một công cụ hay hay tên là vlock(1), liền vội vàng lên HVA để post bài giới thiệu với các anh em nghiện Command Line Interface. :D Giới thiệu: vlock(1) là một công cụ để khóa màn hình (tương tự như chức năng của screen saver) nhưng lại dành cho môi trường dòng lệnh. Sử dụng: Code:
$ vlock
Khóa console session đang dùng, có thể là TTY, hoặc là PTS đều được. Để unlock cần nhập password của tài khoản hiện hành hoặc password root. (Việc unlock bằng password root vẫn có thể bị bisabled trong quá trình biên dịch) Code:
$ vlock -a
Khóa tất cả console sessions hiện tại và khóa luôn việc chuyển đổi Virtual Terminal với tổ hợp Alt + F[1-12]. Chức năng này chỉ áp dụng được cho TTY. Vì khóa luôn tổ hợp Alt + F[1-12] cho nên đồng nghĩa với việc khóa X11. Do vậy, bạn sẽ không cần dùng thêm screensaver hay xlock cho X11 nữa. và các chức năng khác có đề cập trong man pages... Tuy nhiên, vlock(1) còn một tính năng rất là lí thú. Đó là khi bạn unlock xong chương trình sẽ thông báo đã có bao nhiêu thử lần unlock nhưng không thành công trước đó. Cũng hay để biết trong thời gian bạn rời khỏi máy tính có ai thử làm gì máy mình không. -:-) Nói chung, đây thực sự là một công cụ hữu ích cho các anh em nghiện CLI. Như mình, mỗi lần mở máy lên đều login vào TTY1 trước rồi khi nào cần mới phải Code:
$ sudo /etc/rc.d/kdm start
Trong trường hợp đó vlock(1) rất là lí thú và hữu ích! Have fun! -stk ]]>
/hvaonline/posts/list/19738.html#222307 /hvaonline/posts/list/19738.html#222307 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#222310 /hvaonline/posts/list/19738.html#222310 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux apropos để tìm kiếm các câu lệnh liên quan đến mục đích. Chẳng hạn mình muốn Copy file/folder nhưng không biết lệnh gì để làm nó. Mình gõ
# apropos copy cp (1) - copy files and directories cp (1p) - copy files cpio (1) - copy files to and from archives dd (1) - convert and copy a file dd (1p) - convert and copy a file exec (1p) - execute commands and open, close, or copy file descriptors getunwind (2) - copy the unwind data to caller's buffer head (1p) - copy the first part of files install (1) - copy files and set attributes ppmtoppm (1) - copy PPM image rcp (1) - remote file copy scp (1) - secure copy (remote file copy program)  
@hongphu1410 : đâu phải cứ dùng linux là tìm terminal để mà gõ. Sao bạn kô vọc cho đã máy cái application có trên GUI ? p/s: :( Xem lại trang 2 thì thấy anh quanta post lệnh này rồi ]]>
/hvaonline/posts/list/19738.html#225481 /hvaonline/posts/list/19738.html#225481 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 68. expect Khi chạy một đoạn script cần 'sudo', khi ftp, ... bạn sẽ được yêu cầu nhập password. Nếu muốn tự động hoá công việc này, thường bạn sẽ nghĩ đến mấy giải pháp: dùng NOPASSWD trong /etc/sudoers, gán password vào đâu đó rồi đọc ra, ... Đây là lúc bạn nên dùng expect. Một ví dụ đơn giản để start OpenVPN Client khi khởi động: Code:
#!/usr/bin/expect

log_user 0
set username [lrange $argv 0 0]
set password [lrange $argv 1 1]

if {$argc != 2} {
	puts "Usage: openvpn_start.expect <username> <password>"
	exit 1
} else {
	spawn /usr/sbin/openvpn /path/to/client.ovpn
	expect "Enter Auth Username:"
	send -- "$username\r"
	expect "Enter Auth Password:"
	send -- "$password\r"
	}
expect eof
]]>
/hvaonline/posts/list/19738.html#225621 /hvaonline/posts/list/19738.html#225621 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#226826 /hvaonline/posts/list/19738.html#226826 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux Code:
sshfs 192.168.1.17:/u01/core /root/test
df -h để kiểm tra lại sẽ thấy Code:
sshfs#192.168.1.17:/u01/core  1000G     0 1000G   0% /root/test
Chú ý quyền hạn khi share file giữa các máy]]>
/hvaonline/posts/list/19738.html#226828 /hvaonline/posts/list/19738.html#226828 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#226835 /hvaonline/posts/list/19738.html#226835 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux

zjm_zjm wrote:
Trong VI hay VIM mình làm sao để hiện số dòng nhỉ. 
:set number in Normal mode. Tắt đi với :set nonumber. Muốn lúc nào cũng hiện thì echo ":set number" >> ~/.vimrc.]]>
/hvaonline/posts/list/19738.html#226840 /hvaonline/posts/list/19738.html#226840 GMT
Re: Vài ngày học một lệnh Linux

nil wrote:
27. netstat Đưa ra thông tin về network connections, routing tables, interface. ...  
Sắp xếp giảm dần theo số lượng từng loại state: Code:
# netstat -na | awk '{ print $6 }' | sort | uniq -c | sort -rn
  14426 ESTABLISHED
   9243 TIME_WAIT
   4120 FIN_WAIT1
   1436 FIN_WAIT2
   1362 SYN_RECV
    296 CONNECTED
    262 LAST_ACK
     76 CLOSING
     26 LISTEN
     16 STREAM
Bạn có thể ứng dụng cụm `sort | uniq -c | sort -rn` trong nhiều trường hợp khác.]]>
/hvaonline/posts/list/19738.html#226862 /hvaonline/posts/list/19738.html#226862 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#229481 /hvaonline/posts/list/19738.html#229481 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux Có cách nào để sửa tên lệnh của hệ thông không? Ví dụ như ta sửa lệnh ifconfig thành một tên khác? Để khi ta muốn xem thông tin về các card mạng thì ta phải gõ bằng lệnh mới đó, lệnh ifconfig không xem được.  Làm chi cho phức tạp vậy. Với ý màu đỏ thì thử Alias . Ý màu xanh thì tiến hành limit shell user Ví dụ thử với lệnh alias như sau Code:
1. [root@tvcn ~]# alias tomheo="ping 10.86.82.1"
2. [root@tvcn ~]# tomheo
PING 10.86.82.1 (10.86.82.1) 56(84) bytes of data.
64 bytes from 10.86.82.1: icmp_seq=1 ttl=255 time=0.677 ms
64 bytes from 10.86.82.1: icmp_seq=2 ttl=255 time=0.770 ms
64 bytes from 10.86.82.1: icmp_seq=3 ttl=255 time=0.759 ms

--- 10.86.82.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.677/0.735/0.770/0.047 ms
Dòng 1 gán lệnh ping 10.86.82.1 vào tên tomheo Dòng 2 gõ tomheo sẽ tự động thực thi công việc của lệnh 1]]>
/hvaonline/posts/list/19738.html#229483 /hvaonline/posts/list/19738.html#229483 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#229680 /hvaonline/posts/list/19738.html#229680 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux

thanhtuyen172 wrote:
Có cách nào để sửa tên lệnh của hệ thông không? Ví dụ như ta sửa lệnh ifconfig thành một tên khác? Để khi ta muốn xem thông tin về các card mạng thì ta phải gõ bằng lệnh mới đó, lệnh ifconfig không xem được./ 
Bạn đã tự trả lời ở bên dưới rồi đó:

thanhtuyen172 wrote:
sửa chữa một số lệnh và biên dịch lại theo ý của mình./  
]]>
/hvaonline/posts/list/19738.html#229697 /hvaonline/posts/list/19738.html#229697 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#230099 /hvaonline/posts/list/19738.html#230099 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux e đọc xong lệnh chroot cũng thấy khá khó hiểu, làm xong cũng thấy là không biết mình phải làm gi nứa   Để minh hoạ rõ nhất cho việc chroot mình nghĩ bạn nên thử cài cái vsftpd. Đừng cấu hình gì cả rồi login vào và đi vòng vòng xem có được không. Sau đó cấu hình chroot cho vsftp (khá đơn giản). So sánh giữa lúc có chroot và không, tự khắc sẽ rõ ý nghĩa của chroot]]> /hvaonline/posts/list/19738.html#230104 /hvaonline/posts/list/19738.html#230104 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux

thanhtuyen172 wrote:
Có cách nào để khi đó ta không thể vào bằng lênh cũ được ví dụ như trong trường hợp này khi sử dụng alias tomheo="ping 10.86.82.1" thì thì ta không sử dụng lệnh ping 10.86.82.1 được nữa. Còn hướng sử dụng limit shell user thì không có lẽ không được vì trong trường hợp này mình vẫn muốn đang nhập và hệ thống với tài khoản root. Ý của mình là ta có thể can thiệp vào nhân được không? Sửa chữa nhân, sửa chữa một số lệnh và biên dịch lại theo ý của mình./ Mong được sự chỉ bảo của mọi người. 
cái này theo cách nhìn thiển cận của mình thì dể mà. ví dụ với lệnh ifconfig của bạn. file thực thi lệnh của bạn nằm ở /sbin/ifconfig (mặc kệ thư viện nó sài là cái gì.) bạn vào /sbin/ rồi sửa lại ifconfig bằng tên khác. ví dụ: mv ifconfig ipconfig mình thử sửa rồi. gọi ifconfig sẻ báo là no such file or directory. gọi ipconfig thì chạy bình thường. nhưng mà nếu có quyền root thì củng như không. sửa chi cho mệt. can thiệp vào nhân để làm gì bạn, theo mình biết thì kernel có menu để biên dịch, cấu hình lại, nhưng mà cái bạn làm là phải sửa code lại. mà dù bạn sửa code lại, vô đổi tên củng được. ifconfig chỉ là tên file thực thi thôi mà. không phải thư viện nên đâu thằng nào sài nó đâu mà lo. ]]>
/hvaonline/posts/list/19738.html#234305 /hvaonline/posts/list/19738.html#234305 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#238123 /hvaonline/posts/list/19738.html#238123 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#248475 /hvaonline/posts/list/19738.html#248475 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#249140 /hvaonline/posts/list/19738.html#249140 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux Code:
wget http://example-domain.com/myfile.zip
2. Tiếp tục việc download đang giang dỡ: Code:
wget -c http://example-domain.com/myfile.zip
3. Download một danh sách các url: Code:
wget -i url.txt
4. Tạo một bản lưu offline của một trang web: Code:
wget -np -m -p -k http://example-domain.com/news
Còn nhiều chức năng khác đang đợi bạn khám phá. @anh quanta: rất mong anh tiếp tục chia sẽ các hiểu biết của mình về linux, tên topic là mỗi ngày học một lệnh hoặc một tiện ích mà :">.]]>
/hvaonline/posts/list/19738.html#260365 /hvaonline/posts/list/19738.html#260365 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux

chiro8x wrote:
... tên topic là mỗi ngày học một lệnh hoặc một tiện ích mà :">. 
Mình sắp sửa thành... vài tháng rồi :( Chắc hẳn thi thoảng các bạn sẽ có nhu cầu cần chạy một lệnh trên nhiều servers. Mình tạo một file text chứa IP của các servers như sau: Code:
ip1
ip2
ip3
...
(giả sử chúng có hostname lần lượt là: hostname1, hostname2, hostname3, ...) rồi thử một lệnh thế này: Code:
$ while read s; do ssh user@$s hostname; done < servers.list
nhưng kết quả lại chỉ trả về "hostname1". Trong khi đó nếu mình thay `while` bằng `for` thì lại OK: Code:
$ for s in `cat servers.list`; do ssh user@$s hostname; done
Các bạn thử tìm hiểu xem lý do là gì nhé ;) . Nếu vẫn muốn dùng `while` thì có cách nào không?]]>
/hvaonline/posts/list/19738.html#265268 /hvaonline/posts/list/19738.html#265268 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux host.txt 192.168.1.1 192.168.1.2 192.168.1.3 while1.sh Code:
while read line
do
    echo $line
    read
done < host.txt
nó chỉ trả về 1 phần file host.txt với ví dụ của a quanta. ssh có tham số -n để wwwect stdin về /dev/null, nói cách khác là cho ssh run ngầm. Code:
while read s; do ssh -n user@$s hostname; done < servers.list
]]>
/hvaonline/posts/list/19738.html#265303 /hvaonline/posts/list/19738.html#265303 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux

hieuneo wrote:
e đoán là khi người dùng login qua ssh command, sẽ trả về 1 stdin, mà thằng while lại đang đọc từ stdin nên nó sẽ bị break,  
Cái gì sẽ trả về 1 stdin?

hieuneo wrote:
e làm 1 ví dụ sau host.txt 192.168.1.1 192.168.1.2 192.168.1.3 while1.sh Code:
while read line
do
    echo $line
    read
done < host.txt
nó chỉ trả về 1 phần file host.txt  
`read` sẽ đọc dòng tiếp theo nên nó bỏ qua các dòng chẵn là đúng rồi còn gì nữa. Ví dụ này anh thấy không liên quan đến câu hỏi trên.

hieuneo wrote:
với ví dụ của a quanta. ssh có tham số -n để wwwect stdin về /dev/null, nói cách khác là cho ssh run ngầm. Code:
while read s; do ssh -n user@$s hostname; done < servers.list
 
"wwwect về" hay "wwwect từ"? Ngoài ra, còn cách nào khác không? (vẫn dùng `while`)]]>
/hvaonline/posts/list/19738.html#265308 /hvaonline/posts/list/19738.html#265308 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux Code:
#!/bash/sh
while read line
do
        ssh hieuneo@$line "uname -a" 0</dev/null
done < host.txt
]]>
/hvaonline/posts/list/19738.html#265313 /hvaonline/posts/list/19738.html#265313 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux

hieuneo wrote:
à! có phải read trong while trả về 1 stdin phải không anh?  
Em nói chính xác hơn xem. "Trả về 1 stdin" nghe nó cứ làm sao ấy.

hieuneo wrote:
và ssh dùng tham số -n để wwwect từ /dev/null về stdin Code:
#!/bash/sh
while read line
do
        ssh hieuneo@$line "uname -a" 0</dev/null
done < host.txt
 
`0` ở đây để làm gì vậy em? Cách này cũng tương đương với `-n` rồi, còn cách nào nữa không ;)?]]>
/hvaonline/posts/list/19738.html#265315 /hvaonline/posts/list/19738.html#265315 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#265320 /hvaonline/posts/list/19738.html#265320 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux

quanta wrote:
`0` ở đây để làm gì vậy em? Cách này cũng tương đương với `-n` rồi, còn cách nào nữa không ;)? 
Code:
while read line <&3
do
        ssh hieuneo@$line "uname -a"
done 3<host.txt
/hvaonline/posts/list/27007.html>]]>
/hvaonline/posts/list/19738.html#265610 /hvaonline/posts/list/19738.html#265610 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 1. Ctrl + L "Rửa mặt" cho console :D 2. echo -n "yourpasss"|md5sum|awk '{print $1}' Mã hoá sang định dạng MD5 từ text. 3. Curl ifconfig.me or curl icanhazip.com Show public IP P/S: anh Quanta đâu nhĩ:D ?? ]]> /hvaonline/posts/list/19738.html#267471 /hvaonline/posts/list/19738.html#267471 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#268237 /hvaonline/posts/list/19738.html#268237 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#271491 /hvaonline/posts/list/19738.html#271491 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux

GhostSentinel wrote:
Chủ đề này hay quá nhưng điều kiện không online được nhiều mà vào đây vừa đọc vừa thực hành.  
Cố gắng rủ mấy nhà hàng xóm mắc chung một đường Internet mà dùng. Học Linux mà không có Internet thì khổ lắm. Ngoài ra, Internet cũng có thể sẽ đem đến cho bạn những cơ hội khác.

GhostSentinel wrote:
Cho em hỏi có tài liệu nào dạng như thế này để em tải về máy rồi mở ra thực hành offline trên máy em được không ạ? 
Download http://www.httrack.com/ rồi dùng nó "mirror" commandlinefu về mà đọc. ]]>
/hvaonline/posts/list/19738.html#271494 /hvaonline/posts/list/19738.html#271494 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#271504 /hvaonline/posts/list/19738.html#271504 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux

JustUsername wrote:
Em đang tập mày mò về linux( hoàn toàn chưa biết gì ) và được khuyên dùng CentOs 6.3 RHEL ver 5. Em muốn hỏi là những câu lệnh anh đưa lên có ứng dụng được cho phiên bản CentOs 6.3 hay không,  
Được chứ.

JustUsername wrote:
vì e tìm trên mạng thì ko có những tài liệu specific cho nó mà chỉ toàn là về Linux nói chung,  
Đây: http://wiki.centos.org/

JustUsername wrote:
em cũng có tìm về so sánh giữa centos 6 và những ver linux khác ( mà cũng không vào đầu dc nhiều vì kiến thức cơ bản chưa có) nên chưa biết nên bắt đầu học từ đâu. 
Chưa cần thiết. Bạn cứ dùng CentOS cho thành thạo đi đã, sau này có muốn thử các distro khác cũng dễ hơn.]]>
/hvaonline/posts/list/19738.html#271506 /hvaonline/posts/list/19738.html#271506 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux

quanta wrote:

JustUsername wrote:
Em đang tập mày mò về linux( hoàn toàn chưa biết gì ) và được khuyên dùng CentOs 6.3 RHEL ver 5. Em muốn hỏi là những câu lệnh anh đưa lên có ứng dụng được cho phiên bản CentOs 6.3 hay không,  
Được chứ.  
Các distro linux khác nhau có chung tập lệnh, hay chỉ một phần nào đó hả Anh? //Em mới được dùng Ubuntu]]>
/hvaonline/posts/list/19738.html#272008 /hvaonline/posts/list/19738.html#272008 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux

nguoi.tap.code wrote:
Các distro linux khác nhau có chung tập lệnh, hay chỉ một phần nào đó hả Anh? //Em mới được dùng Ubuntu 
Các lệnh cơ bản nói chung là giống nhau, chỉ có phần package manager thì mỗi thằng một kiểu thôi.]]>
/hvaonline/posts/list/19738.html#272112 /hvaonline/posts/list/19738.html#272112 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 1. dpkg: Chương trình quản lý gói của Debian Sử dụng dpkg để cài 1 phần mềm từ file .deb Code:
# dpkg -i filename.deb
Liệt kê các gói đã cài: Code:
$ dpkg -l
Kết hợp với grep để kiểm tra xem gói vim đã được cài chưa và nếu được cài thì là những gói nào Code:
$ dpkg -l | grep vim
2. tail: dùng để đọc nội dung từ cuối file - Nếu chạy mà không có tham số, nó sẽ mặc định in ra 10 dòng cuối cùng của file: Code:
$ tail filename
- Để đọc 5 dòng cuối cùng của file: Code:
$ tail -5 filename
- Tùy chọn f (follow) cho phép tail theo dõi sự thay đổi của file, nếu có nội dung đưa vào cuối file thì nó sẽ được in ra. Ví dụ lệnh sau sẽ luôn in ra 5 dòng cuối cùng, nếu file có thêm nội dung thì nó sẽ in ra và chỉ in 5 dòng cuối: Code:
$ tail -5 -f filename
Tùy chọn f thường được dùng để theo dõi lỗi của 1 chương trình trong quá trình nó chạy nếu biết file log của nó. Ví dụ nếu gõ lệnh sau thì sẽ luôn biết được lỗi mới nhất của giao diện GUI: Code:
$ tail -f ~/.xsession-errors
3. blkid: Xem thông tin về block device. Ví dụ blkid trên máy mình: Code:
$ blkid
/dev/sda1: UUID="D66615066614E8CF" TYPE="ntfs"
/dev/sda5: LABEL="DATA" UUID="32EC0EF8EC0EB65F" TYPE="ntfs"
/dev/sda6: LABEL="MEDIA" UUID="DEC8530A31178BE1" TYPE="ntfs"
/dev/sda7: UUID="4f22f01d-b0cc-4238-a1e3-a092b461d646" TYPE="ext3"
/dev/sda8: UUID="59253199-6d61-4de9-b717-a56be24e88f9" TYPE="swap"
/dev/sda9: UUID="04a52a34-b2a0-4cdb-b25d-0217cd0600e4" TYPE="ext3"
/dev/sdax là tên phân vùng ổ cứng do Linux đặt (để quản lý). LABLE: tên của phân vùng (có thể có hoặc không) do người dùng đặt (lúc format chẳng hạn) UUID: không rõ lắm, nhưng nó được dùng để định danh 1 phân vùng, ví dụ Linux có thể đặt tên 1 phân vùng là sda1 hay sda2,... nhưng UUID của nó thì vẫn giữ nguyên. Thông tin này thường được dùng trong file /etc/fstab TYPE: kiểu phân vùng, có thể là ext3, ext4, NTFS, FAT32,... -sh]]>
/hvaonline/posts/list/19738.html#273001 /hvaonline/posts/list/19738.html#273001 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux /hvaonline/posts/list/19738.html#274327 /hvaonline/posts/list/19738.html#274327 GMT Vài ngày học một lệnh (hoặc một tiện ích) trong Linux Code:
chmod +t files/folders
The sticky bit looks like: -rwx——T When the sticky bit is enabled, only the owner of the file can change its permissions or delete it. Without the sticky bit, anyone with write permissions can change the modes (including ownership) or delete a file. This one is also handy when sharing files with a group of people. http://www.linuxnix.com/2012/01/sticky-bit-set-linux.html :D ]]>
/hvaonline/posts/list/19738.html#274454 /hvaonline/posts/list/19738.html#274454 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux 69. lvdisplay: hiển thị thông tin ổ logic Code:
--- Logical volume ---
  LV Path                /dev/vg_newmail/lv_root
  LV Name                lv_root
  VG Name                vg_newmail
  LV UUID                GfmRFM-aQ81-aArr-3o61-7tlg-oTul-6FGN2D
  LV Write Access        read/write
  LV Creation host, time newmail.example.com, 2013-03-21 15:08:54 +0700
  LV Status              available
  # open                 1
  LV Size                95.57 GiB
  Current LE             24465
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/vg_newmail/lv_swap
  LV Name                lv_swap
  VG Name                vg_newmail
  LV UUID                dbx2Kn-RHN3-Aku8-R8c0-4kRR-20c0-gzTYJT
  LV Write Access        read/write
  LV Creation host, time newmail.example.com, 2013-03-21 15:09:04 +0700
  LV Status              available
  # open                 1
  LV Size                3.94 GiB
  Current LE             1008
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
70. pvdisplay: hiển thị thông tin ổ vật lý Code:
--- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_newmail
  PV Size               19.51 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4994
  Free PE               0
  Allocated PE          4994
  PV UUID               yjIFNv-mdVv-zuNI-bmbj-Jxcc-xLnH-IHl2L0
   
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               vg_newmail
  PV Size               80.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              20479
  Free PE               0
  Allocated PE          20479
  PV UUID               uJNngv-sPbF-W1DO-PVfp-Z46U-2VSD-wSgg59
]]>
/hvaonline/posts/list/19738.html#276771 /hvaonline/posts/list/19738.html#276771 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux Code:
quanta    3993  1.0  0.0 100980  3672 pts/2    S+   22:54   0:00 ./flexAsynch -t 1 -p 80 -l 2 -o 100 -c 100 -n
Muốn biết current working directory của process này, trước kia mình hay dùng: Code:
$ ls -l /proc/3993/cwd
lrwxrwxrwx 1 quanta quanta 0 Oct 26 22:55 /proc/3993/cwd -> /usr/local/mysqlc732/bin
hoặc: Code:
$ readlink /proc/3993/cwd
/usr/local/mysqlc732/bin
Nay biết thêm một lệnh ngắn hơn, đó là: Code:
$ pwdx 3993
3993: /usr/local/mysqlc732/bin
]]>
/hvaonline/posts/list/19738.html#278863 /hvaonline/posts/list/19738.html#278863 GMT
Vài ngày học một lệnh (hoặc một tiện ích) trong Linux

toantoet wrote:
Lang thang trên mạng search được cái này cũng hay Auto complete cho lệnh service: Code:
complete -W "$(ls /etc/init.d/)" service
từ giờ khi sử dụng lệnh service, chỉ cần nhớ chữ cái đầu của dịch vụ rồi ấn tab. làm tương tự với chkconfig: Code:
complete -W "$(ls /etc/init.d/)" chkconfig
 
Bạn nào hay dùng `~/.ssh/config` có thể autocomplete hostname bằng cách: Code:
complete -o default -o nospace -W "$(awk '/^Host / { print $2 }' ~/.ssh/config)" ssh scp sftp
]]>
/hvaonline/posts/list/19738.html#279915 /hvaonline/posts/list/19738.html#279915 GMT