Browse > Home

| 订阅RSS

[linux秘笈30]. PS2 - 持续交互的提示符

三月 23rd, 2009 | No Comments | Posted in Linux

A very long command can be broken down to multiple lines by giving \ at the
end of the line. The default interactive prompt for a multi-line command is
“> “. Let us change this default behavior to display “continue->” by using PS2
environment variable as shown below.
ramesh@dev-db ~> myisamchk –silent –force –fast –
update-state \
> –key_buffer_size=512M –sort_buffer_size=512M \
> –read_buffer_size=4M –write_buffer_size=4M \
> /var/lib/mysql/bugs/*.MYI
[Note: This uses the default ">" for continuation
prompt]
ramesh@dev-db ~> export PS2=”continue-> ”
ramesh@dev-db ~> myisamchk –silent –force –fast –
update-state \
continue-> –key_buffer_size=512M –
sort_buffer_size=512M \
continue-> –read_buffer_size=4M –write_buffer_size=4M
\
continue-> /var/lib/mysql/bugs/*.MYI
[Note: This uses the modified "continue-> " for continuation prompt]
I found it very helpful and easy to read, when I break my long commands into
multiple lines using \. I have also seen others who don’t like to break-up long
commands.

Tags: , , ,

[命令集3.4]系统挂载点/磁盘使用情况

三月 21st, 2009 | No Comments | Posted in Linux
# mount | column -t        # 显示系统已挂载分区情况
# df                       # 显示磁盘剩余空间和挂载的设备
# cat /proc/partitions     # 显示所有设备的所有分区(Linux)
Tags: , ,

[Linux秘笈28].显示用户连接时间

三月 21st, 2009 | No Comments | Posted in Linux

Ac command will display the statistics about the user’s connect time.
Connect time for the current logged in user
With the option –d, it will break down the output for the individual days. In
this example, I’ve been logged in to the system for more than 6 hours today.
On Dec 1st, I was logged in for about 1 hour.

   $ ac –d
   Dec 1      total             1.08
   Dec 2      total             0.99
   Dec 3      total             3.39
   Dec 4      total             4.50
   Today      total             6.10

Connect time for all the users
To display connect time for all the users use –p as shown below. Please note
that this indicates the cumulative connect time for the individual users.

   $ ac -p
              john                                            3.64
              madison                                      0.06
              sanjay                                          88.17
              nisha                                           105.92
             ramesh                                        111.42
             total 309.21

Connect time for a specific user
To get a connect time report for a specific user, execute the following:

  $ ac -d sanjay
  Jul 2      total          12.85
  Aug 25     total            5.05
  Sep 3      total            1.03
  Sep 4      total            5.37
  Dec 24     total            8.15
  Dec 29     total            1.42
  Today      total            2.95
Tags: , ,

[命令集3.3]FreeBSD下的启动引导

三月 20th, 2009 | No Comments | Posted in Linux

如果新内核不能引导,要引导一个旧内核,停止启动倒计时,做如下动作:

 # unload
 # load kernel.old
 # boot
Tags: , , ,

[linux秘笈27]Diff命令

三月 20th, 2009 | No Comments | Posted in Linux

diff命令,通常用来比较两个文件的差别,命令的输出比较隐晦,不能直接阅读。使用方法

   Syntax: diff [options] file1 file2

具体的使用方法

jcai@jcai-notebook:~$ diff --help
Usage: diff [OPTION]... FILES
Compare files line by line.
 
  -i  --ignore-case  Ignore case differences in file contents.
  --ignore-file-name-case  Ignore case when comparing file names.
  --no-ignore-file-name-case  Consider case when comparing file names.
  -E  --ignore-tab-expansion  Ignore changes due to tab expansion.
  -b  --ignore-space-change  Ignore changes in the amount of white space.
  -w  --ignore-all-space  Ignore all white space.
  -B  --ignore-blank-lines  Ignore changes whose lines are all blank.
  -I RE  --ignore-matching-lines=RE  Ignore changes whose lines all match RE.
  --strip-trailing-cr  Strip trailing carriage return on input.
  -a  --text  Treat all files as text.
 
  -c  -C NUM  --context[=NUM]  Output NUM (default 3) lines of copied context.
  -u  -U NUM  --unified[=NUM]  Output NUM (default 3) lines of unified context.
    --label LABEL  Use LABEL instead of file name.
    -p  --show-c-function  Show which C function each change is in.
    -F RE  --show-function-line=RE  Show the most recent line matching RE.
  -q  --brief  Output only whether files differ.
  -e  --ed  Output an ed script.
  --normal  Output a normal diff.
  -n  --rcs  Output an RCS format diff.
  -y  --side-by-side  Output in two columns.
    -W NUM  --width=NUM  Output at most NUM (default 130) print columns.
    --left-column  Output only the left column of common lines.
    --suppress-common-lines  Do not output common lines.
  -D NAME  --ifdef=NAME  Output merged file to show `#ifdef NAME' diffs.
  --GTYPE-group-format=GFMT  Similar, but format GTYPE input groups with GFMT.
  --line-format=LFMT  Similar, but format all input lines with LFMT.
  --LTYPE-line-format=LFMT  Similar, but format LTYPE input lines with LFMT.
    LTYPE is `old', `new', or `unchanged'.  GTYPE is LTYPE or `changed'.
    GFMT may contain:
      %<  lines from FILE1
      %>  lines from FILE2
      %=  lines common to FILE1 and FILE2
      %[-][WIDTH][.[PREC]]{doxX}LETTER  printf-style spec for LETTER
        LETTERs are as follows for new group, lower case for old group:
          F  first line number
          L  last line number
          N  number of lines = L-F+1
          E  F-1
          M  L+1
    LFMT may contain:
      %L  contents of line
      %l  contents of line, excluding any trailing newline
      %[-][WIDTH][.[PREC]]{doxX}n  printf-style spec for input line number
    Either GFMT or LFMT may contain:
      %%  %
      %c'C'  the single character C
      %c'\OOO'  the character with octal code OOO
 
  -l  --paginate  Pass the output through `pr' to paginate it.
  -t  --expand-tabs  Expand tabs to spaces in output.
  -T  --initial-tab  Make tabs line up by prepending a tab.
 
  -r  --recursive  Recursively compare any subdirectories found.
  -N  --new-file  Treat absent files as empty.
  --unidirectional-new-file  Treat absent first files as empty.
  -s  --report-identical-files  Report when two files are the same.
  -x PAT  --exclude=PAT  Exclude files that match PAT.
  -X FILE  --exclude-from=FILE  Exclude files that match any pattern in FILE.
  -S FILE  --starting-file=FILE  Start with FILE when comparing directories.
  --from-file=FILE1  Compare FILE1 to all operands.  FILE1 can be a directory.
  --to-file=FILE2  Compare all operands to FILE2.  FILE2 can be a directory.
 
  --horizon-lines=NUM  Keep NUM lines of the common prefix and suffix.
  -d  --minimal  Try hard to find a smaller set of changes.
  --speed-large-files  Assume large files and many scattered small changes.
 
  -v  --version  Output version info.
  --help  Output this help.
 
FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'.
If --from-file or --to-file is given, there are no restrictions on FILES.
If a FILE is `-', read standard input.

当用我的新文件去和老文件比较那些发生了修改?
当执行比较的时候,在diff命令中使用选项 -w 能够忽略掉空格,
查看diff输出时候的注意是:

  1. ‘—’ 线上面的是第一个文件发生的变化
  2. ‘—’线向下的第二个文件发生的变化
  3. < 符号表示的内容,属于第一个文件,>符号表示的内容属于第二个文件
jcai@jcai-notebook:~/tmp$ cat test.txt
我们
你们现在还好吗?比较文本
jcai@jcai-notebook:~/tmp$ cat test2.txt
他们
我们
你们现在还好吗?
jcai@jcai-notebook:~/tmp$ diff test.txt test2.txt
0a1
> 他们
2c3
< 你们现在还好吗?比较文本
---
> 你们现在还好吗?
Tags: , , ,

[命令集3.2]Linux下和磁盘相关的命令

三月 19th, 2009 | No Comments | Posted in Linux
# diskinfo -v /dev/ad2 # 显示磁盘信息(扇区/大小) (FreeBSD)
# hdparm -I /dev/sda   # 显示 IDE/ATA 磁盘信息 (Linux)
# fdisk /dev/ad2       # 显示和修改磁盘分区表
# smartctl -a /dev/ad2 # 显示磁盘检测信息
Tags: , ,

[linux秘笈26]Stat命令

三月 19th, 2009 | No Comments | Posted in Hacks, Linux

Stat命令被用来查看单个文件或者文件系统的状态以及属性。
显示某一个文件或者文件系统的状态

jcai@jcai-notebook:~$ stat /etc/mysql/my.cnf 
  File: `/etc/mysql/my.cnf'
  Size: 3978      	Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d	Inode: 449073      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-03-18 21:31:03.000000000 +0800
Modify: 2009-03-04 18:08:03.000000000 +0800
Change: 2009-03-04 18:08:03.000000000 +0800
jcai@jcai-notebook:~$ stat /home/jcai
  File: `/home/jcai'
  Size: 4096      	Blocks: 8          IO Block: 4096   directory
Device: fe00h/65024d	Inode: 2187265     Links: 66
Access: (0755/drwxr-xr-x)  Uid: ( 1000/    jcai)   Gid: ( 1000/    jcai)
Access: 2009-03-19 08:14:47.000000000 +0800
Modify: 2009-03-19 09:22:12.000000000 +0800
Change: 2009-03-19 09:22:12.000000000 +0800

使用 -f 选项来战士文件系统的状态

jcai@jcai-notebook:~$ stat -f /
  File: "/"
    ID: f346283e2da86295 Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 4845177    Free: 3879940    Available: 3635752
Inodes: Total: 1224000    Free: 1082670
Tags: , , ,

[命令集3.1]linux文件的权限

三月 18th, 2009 | No Comments | Posted in Hacks, Linux

用 chmod 和 chown 更改访问权限和所有权。对于所有用户的默认掩码(umask)可以在 /etc/profile (Linux)
或 /etc/login.conf (FreeBSD) 中修改。其默认掩码(umask)通常为 022。掩码可以和777做减法,从而得到755
的权限。
1 –x 执行 # Mode 764 = 执行/读/写 | 读/写 | 读
2 -w- 写 # |—所有者|—用户组|—其他用户|
4 r– 读
ugo=a u=所有者, g=用户组, o=其他用户, a=所有用户

# chmod [OPTION] MODE[,MODE] FILE    # MODE 可以是 [ugoa]*([-+=]([rwxXst]))
# chmod 640 /var/log/maillog         # 更改 maillog 访问权限为 -rw-r-----
# chmod u=rw,g=r,o= /var/log/maillog # 同上
# chmod -R o-r /home/*               # 递归去除所有其他用户的可读权限
                                       在可执行位设置 SUID (知道你在干什么!13)
# chmod u+s /path/to/prog            #
# find / -perm -u+s -print           # 查找所有设置过 SUID 位的程序
# chown user:group /path/to/file     # 改变文件的所有者和文件关联的组
# chgrp group /path/to/file          # 改变文件关联的组
# chmod 640 `find ./ -type f -print` # Change permissions to 640 for all files
# chmod 751 `find ./ -type d -print` # Change permissions to 751 for all directories
Tags: , , ,

Linux秘笈25.Linux的Cut命令

三月 18th, 2009 | 2 Comments | Posted in Hacks, 软件架构

Cut command can be used to display only specific columns from a text file or
other command outputs.
Following are some of the examples.
Display the 1st field (employee name) from a colon delimited file

  $ cut -d: -f 1 names.txt
  Emma Thomas
  Alex Jason
  Madison Randy
  Sanjay Gupta
  Nisha Singh

Display 1st and 3rd field from a colon delimited file

  $ cut -d: -f 1,3 names.txt
  Emma Thomas:Marketing
  Alex Jason:Sales
  Madison Randy:Product Development
  Sanjay Gupta:Support
  Nisha Singh:Sales

Display only the first 8 characters of every line in a file

  $ cut -c 1-8 names.txt
  Emma Tho
  Alex Jas
  Madison
  Sanjay G
  Nisha Si
Tags: , , ,

Linux秘笈24. Uniq命令

三月 17th, 2009 | No Comments | Posted in Linux

Uniq command is mostly used in combination with sort command, as uniq
removes duplicates only from a sorted file. i.e In order for uniq to work, all
the duplicate entries should be in the adjacent lines. Following are some
common examples.
1. When you have an employee file with duplicate entries, you can do the
following to remove duplicates.

   $ sort namesd.txt | uniq
   $ sort –u namesd.txt

2. If you want to know how many lines are duplicates, do the following. The
first field in the following examples indicates how many duplicates where
found for that particular line. So, in this example the lines beginning with
Alex and Emma were found twice in the namesd.txt file.

   $ sort namesd.txt | uniq –c
             2  Alex Jason:200:Sales
             2  Emma Thomas:100:Marketing
             1  Madison Randy:300:Product Development
             1  Nisha Singh:500:Sales
             1  Sanjay Gupta:400:Support

3. The following displays only the entries that are duplicates.

   $ sort namesd.txt | uniqcd
             2 Alex Jason:200:Sales
             2 Emma Thomas:100:Marketing
Tags: , ,