Linux常用命令

正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配
grep、awk、sed等命令可以支持正则表达式

通配符用来匹配符合条件的文件名,通配符是完全匹配
ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的额通配符来进行匹配

GREP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#Global Rugular Expression Print 全局正则表达式版本,强大的文本搜索工具,使用正则表达式搜索文本,并把匹配的行打印出来
grep -v
grep ''
grep -r '\[0\]:\[pay\]' /www/logs/mabplaygameapi.gm99api.com/gameapi_ring/2017/ | head
ps -ef|grep -w
grep -c 统计数据
grep "a*" file.txt匹配0个或者多个a
grep "aa*" file.txt 匹配1个或者多个a
grep -c '\[0\]:\[pay\]' 20180118.log //统计日志中发货的记录

grep -oP 零宽断言

先行断言 也叫零宽度正预测先行断言(?=exp) -- 表示匹配表达式前面的位置
(?=})
匹配以}结尾的所有前面的字符
后发断言 也叫零宽度正回顾后发断言(?<=exp) -- 表示匹配表达式后面的位置
(?<={)
匹配{后面所有的字符
负向零宽后发断言(?<!exp)

PS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#进程查看命令,显示瞬间进程(process)的动态
ps -A 列出所有进程 等价于ps -e
ps -a 显示一个终端的所有进程,除了会话引线
ps -N 忽略选择
ps -d 显示所有进程,但省略所有会话引线
ps -x 显示没有控制终端的进程,同事显示各个命令的具体路径
ps -p pid 进程使用cpu的时间
ps -u uid or username选择有效的用户id或者用户名
ps -g gid or groupname 显示组的所有进程
ps U username 显示该用户下的所有进程,且显示各个命令的详细路径
ps -f 全部列出,通常和其他选项连用,如 ps -fa or ps -fx
ps -l 长格式
ps -j 作业格式
ps -o 用户自定义合适
ps v 以虚拟存储器格式显示
ps f 用你ASCII字符显示树状结构,表达程序间的相互关系
ps s 采用程序信号的格式显示承诺需状况
ps S 列出程序时,包括已中断的子程序资料
ps -w 显示加宽,可以显示较多的咨询
ps -au 显示较为详细的咨询
ps -aux 显示所有包含其他使用者的进程
ps -ef
ps -m 显示所有线程
ps -H 显示进程的层次,和其他命令何用 ps -Ha
ps h 不显示第一行
ps -ef | grep 'firefox' | grep -v grep | awk '{print "kill -9 " $2}' | sh 批量杀掉某些进程



USER 进程的属主;
PID 进程的ID;
PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
NI 进程的NICE值,数值大,表示较少占用CPU时间;
VSZ 进程虚拟大小;
RSS 驻留中页的数量;
TTY 终端ID
STAT 进程状态(有以下几种)
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换(从内核2.6开始无效);
X 死掉的进程(从来没见过);
Z 僵尸进程;
'process_users_info' |grep -v 'grep'

grep -oP "{(?<={)[^{}]*(?=})}" 20180108.log //获取json字符串

AWK

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或者多个文件或者其他命令的输出,支持用户自定义函数和动态正则表达式等。awk有很多内建的功能,比如数组、函数等

常用命令
-F fs 指定输入分隔符,fs可以是字符串或者正则表达式,如-F:

-v var=value 赋值一个用户定义变量,将外部变量传递给awk

-f scripfile 从脚本文件中读取awk命令

-m[fr] val 对val值设置内在限制

-mf 选项限制分配给val的最大块数目;
-mr选项限制记录的最大数目
cat host.php.log | grep register | awk -F "," '{print $6}' | awk -F ":" '{sum +=$2} END {print sum/NR}'

awk -F 'orderID"' '{print $2}' 20180108.log | awk -F '"' ' {if ($2>0) print $2}'//查找日志中的订单号

KILL

1
kill

sar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
System ActivityReporter系统活动情况报告
sar -A 所有报告的总和
sar -b 显示I/O和传递速率的统计信息
sar -B 显示换页状态
sar -d 输出每一块磁盘的使用信息
sar -e:设置显示报告的结束时间
sar -f:从制定的文件读取报告
sar -i:设置状态信息刷新的间隔时间
sar -P:报告每个CPU的状态
sar -R:显示内存状态
sar –u:输出cpu使用情况和统计信息
sar –v:显示索引节点、文件和其他内核表的状态
sar -w:显示交换分区的状态
sar -x:显示给定进程的装
sar -r:报告内存利用率的统计信息

iostat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
I/O statitics的缩写,iostat工具将对系统的磁盘操作活动进行监视,它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况,同vmstat一样

-c 显示CPU使用情况
-d 显示磁盘使用情况
-k 以 KB 为单位显示
-m 以 M 为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS 使用情况
-p[磁盘] 显示磁盘和分区的情况
-t 显示终端和CPU的信息
-x 显示详细信息
-V 显示版本信息
```
### WC

wc
用来计算数字,利用wc指令我们可以计算文件的Byte数、字数或是列数
wc -l 只显示列数line
wc -w 只显示行数words
wc -c 只显示Bytes数

1
### xargs

xargs 给其他命令传递参数的一个过滤器

#使用xargs执行mv 将 . 下后缀为.log的文件移动到test4文件夹下
find . -name “*.log” | xargs -i mv {} test4

#用grep命令在所有的普通文件中搜索hostname这个词
find . -type f -print | xargs grep “hostname”

1
### chown

给用户组授权某个文件的权限
chown -R www:www floder

1
2
3
4
5

### find
find . -name abc
find . -name abc?
fine . -name "abc*"

[root@localhost ~]# date +%Y/%m/%d-%H:%M:%S
2018/03/14-21:04:56
[root@localhost ~]# date
2018年 03月 14日 星期三 21:04:58 CST
[root@localhost ~]#
[root@localhost ~]# cal
三月 2018
日 一 二 三 四 五 六
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

[root@localhost ~]# cal 2018
2018

一月                   二月                   三月

日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 5 6 1 2 3 1 2 3
7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10
14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17
21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24
28 29 30 31 25 26 27 28 25 26 27 28 29 30 31

[root@localhost ~]# cal 10 2018
十月 2018
日 一 二 三 四 五 六
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

[root@localhost ~]# echo $LANG
zh_CN.UTF-8
[root@localhost ~]# bc 计算器

1
2

### init

init 0 关机
init 3 纯命令行
init 5 图形界面
init 6 重启

1
2

### 用户和用户组

root@localhost ~]# ls -al
总用量 2560
dr-xr-x—. 7 root root 4096 3月 14 21:20 .
dr-xr-xr-x. 22 root root 4096 1月 8 10:41 ..
-rw——-. 1 root root 3334 11月 11 17:52 anaconda-ks.cfg
-rw——- 1 root root 12288 3月 6 13:24 .anaconda-ks.cfg.swp
-rw——-. 1 root root 14159 3月 14 21:20 .bash_history
-rw-r–r–. 1 root root 18 5月 20 2009 .bash_logout
-rw-r–r–. 1 root root 176 5月 20 2009 .bash_profile
[ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ]
[ 权 限][连接数][所有者][用户组][文件容量][修改日期][文件名]
连接数:有多少文件名连接到此节点
文件容量:默认单位为B

1
2


  • rwx rwx —
    [1] [2] [3] [4]
    文件类型 所有者权限 所有用户组权限 其他人对此人间权限
    r 读 : 4
    w 写 : 2
    x 执行 : 1
    • 无权限
      1
      2

      ### 改变文件属性与权限

chgrp 改变文件所属用户组 change group
要被改变的组名必须要在/etc/group文件内存在才可以
chgrp [group] [file]
chown 改变文件所有者 change owner
chown [user] [file]
chown [user:group] [file] 同时修改用户组和所有者
chown [.group] [file] 单独修改用户组
chmod 改变文件权限 change

Linux文件的基本权限有9个分别是 owner、group、others 三种身份各有自己的read、write、execute权限

owner rwx 4+2+1 7
group rwx 4+2+1 7
others — 0+0+0 0

chmod -R 777 [file] 所有都是最高权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

#### Linux目录配置标准FHS

| 可分享的 | 不可分享的
---|---|---
不变的 |/usr(软件放置处)| /etc(配置文件)
|/opt(第三方软件)|/boot(开机与内核文件)
---|---|---
可变动的| /var/mail(用户邮件信箱)| /var/run(程序相关)
|/var/spool/news(新闻组)|/var/lock(程序相关)


### 系统定时任务
__crontab命令:__

crontab -e创建

*****命令(分时日月周)

__at命令:__

一次执行

#at 2:00 tomorrow

at>/Home/Json/do_job
at>Crtl+d
### vim/vi 编辑器
一般模式:删除、复制、粘贴

切换编辑模式:i,I,o,O,a,A,r,R

切换命令模式:,/,?

移动光标:ctrl + f,crtl + b,0 home,$ end,G,gg,N +enter

查找替换:/word,?word,

:n1,n2s/word1/word2/g

删除复制粘贴:x,X、dd、ndd、yy、nyy、p、P、crtl+r,.

保存退出:wq

__配置:__

setnu,setnonu



### shell

赋予权限,直接执行

chmod + x test.sh

source 命令

编写基础:

#!/bin/sh

#指定脚本解释器

#编写具体功能

1
2
3
4
5
6
7
8
9

##### 查看Linux版本
`cat /proc/version`

`uname -a`

`uname -r`

- 列出所有版本信息,

[root@localhost ~]# lsb_release -a

LSB Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch

Distributor ID: CentOS

Description: CentOS release 5.5 (Final)

Release: 5.5

Codename: Final

注:这个命令适用于所有的linux,包括RedHat、SUSE、Debian等发行版。

1
2

2) 执行cat

/etc/issue,例如如下:

[root@localhost ~]# cat /etc/issue

CentOS release 5.5 (Final)

Kernel r on an m

1
2

3) 执行cat

/etc/redhat-release ,例如如下:

[root@localhost ~]# cat /etc/redhat-release

CentOS release 5.5 (Final)

1
2

- 查看系统是64位还是32位:

1.
getconf LONG_BIT or getconf WORD_BIT

[root@localhost ~]# getconf LONG_BIT

64

1
2


2、file /bin/ls

[root@localhost ~]# file /bin/ls

/bin/ls: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

1
2

`

3、lsb_release -a

[root@localhost ~]# lsb_release -a

LSB Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch

Distributor ID: CentOS

Description: CentOS release 5.5 (Final)

Release: 5.5

Codename: Final

4、或者是使用查看文件的方法。

vim /ect/issue