[Question] Re: Script watermark hàng loạt ảnh trong một thư mục |
06/02/2009 11:03:22 (+0700) | #61 | 168394 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
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. |
|
Let's build on a great foundation! |
|
|
|
[Question] Re: Script watermark hàng loạt ảnh trong một thư mục |
06/02/2009 11:35:56 (+0700) | #62 | 168401 |
lamer
Elite Member
|
0 |
|
|
Joined: 26/02/2008 13:28:49
Messages: 215
Offline
|
|
Film đó từ 2004, bây giờ quanta phải tự đi lục về mà xem thôi. Trong film có một đoạn họ dùng nước chanh và máy sấy tóc để làm cái hình bản đồ hiện lên sau tấm tuyên ngôn độc lập. |
|
|
|
|
[Question] Re: Vài ngày học một lệnh Linux |
23/02/2009 11:02:23 (+0700) | #63 | 170537 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
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
|
|
Let's build on a great foundation! |
|
|
|
[Question] Re: Vài ngày học một lệnh Linux |
07/03/2009 07:02:38 (+0700) | #64 | 172193 |
zerozeroone
Member
|
0 |
|
|
Joined: 24/12/2006 13:29:23
Messages: 149
Offline
|
|
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. |
|
|
|
|
[Question] Re: Vài ngày học một lệnh Linux |
24/03/2009 05:39:14 (+0700) | #65 | 174375 |
|
F10
Member
|
0 |
|
|
Joined: 01/12/2008 23:38:12
Messages: 89
Offline
|
|
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
|
|
|
|
|
[Question] Re: Vài ngày học một lệnh Linux |
30/03/2009 04:22:27 (+0700) | #66 | 175228 |
myquartz
Member
|
0 |
|
|
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
|
|
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. |
|
|
|
|
[Question] Re: Vài ngày học một lệnh Linux |
09/04/2009 08:40:15 (+0700) | #67 | 176286 |
|
St Konqueror
Member
|
0 |
|
|
Joined: 08/12/2007 00:47:39
Messages: 229
Offline
|
|
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à -v các bạn có thể tham khảo từ man page
Code:
|
|
|
|
|
[Question] Re: Vài ngày học một lệnh Linux |
16/04/2009 20:18:54 (+0700) | #68 | 177428 |
Kihote
Member
|
0 |
|
|
Joined: 27/10/2008 17:00:46
Messages: 24
Offline
|
|
Mình mới tham khảo và phát hiện ra là bạn cài đặt gói phần mềm bạn muốn biết thông tin file ghi vào hệ thống để sau này có thể gỡ bỏ dễ dàng.
Đầu tiên
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. |
|
|
|
|
[Question] Re: Vài ngày học một lệnh Linux |
23/04/2009 11:45:01 (+0700) | #69 | 178168 |
|
learn2hack
Elite Member
|
0 |
|
|
Joined: 29/06/2006 16:32:37
Messages: 825
Offline
|
|
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:
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:
Xem thêm man head |
|
Blog: http://hontap.blogspot.com
Tải phần mềm miễn phí: http://www.taiphanmem.org |
|
|
|
[Question] Re: Vài ngày học một lệnh Linux |
25/04/2009 08:17:41 (+0700) | #70 | 178450 |
|
learn2hack
Elite Member
|
0 |
|
|
Joined: 29/06/2006 16:32:37
Messages: 825
Offline
|
|
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. |
|
Blog: http://hontap.blogspot.com
Tải phần mềm miễn phí: http://www.taiphanmem.org |
|
|
|
[Question] Vài ngày học một lệnh Linux |
16/06/2009 04:11:39 (+0700) | #71 | 183629 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
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? |
|
Let's build on a great foundation! |
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
03/07/2009 04:31:39 (+0700) | #72 | 185196 |
dEvIL.kiD
Member
|
0 |
|
|
Joined: 26/05/2009 16:26:56
Messages: 8
Offline
|
|
các anh post hộ e lệnh tạo LaTeX Document với |
|
|
|
|
[Question] Vài ngày học một lệnh Linux |
16/07/2009 03:33:19 (+0700) | #73 | 186389 |
|
St Konqueror
Member
|
0 |
|
|
Joined: 08/12/2007 00:47:39
Messages: 229
Offline
|
|
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-id và by-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
|
|
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
25/07/2009 04:59:07 (+0700) | #74 | 187460 |
m3onh0x84
Member
|
0 |
|
|
Joined: 29/11/2007 15:22:21
Messages: 467
Location: lang thang 4 biển
Offline
|
|
@St Konqueror: Tớ k0 muốn chat hay hỏi đáp gì ở đây, vì ở đây là tớ thấy đây viết tut, hướng dẫn. Nhưng tớ đang đau đầu 1 câu hỏi:
Dùng PQ Magic, fdisk, qtparted thì có thể set label cho mọi phân vùng, trừ phân vùng reiserfs (mà tớ bây giờ hay dùng phân vùng này).
Vậy làm sao để đọc label của mọi phân vùng với nhiều chương trình partition khác nhau. Còn khi cài multiboot, nhiều HDH trên 1 HDD thì làm sao các OS đó nhận ra nhau (fsck khác nhau, kernel khác nhau, os update liên tục và os thì thoảng mới update).
VD: slackware ít update cài sau backtrack 4 thì làm sao slackware nhận ra backtrack được ?
|
|
1/ LÀM ƠN "Đọc kĩ hướng dẫn sử dụng trước khi dùng".
2/homepage: trước khi hỏi thì LÀM ƠN tìm kiếm. Vì để biết nhiều hơn thì ai cũng phải đọc "VỪNG ƠI MỞ RA"
Hỏi FAQ thì lên asking.vn mà hỏi |
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
27/07/2009 13:06:20 (+0700) | #75 | 187704 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
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:
Danh sách các lệnh đã gõ không bị ghi đè lẫn nhau:
Code:
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 ..
...
|
|
Let's build on a great foundation! |
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
28/08/2009 15:36:13 (+0700) | #76 | 191323 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
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é. |
|
Let's build on a great foundation! |
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
19/09/2009 06:13:57 (+0700) | #77 | 193312 |
thozao
Member
|
0 |
|
|
Joined: 02/09/2009 21:54:27
Messages: 2
Offline
|
|
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 ạ? |
|
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
19/09/2009 06:39:30 (+0700) | #78 | 193323 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
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
- ...
|
|
Let's build on a great foundation! |
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
19/09/2009 06:40:52 (+0700) | #79 | 193325 |
|
Mr.Kas
Member
|
0 |
|
|
Joined: 22/07/2009 14:36:56
Messages: 209
Offline
|
|
Bổ sung cái lệnh này cho những bạn nào muốn tắc máy nhanh
Code:
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
|
|
Treo chuột, gác phím, cất modem, cắt NET. Lên núi luyện công chờ ngày trở lại ... |
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
04/12/2009 09:14:17 (+0700) | #80 | 199745 |
thozao
Member
|
0 |
|
|
Joined: 02/09/2009 21:54:27
Messages: 2
Offline
|
|
lệnh bmon dùng để xem lưu lựong đi qua card mạng trong 1 s.
- Tiện thể, pro nào đã gặp trường hợp, giả sử có 3 node: A -> B -> C, B là node trung gian truyền dữ liệu giữa A và C và B có 1 card mạng (ethernet). Mình dùng bmon để xem tốc độ truyền thế nào thì thấy tốc độ RX gấp đôi TX. Mình nghĩ tốc độ RX và TX phải giống giống nhau chứ nhỉ? ( tốc độ RX + tốc độ TX < tốc độ truyền max của card net. cụ thể: max: 100MB/s, RX: 20MB/s, TX: 13MB/s). |
|
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
22/12/2009 19:46:34 (+0700) | #81 | 201640 |
toantoet
Member
|
0 |
|
|
Joined: 03/02/2004 07:41:54
Messages: 31
Offline
|
|
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
|
|
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
23/06/2010 11:16:04 (+0700) | #82 | 213951 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
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 |
|
Let's build on a great foundation! |
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
21/07/2010 18:53:57 (+0700) | #83 | 215919 |
thuc960
Member
|
0 |
|
|
Joined: 13/07/2010 08:34:53
Messages: 3
Offline
|
|
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 |
|
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
21/07/2010 19:14:28 (+0700) | #84 | 215920 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
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. |
|
Let's build on a great foundation! |
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
07/10/2010 14:27:14 (+0700) | #85 | 222307 |
|
St Konqueror
Member
|
0 |
|
|
Joined: 08/12/2007 00:47:39
Messages: 229
Offline
|
|
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.
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:
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:
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
|
|
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
07/10/2010 14:46:21 (+0700) | #86 | 222310 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
Có lẽ nhiều bạn biết rồi, nhưng thôi mình cứ giới thiệu cho những người chưa biết vậy: http://www.commandlinefu.com |
|
Let's build on a great foundation! |
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
25/11/2010 20:19:08 (+0700) | #87 | 225481 |
|
Ikut3
Elite Member
|
0 |
|
|
Joined: 24/09/2007 23:47:03
Messages: 1429
Location: Nhà hát lớn
Offline
|
|
Mình hay sử dụng lệnh 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 |
|
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
26/11/2010 22:42:39 (+0700) | #88 | 225621 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
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
|
|
Let's build on a great foundation! |
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
10/12/2010 21:55:59 (+0700) | #89 | 226826 |
anonymous_itop
Member
|
0 |
|
|
Joined: 22/05/2009 01:27:51
Messages: 42
Offline
|
|
69. rsync
mình củng có một command muốn chia sẻ đó là
rsync là một công cụ giúp copy local trong một máy hoặc những máy khác nhau với nhau bằng tuỳ chọn -e để bật một command khác.
ví dụ mình copy tập tin cấu hình bind từ một máy đã cấu hình sẳn sang một máy đang định cấu hình.
srync -ave ssh hau@192.168.1.111:/etc/bind/ /etc/bind/
nó sẻ giử luôn quyền ban đầu của file đã chép qua.
mục này rất hay, nhưng nếu quanta có thể tạo một mục lục ngay từ đầu và cho link đến từng câu thì sẻ dể tìm kiếm và xem có đăng trùng hay không. cám ơn quanta.
|
|
|
|
|
[Question] Vài ngày học một lệnh (hoặc một tiện ích) trong Linux |
10/12/2010 22:29:42 (+0700) | #90 | 226828 |
|
Ikut3
Elite Member
|
0 |
|
|
Joined: 24/09/2007 23:47:03
Messages: 1429
Location: Nhà hát lớn
Offline
|
|
sshfs (share linux to linux)
Dùng để chia sẻ folder - file giữa các máy linux . 1 dạng tương tự như mount
Ví dụ muốn mount khu vực /u01/core ở máy 192.168.1.17 sang thư mục /root/test của máy 192.168.1.15 làm như sau
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 |
|
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|