`

项目部署和维护常用的linux命令使用记录(不断更新中)

 
阅读更多

一、cat命令

cat命令用来读取短文件非常方便(如果一个文件非常大的时候,用页命令如more、less、head、tail是比较方便的)

参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行

用法:(1)一次显示整个文件,用cat命令查看文件:$ cat test.log

         (2)$ cat -n test.log:在查看的时候加上行号

         (3)可以使用通配符:$ cat -n *.log,把所有的log文件都显示出来(顺序显示)
                 也可以这样:$ cat -n test.log test1.log test2.log;结果用通配符输出结果是完全一样的

         (4)与重定向操作符(>)一起使用,用于合并文件:$ cat test.log>> test1.log,这样就把test.log合并到

                  test1.log后面去了,合并的时候注意顺序,不能搞错。

                cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
                cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)

                之后将内容附加到 textfile3 里

          (5)从键盘创建一个文件。$ cat  >  filename 只能创建新文件,不能编辑已有文件

                 使用cat命令新建一个文件并通过键盘直接向文件中输入内容:$ cat > myfile.php

                 输入完成以后使用ctrl+d来保存并退出文件

           (6)cat  /dev/null > /etc/test.txt 此为清空/etc/test.txt内容

二、more命令

       显示输出的内容、分页显示、提示文件的百分比

        more [参数选项] [文件]

        参数如下

        +num         从第num行开始显示;
        -num          定义屏幕大小,为num行;
        -c               从顶部清屏然后显示;
        -d              提示Press space to continue, 'q' to quit.(按空格继续,按q键退出,禁用响铃功能); 
        -p              通过清除窗口而不是滚屏来对文件进行换页。和-c参数有点相似;  
        -s               把连续的多个空行显示为一行;
        +/pattern       从第一个pattern 单词前两行开始显示

       参数举例:

      more +4 /etc/profile    从profile的第4行开始显示;
      more -4 /etc/profile     每屏显示4行;

      more -dc /etc/profile    显示提示,并从终端或控制台顶部显示

      more +/MAIL /etc/profile    从profile中的第一个MAIL单词的前两行开始显示;

 

     more 的动作指令

     退出more的动作指令是q

     我们查看一个内容较大的文件时,ctrl+f(或空格键)是向下显示一屏,ctrl+b是返回上一屏

     Enter键可以向下滚动显示n行,n自定义,默认为1行

     v     调用vi编辑器

 

   三、 less命令

     less 与 more 类似,但是比 more 更好的是,他可以[pg dn][pg up]翻页

    区别:

    1)more:以百分比的形式分页显示,提示给用户已经显示了多少内容

         less:没有百分比的提示

    2)less更加灵活,不仅可以有more的相同的翻页键,还可以通过【page down】【page up】上翻下翻页查看

        已经显示出的内容,而more不具备

    3)对less显示出的内容中可以使用 /'字符' 输入需要查找的字符或者字符串并高亮显示,而more 不具备

 

    less搜索

     当使用命令 less filename打开一个文件后,可以使用下面的方式在文件中搜索。搜索时整个文本中匹配的部分会

     被高亮显示。

    向前搜索

    / - 使用一个模式进行搜索,并定位到下一个匹配的文本

    n - 向前查找下一个匹配的文本

    N - 向后查找前一个匹配的文本

 

    向后搜索

    ? - 使用模式进行搜索,并定位到前一个匹配的文本

    n - 向后查找下一个匹配的文本

    N - 向前查找前一个匹配的文本

 

    v - 使用配置的编辑器编辑当前文件

    退出less命令 按q键

 

    浏览多个文件

    方式一,传递多个参数给 less,就能浏览多个文件。less file1 file2

    方式二,正在浏览一个文件时,使用 :e 打开另一个文件。less file1   :e file2

    当打开多个文件时,使用如下命令在多个文件之间切换 

    :n - 浏览下一个文件(next下一个)

    :p - 浏览前一个文件(prev上一个)

 

    三、head命令和tail命令

          head -n  100  test.log   显示test.log前100行,若不加参数-n就默认输出前面十行

          tail -n 100 test.log   显示test.log最后100行

          tail -f  runlog.log   可以实时的显示新追加到文件中的信息,常用来跟踪日志文件 

        (执行del、ctrl-C、ctrl-X、ctrl-\均可以退出实时显示)

 

   四、grep查找命令

         grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是 

   Global Regular Expression Print,表示全局正则表达式版本(打印与指定模式匹配的所有行)

   grep [options]主要参数:

   -n:显示匹配行及行号

   -i:不区分大小写(只适用于单字符 默认情况区分大小写)

   - x:输出完全匹配的内容

   pattern正则表达式

  [ ]:单个字符,如[A]即A符合要求 。
  [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
   .  :匹配一个字符(所有的单个字符)。
   * :匹配0或多个字符。

   举例:

       $ grep ‘test’ d*     显示所有以d开头的文件中包含 test的行。
       $ grep ‘test’ aa bb cc    显示在aa,bb,cc文件中匹配test的行。

       $ more log.txt | grep -i 'error'  显示在log.txt中匹配error或ERROR的行

 

   五、查看进程ps命令

         ps命令是linex下查看进程最常用的命令,用于查看和监控后台进程的工作情况

         参数:

         -e  :显示所有的进程

         -a :显示终端上所有的进程,包括其他用户的进程(all)

         -u : 显示有效使用者 (effective user) 相关的进程

     -x :通常与 a 这个参数一起使用,可列出较完整信息

         -f  :全格式显示(full) 做一个更为完整的输出

         -l  : 长格式显示(long)较长、较详细的将该 PID 的的信息列出

     最常用的参数是aux

     举例:

     ps aux 

     显示的项目有:USER , PID , %CPU , %MEM , VSZ , RSS , TTY , STAT , START , TIME , COMMAND
     ps -ef|grep java 是用标准的格式显示含有java的进程
     显示的项目有:UID , PID , PPID , C , STIME , TTY , TIME , CMD

 

  六、中止进程kill命令

     中止进程首先要知道进程ID(PID),用ps -ef查看一下PID,然后kill pid,这是最简单的用法

     参数:

     -s:指定发送的信号(signal),其中可用的信号有 HUP (1), KILL (9), TERM (15), 分别代表著重跑,

          砍掉, 结束; 详细的信号可以用 kill -l

     kill -Signal pid

     经常看到kill -9 pid,用于强行中止进程(即杀死进程)

    这个-9表示什么意思呢?9是信号量,kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个进

    程标识号,然后内核对进程标识号指定的进程进行操作。所以kill实际上是用来发送信号量给进程。可以通过

    man kill查看信号量列表。TERM(或数字9)表示“无条件终止”;因此 kill - 9 表示强制杀死该进程; 
    而单独的kill则有局限性,例如后台进程,守护进程等;

 

    停止和重启进程

    有时候只想简单地停止和重启进程,可以用命令:kill -HUP pid 或者kill -1(数字1) pid

    该命令让linux内核和缓地执行进程关闭,然后立即重新启动该进程,在配置应用程序时这个命令很方便

    对配置文件做修改后需要使之生效就可以使用该命令重启进程即可。

 

    最好在使用完kill -9命令后,再用free命令回收内存(kill -9突然中止运行的进程

    中止后不能自我清理,导致系统 资源无法释放)

    例:$ kill -9 XXX 

        $ free

        其中,XXX是无用的进程标识号。然后使用下面命令:$ free 此时会发现可用内存容量增加了。
    TERM信号:给父进程发送一个TERM信号,试图杀死它和它的子进程  如 $ kill -TERM pid

   

   

    Linux下还提供了一个  killall命令

    killall 杀死同一进程组内所有的进程,并且允许使用进程名而不是进程ID指定要终止的进程

    例如:$ killall httpd   

 

七、who命令

     该命令主要用于查看当前在线上的用户情况

     这个命令非常有用。如果用户想和其他用户建立即时通讯,比如使用talk命令,那么首先要确定的就是该用户确实在线上,不然talk进程就无法建立起来。又如,系统管理员希望监视每个登录的用户此时此刻的所作所为,也要使用who命令。

     who命令显示以下信息

     ebpp     pts/0        2011-12-26 14:20 (144.131.254.134)
     ebpp     pts/1        2011-12-26 17:06 (172.16.26.23)

      第一列是登录用户的帐号;

      第二列是登录所使用的终端;

      第三列是登录时间;

      第四列是用户从什么地方登录的网络地址,这里是域名。

      参数

         -m 和“who am i”的作用一样,显示运行该程序的用户名

         -q    count 只显示用户的登录帐号和登录用户的数量

 

八、netstat命令

     Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连

     接情况。利用netstat命令可以得知整个Linux系统的网络情况

 

常用参数:

netstat -a   本选项显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请求(LISTENING)的那些连接,断开连接(CLOSE_WAIT)或者处于联机等待状态的(TIME_WAIT)等
netstat -n   显示所有已建立的有效连接。

例子:netstat

显示结果:

Proto  Local Address          Foreign Address        State
TCP    Eagle:2929             219.137.227.10:4899    ESTABLISHED
协议(Proto):指是传输层通讯协议
本地机器名(Local  Address):Eagle,俗称计算机名了,安装系统时设置的,可以在“我的电脑”属性中修改,本地打开并用于连接的端口:2929)   
远程机器名(Foreign  Address):219.137.227.10
远程端口:4899  
状态:ESTABLISHED 

 

 

如何只查询tomcat的连接呢?

netstat -na|grep ESTAB|grep 80|wc -l

netstat -na|grep ESTAB|grep 8080|wc -l

 

九:查看CPU内存使用情况

通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次

top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。

第一部分 -- 最上部的 系统信息栏 :

 第一行(top):
“00:11:04”为系统当前时刻;
“3:35”为系统启动后到现在的运作时间;
“2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;
“load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程;
第二行(Tasks):
“59 total”为当前系统进程总数;
“1 running”为当前运行中的进程数;
“58 sleeping”为当前处于等待状态中的进程数;
“0 stoped”为被停止的系统进程数;
“0 zombie”为被复原的进程数;
第三行(Cpus):
分别表示了 CPU 当前的使用率;
第四行(Mem):
分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量;
第五行(Swap):
表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
第二部分 -- 中间部分的内部命令提示栏:
 
    top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下表:
top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。
<空格>:立刻刷新。
p:根据CPU使用大小进行排序。
t:根据时间、累计时间排序。
q:退出top命令。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
m:根据使用内存大小进行排序。
s - 改变画面更新频率,如s5:每5s刷新一次
 
查看内存我们一般用free命令:
free命令是用来查看内存使用情况的主要命令。
和top命令相比,它的优点是使用简单,并且只占用很少的系统资源。通过-S参数可以使用free命令不间断地监视有多少内存在使用,这样可以把它当作一个方便实时监控器。
主要参数
-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。
-s delay:显示每隔多少秒数来显示一次内存使用情况。
如:free -m -s5
以MB字节查看,会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次
 
我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。
 所以 空闲内存=free+buffers+cached=total-used
 
使用free命令查看的信息:
                    total           used         free         shared    buffers     cached
Mem:       3266180    3250004      16176          0       110652    2668236
-/+ buffers/cache:       471116      2795064
Swap:      2048276      80160    1968116
下面是对这些数值的解释:
total:总计物理内存的大小。
 used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
 used:已使用多大。
 free:可用有多少。
第四行就不多解释了。
 区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是16176KB,已用内存是3250004KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。
如上例:2795064=16176+110652+2668236
分享到:
评论

相关推荐

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    5.2 使用和约束 5.3 应用 5.3.1 创建 capped collection 5.3.2 限制capped collection中对象个数 5.4 注意事项 5.5 本章小结 第6章 GridFS存储文件 6.1 为什么要用GridFS 6.2 如何实现海量存储 ...

    深入云计算 MongoDB管理与开发实战详解pdf.part2

    5.2 使用和约束 5.3 应用 5.3.1 创建 capped collection 5.3.2 限制capped collection中对象个数 5.4 注意事项 5.5 本章小结 第6章 GridFS存储文件 6.1 为什么要用GridFS 6.2 如何实现海量存储 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例033 Zend Studio中部署Apache服务器 60 第2章 PHP基础 63 2.1 基本语法 64 实例034 在页面中打印PHP的配置信息 64 实例035 在页面中打印服务器时间 65 实例036 在页面中打印当前执行的PHP文件名 67 实例037 区分...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例033 Zend Studio中部署Apache服务器 60 第2章 PHP基础 63 2.1 基本语法 64 实例034 在页面中打印PHP的配置信息 64 实例035 在页面中打印服务器时间 65 实例036 在页面中打印当前执行的PHP文件名 67 实例037 区分...

    Java异常诊断greys-anatomy.zip

    常用的几个Btrace脚本整合在一起形成一个独立风格的应用,但其核心代码用的是Scala,我们没这方面的编程维护经验,所以只好艳羡HouseMD 的才思敏捷而无法在其上增加功能。 于是乎,Greys诞生了。 PS:目前...

    JAVA上百实例源码以及开源项目源代码

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    JAVA上百实例源码以及开源项目

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    java 面试题 总结

    Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应...

    java开源包8

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    超级有影响力霸气的Java面试题大全文档

    Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应...

    java开源包1

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包11

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包2

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包3

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包6

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包5

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包10

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包4

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包7

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

Global site tag (gtag.js) - Google Analytics