您的位置:首页 > 运维架构 > Linux

Linux学习记录——持续更新

2017-05-15 17:15 507 查看
持续记录Linux的一些知识:

1、grep 同时查找多个内容

例:因为服务器某文件夹中有多个文件,如果用“ll”命令的话,会显示出所有内容不方便定位,如下图:



在这么多文件中,如果只想得到lineStage_vX.zip时,就可以使用grep命令来进行过滤,如下图:



上图是按照一个字符串“line”来进行查找的,如果要查找多个字符串时,可以使用  |grep -E ‘line|len’来进行查找,如下图:



2、Crontab定时任务命令

crontab命令用于设置周期性被执行的指令

① 首先是crontab命令的位置,crontab文件一般位于/etc目录下:



第一行SHELL变量指定了系统要用哪个shell,这里是bash

第二行PATH变量指定了系统执行命令的路径

第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果该变量值为空,则表示不放松任务执行信息给用户

第四行的HOME变量指定了在执行命令或者脚本时使用的主目录

② 每个用户都会生成一个自己的crontab文件,位于/var/spool/cron目录下:



如上图所示,只有一个root用户的crontab文件

③ 设置用户能否使用crontab命令

/etc/cron.deny 表示不能使用crontab 命令的用户

/etc/cron.allow 表示能使用crontab的用户

④ 格式

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute   hour   day   month   week   command

其中:

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

特殊符号含义:

         “*”   代表任何时刻都接受的意思

         “/n”  n 代表数字,也就是每隔 n 单位间隔的意思,如: /5 * * * * command 代表的是每月每日每时每隔5分钟执行一次

         “-”   代表一段时间范围内,如:10 7-10 * * * command 代表的是每月每日的7点到10点的10分整时执行命令

         “,”   代表分隔字段的意思,如:15,30,45 * * * * command 代表的是每月每日每小时的15分,30分,45分的时候执行命令

这么说起来不好理解,来几个实例:

每1分钟执行一次 * * * * * command 
每小时的第15,30,45分钟执行15,30,45 * * * * command
7点到10点的第10,50分钟执行10,50 7-10 * * * command
每隔一天的7点到11点的第20和第40分钟执行20,40 7-11 */1 * * command
每周一的7点到11点的第25和第50分钟执行25,50 7-11 * * 1 command
每天的3:30执行30 3 * * * command
每月1、10、20日的3 : 30执行30 3 1,10,20 * * command
每周六、周日的3 : 30执行30 3 * * 6,7 command
每天9点到16点之间每隔15分钟执行/15 9-16 * * * command
  
⑤ crontab的语法

首先来看看man命令下的内容:

OPTIONS
-u     Append  the  name  of  the  user  whose crontab is to be tweaked.  If this option is not given,
crontab examines "your" crontab, i.e., the crontab of the person executing the  command.   Note
that  su(8)  can  confuse crontab and that if you are running inside of su(8) you should always
use the -u option for safety’s sake.  The first form of this command is used to install  a  new
crontab from some named file or standard input if the pseudo-filename "-" is given.

-l     The current crontab will be displayed on standard output.

-r     The current crontab will be removed.

-e     This  option  is  used  to edit the current crontab using the editor specified by the VISUAL or
EDITOR environment variables.  After you exit from the editor, the  modified  crontab  will  be
installed automatically.

-i     This  option  modifies  the  -r  option to prompt the user for a ’y/Y’ response before actually
removing the crontab.

-s     It will append the current SELinux security context string  as  an  MLS_LEVEL  setting  to  the
crontab  file  before  editing  /  replacement  occurs  - see the documentation of MLS_LEVEL in
crontab(5).


常用参数具体解释:

-u  :只有 root 才能进行这个任务,亦即帮其他使用者创建/移除 crontab 工作排程;

-e  :编辑 crontab 的工作内容

-l  :查阅 crontab 的工作内容

-r  :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑

⑥  > /dev/null 2>&1

>  :代表重定向到哪里,例如:echo "123" > /home/123.txt

1  :表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"

2  :表示stderr标准错误

&  :表示等同于的意思,2>&1,表示2的输出重定向等同于1

1> /dev/null : 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。

2>&1 :标准错误输出重定向(等同于)标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

3.常用性能分析命令

① vmstat ——虚拟内存统计

用法:

[root@219 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 18832 1701584 175852 2093784 0 0 0 0 0 0 0 0 100 0 0 其中:

r : 运行和等待 CPU 时间片的进程数。若该值大于系统 CPU 个数,则说明 CPU 不足

b : 表示等待资源的进程数

swpd : 切换到内存交换区的内存大小(单位 KB)

free: 空闲的物理内存的大小,我的机器内存总共2G,剩余92M。

buff: Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存

cache:直接用来记忆我们打开的文件,给文件做缓冲,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用

si:每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。

so:每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

bi:块设备每秒接收的块数量(读磁盘)(kb/s)

bo:块设备每秒发送的块数量(写磁盘)(kb/s)

in:每秒CPU的中断次数,包括时间中断

cs:每秒上下文切换次数。

us:用户进程消耗 CPU 时间百分比

sy:内核进程消耗 CPU 时间百分比,sy 的值较高时,则说明内核消耗的 CPU 资源很多

id:空闲 CPU 时间百分比

wt:IO 等待 CPU 时间百分比

② free ——内存使用状况

用法:[root@219 ~]# free
total used free shared buffers cached
Mem: 5989916 4287536 1702380 100 175852 2093824
-/+ buffers/cache: 2017860 3972056
Swap: 6143996 18832 6125164

[root@219 ~]# free -h
total used free shared buffers cached
Mem: 5.7G 4.1G 1.6G 100K 171M 2.0G
-/+ buffers/cache: 1.9G 3.8G
Swap: 5.9G 18M 5.8G

[root@219 ~]# free -m
total used free shared buffers cached
Mem: 5849 4187 1662 0 171 2044
-/+ buffers/cache: 1970 3878
Swap: 5999 18 5981
③ uptime ——统计当前系统的运行情况

用法:

[root@219 ~]# uptime
10:05:17 up 165 days, 22:16, 1 user, load average: 0.53, 0.69, 0.76load average: 系统 1分钟,5分钟,15分钟的平均负荷

④ netstat ——当前网络信息

其中:

-a (all)显示所有选项,默认不显示LISTEN相关

-t (tcp)仅显示tcp相关选项

-u (udp)仅显示udp相关选项

-n 拒绝显示别名,能显示数字的全部转化成数字

-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名

-r 显示路由信息,路由表

-e 显示扩展信息,例如uid等

-s 按各个协议进行统计

-c 每隔一个固定时间,执行该netstat命令。

提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

⑤ top 

用法:

[root@219 ~]# top
top - 10:18:59 up 165 days, 22:29, 1 user, load average: 0.59, 0.62, 0.67
Tasks: 450 total, 1 running, 449 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.4%us, 0.1%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 5989916k total, 4289596k used, 1700320k free, 175852k buffers
Swap: 6143996k total, 18832k used, 6125164k free, 2094744k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
29536 root 20 0 11.4g 320m 11m S 6.6 5.5 6451:29 java
32136 root 20 0 3137m 191m 13m S 3.0 3.3 2412:06 java
31080 root 20 0 3206m 208m 12m S 2.3 3.6 2416:43 java
27828 mysql 20 0 9864m 581m 6772 S 1.0 9.9 1966:49 mysqld
19204 root 20 0 15284 1620 996 R 0.7 0.0 0:00.08 top
106 root 20 0 0 0 0 S 0.3 0.0 6:39.82 events/7
1 root 20 0 19232 1044 892 S 0.0 0.0 0:02.85 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 2:02.50 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 1:58.95 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0
6 root RT 0 0 0 0 S 0.0 0.0 0:27.89 watchdog/0
7 root RT 0 0 0 0 S 0.0 0.0 1:45.87 migration/1
8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/1
9 root 20 0 0 0 0 S 0.0 0.0 1:35.73 ksoftirqd/1
10 root RT 0 0 0 0 S 0.0 0.0 0:22.26 watchdog/1
11 root RT 0 0 0 0 S 0.0 0.0 1:05.09 migration/2
12 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/2
13 root 20 0 0 0 0 S 0.0 0.0 1:07.47 ksoftirqd/2
14 root RT 0 0 0 0 S 0.0 0.0 0:23.38 watchdog/2
15 root RT 0 0 0 0 S 0.0 0.0 0:47.39 migration/3

其中:

第一行:

10:18:59 当前系统时间

165days, 22:29 系统已经运行了165天22小时29分钟(在这期间没有重启过)

1 users 当前有1个用户登录系统

load average: 0.59, 0.62, 0.67 ,后面的三个数分别是1分钟、5分钟、15分钟的负载情况。load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二行:Tasks 任务(进程)

系统现在共有450个进程,其中处于运行中的有1个,449个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

第三行:cpu状态

us 用户空间占用CPU的百分比

sy 内核空间占用CPU的百分比

ni 改变过优先级的进程占用CPU的百分比

id 空闲CPU百分比

wa IO等待占用CPU的百分比

hi 硬中断(Hardware IRQ)占用CPU的百分比

si 软中断(Software Interrupts)占用CPU的百分比

第四行:内存状态

total 物理内存总量

free 空闲内存总量

used 使用中的内存总量

buff/cache 缓存的内存量

第五行:swap交换分区

total 交换区总量

free 空闲交换区总量

used 使用的交换区总量

avail Mem 缓冲的交换区总量

第六行:各进程(任务)的状态监控

PID 进程id

USER 进程所有者

PR 进程优先级

NI nice值。负值表示高优先级,正值表示低优先级

VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR
8fbd
共享内存大小,单位kb

S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU 上次更新到现在的CPU时间占用百分比

%MEM 进程使用的物理内存百分比

TIME+ 进程使用的CPU时间总计,单位1/100秒

COMMAND 进程名称(命令名/命令行)

参考文件:http://www.cnblogs.com/chenshishuo/p/5152068.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: