linux的一些基本命令

  1、date:print or set the system date and time

  (1)指定输出内容及形式:

  date +%Y-%m-%d:2013-10-12,以指定形式打印当前的日期。

  date +%F:2013-10-12,打印当前日期;date +%T:13:32:44,打印当前时间。

  date +%s:打印从UNIX纪元到现在所经历的秒数。计算两个日期的天数差可以借助该选项。

  date +%j:打印当前日期在当前年中的序号。

  (2)选项:

  -d:指定时间。以下是一些例子:

  date -d -10day +%Y-%m-%d:打印10天前的日期。另外还有+10day、-5hour、-5minute等。还可以用-d '10 days ago'、-d '20131012'等。

  date -d "@1380185322" +%Y-%m-%d\ %H:%M:%S:将某个时刻(秒)转换成日期时间格式。注意时区在这里会有所影响,如date -d "@1" +%Y-%m-%d\ %H:%M:%S的结果是1970-01-01 08:00:01,而不是1970-01-01 00:00:01。

 

  2、rename:文件重命名。语法:rename from to file。例子:

  批量将udp_server.log.2013-11-03这种命名方式的日志文件重命名为tcp_server.log.2013-11-03:rename udp_server tcp_server udp_server.log.??????????

 

  3、basename:从文件名中去掉目录和后缀。例子:

  basename dir/test.sh  结果:test.sh

  basename dir/test.sh .sh  结果:test

 

   4、paste:merge lines of files

  file1及file2的内容:

    

  paste file1 file2 file3...按行拼接列表中的文件。-d指定分隔符,-s指定以每个文件占用一行的方式拼接。

      

 

   5、dos2unix:DOS/MAC to UNIX text file format converter,unix2dos:UNIX to DOS text file format converter

  

 

  6、iconv:Convert encoding of given files from one encoding to another

  语法:iconv -f encoding -t encoding inputfile。如把编码为gb18030的testfile转码为utf8:iconv -f gb18030 -t utf8 testfile

 

  7、ps:report a snapshot of the current processes

  1)进程状态(STAT列):D(不可中断睡眠,通常是IO)、R(正在运行或可运行的)、S(可中断睡眠,正等待事件完成)、T(被作业控制信号停止等)、Z(死(defunct)/僵尸进程)

  另外,在BSD格式下还可能有:<(高优先级)、N(低优先级)、s(某个会话的leader进程)、l(多线程的,使用了CLONE_THREAD)、+(在前台进程组中)。

  2)常用选项:-e:选定所有进程(等价于-A);-o:指定输出的自定义格式。

  3)示例:

  (1)以自定义格式显示所有进程的信息:

ps -eo user,pid,ppid,pcpu,pmem,comm,args

 

  8、tee:read from standard input and write to standard output and files

  将标准输入的内容复制到标准输出和指定的(多个)文件(若指定为-,表示再复制一份到标准输出)。

  1)选项:-a:追加写文件。

  2)例子:last | tee last | cut -d " " -f 1。

 

  9、top:display Linux processes

  H:打开或关闭线程模式(是否在top中显示进程的各个线程)。

  选项:-p:只监控指定pid的进程,如top -p 0,`pidof a.out`只监控top和a.out两个进程。

 

  10、du:estimate file space usage

  选项:-h:--human-readable(如用K/M/G表示大小);-s:只打印指定目录的汇总大小;-d, --max-depth=N:打印指定目录下N层或小于N层的各个子目录的汇总大小(N为0时相当于-s)。

 

  11、lsof:list open files

  1)简介:lsof列出进程所打开文件的信息。文件可以是普通文件、目录、块/字符设备、库或网络文件(如套接字)。如下:

  

  TID:线程ID。在Linux下,该列为空表示是一个进程(而非线程)。

  FD:文件描述符或cwd(当前工作目录)、mem(内存映射文件,如so文件)、rtd(根目录)和txt(程序文本,代码和数据)等。

  FD后面的模式字符的含义:r(读访问)、w(写访问)和u(读写访问)等。模式字符后面可能有“锁字符,含义:r(文件某部分的读锁)、R(整个文件的读锁)、w(文件某部分的写锁)和W(整个文件的写锁)等。

  TYPE:文件类型,如IPv4(IPv4套接字)、DIR、FIFO、unix(UNIX域套接字)和REG(普通文件)等。

  2)一些例子:

  (1)列出和某个端口有关的打开文件:

# lsof -i :22
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd     1521 root    3u  IPv4   9620      0t0  TCP *:ssh (LISTEN)
sshd     1521 root    4u  IPv6   9622      0t0  TCP *:ssh (LISTEN)
sshd     4598 root    3u  IPv4  22841      0t0  TCP 192.168.200.251:ssh->192.168.200.36:49666 (ESTABLISHED)
sshd     7436 root    3u  IPv4 188300      0t0  TCP 192.168.200.251:ssh->192.168.200.36:51932 (ESTABLISHED)
sshd    13487 root    3u  IPv4 773067      0t0  TCP 192.168.200.251:ssh->192.168.200.3:49345 (ESTABLISHED)
sshd    23267 root    3u  IPv4 911624      0t0  TCP 192.168.200.251:ssh->192.168.200.46:61257 (ESTABLISHED)
sshd    29386 root    3r  IPv4 974001      0t0  TCP 192.168.200.251:ssh->192.168.200.39:51568 (ESTABLISHED)

  如果要列出22-25端口有关的打开文件:lsof -i :22-25

  (2)只列出和IPv4/IPv6有关的打开文件:lsof -i 4、lsof -i 6

  (3)列出指定PID的进程打开的文件:lsof -p 5357

  (4)列出某个目录下打开的文件:

# lsof +D /var/log/
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
auditd    1244 root    5w   REG  253,0  5256931 265130 /var/log/audit/audit.log
rsyslogd  1278 root    1w   REG  253,0     6611 295397 /var/log/messages
rsyslogd  1278 root    2w   REG  253,0    13751 263406 /var/log/cron
rsyslogd  1278 root    4w   REG  253,0     2691 295398 /var/log/secure
wpa_suppl 1442 root    3w   REG  253,0        0 265157 /var/log/wpa_supplicant.log

 

  12、fuser:identify processes using files or sockets

  1)简介:fuser显示正在使用指定文件或文件系统的进程。

  2)常用选项:-v:详细模式。以类ps风格显示。

  3)示例:

[root@localhost ~]# fuser -v /root/
                     USER        PID ACCESS COMMAND  # ACCESS表示访问类型
/root:               root       2385 ..c.. bash  # c表示“当前目录”(即该目录为进程的当前目录)
... ...
                     root       4044 ..c.. vim
                     root       4056 ..c.. bash

[root@localhost ~]# fuser -v /root/.test.cpp.swp  # 另外有一个进程用vim打开test.cpp时执行该命令
                     USER        PID ACCESS COMMAND
/root/.test.cpp.swp: root       4044 F.... vim  # F表示进程为了写而打开该文件

[root@localhost ~]# fuser -v /usr/bin/cat  # 另外有一个进程在执行cat命令
                     USER        PID ACCESS COMMAND
/usr/bin/cat:        root       4047 ...e. cat  # e表示进程运行了该可执行文件

 

  13、xxd:make a hexdump or do the reverse.

  如在终端(编码为UTF-8)执行如下命令,可以得到“中文”的utf8编码:

[root@localhost ~]# echo "中文" | xxd
0000000: e4b8 ade6 9687 0a                        .......

 

  参考资料:

  http://m.oschina.net/question/12_145479#rd

 

 

不断学习中。。。

posted on 2013-10-12 15:33  han'er  阅读(442)  评论(0编辑  收藏  举报

导航