常用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
echo content > file_name		将content覆盖file_name里面的内容
echo content >> file_name 将content追加到file_name里面的
echo -e "asd\nadf" 开启转义
ls -l `locate crontab` 反单引号里面的命令会被优先执行,locate命令会列出所有的相关文件名
ifconfig eth0 up 开启网卡
ifconfig eth0 down 关闭网卡
nl file_name 带行号输出
head -n2 file_name 输出前两行
whoami 和 id -un的作用一样的 输出当前用户名
export MYENV=7 定义环境变量并赋值export -p 输出全部环境变狼
source 命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录
ll -d file_name 对某一个文件的属性的查看
rpm -ivh your-package.rpm 安装rpm安装包
chown root:mail log2012.log 改变文件的拥有着,root为拥有者,mail为群组
nc netcat, 很强大,传输信息
https://blog.csdn.net/zhangxiao93/article/details/52705642

grep文本搜索工具

1
2
3
4
5
6
7
8
9

-n 输出符合要求的行及其行号
-v 打印不符合要求的行
-i 忽略大小写
grep -v 'asdf' 显示不包含asdf所在的所有行
grep -v '[0-9]' /etc/inittab 只要有一个字符就能匹配到
grep -v '^#' /etc/sos.conf 过滤掉以#为开头的行
grep -v '^$' 过滤掉空行
grep '0\{2\}' /etc/passwd 匹配0连续出现两次的行

sed 在线编辑器

1
2
3
4
5
6
7
8
9
10
11
12
sed -i   						在文件中直接编辑
sed '2,5d' 删除2-5行
sed 's/[0-9]//g' test.txt 删除文档中所有的数字
sed '2,$d' 删除2到最后一行
sed -n '2a asdf' 在第二行之后加上asdf字段
sed '2i asdf' 在第二行之前加上adsf字段
sed -n '2,5c asdf' 将2-5行替代成asdfg
sed -n '2,5p' 列出2-5行内容
sed -n ‘/root/p’ test.txt 搜索有关root关键字的行,输出匹配行
sed '/root/d' 找到包含root行并删除
sed -n ‘/in$/p’ 输出以in结尾的行
sed 's/要被取代的字符串/新的字符串/g'

awk文本分析工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
默认以空格为分割符,将每行切片
-F 根据指定分割符
awk -F ':' 'print $1' 指定以 “:” 为分隔符,然后输出第一列
awk '/00/' test.txt 匹配00的行
awk -F ':' '$1 ~/00/' test.txt 让第一段去匹配,~是匹配的意思
awk -F ':' '/root/ {print $1,$3} /test/ {print $1,$3}' test.txt 多次匹配 ,匹配完root,在匹配test
awk -F ':' '$1=="0"' /etc/psswd 进行逻辑判断

awk -F ':' '{OFS="#"} {if ($3>1000) {print $1,$2,$3}}' /etc/passwd
asdfasf#asdf#12312 //OFS在输出段中间添加东西
awk -F ':' '{print NF}' /etc/passwd //输出有几段
awk -F ':' '{print $NF}' /etc/passwd //输出最后一段

head -n2 /etc/passwd | wak -F ':' '{$7 = $3 + $4; print $0}' 能进行计算,并打印

sync用于强制被改变的内容立刻写入磁盘,更新超块信息

在Linux/Unix系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候再写入磁盘,以提高系统的运行效率。sync命令则可用来强制将内存缓冲区中的数据立即写入磁盘中。用户通常不需执行sync命令,系统会自动执行update或bdflush操作,将缓冲区的数据写 入磁盘。只有在update或bdflush无法执行或用户需要非正常关机时,才需手动执行sync命令。如果不去手动的输入sync命令来真正的去写磁盘,linux系统也会周期性的去sync数据。

iptables是包过滤管理工具,建立在netfilter架构基础上的

作用:用于防火墙和透明代理

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息

chkconfig在没有参数运行时,显示用法。加上服务名,那就检查这个服务是否在当前运行级启动,返回true或者false。

后面再加上on,off,reset,那么chkconfig就会改变指定服务的启动信息

systemd 服务管理

1
2
3
4
5
6
7
systemctl enable crond.service		//让某个服务开机启动
systemctl disable crond.service //不让某个服务开机启动
systemctl status crond.service //查看服务状态
systemctl start crond.service //让某个服务启动
systemctl stop crond.service //让某个服务停止
systemctl restart crond.service //让某个服务重启
systemctl is-enabled crond //让某个服务是否开机启动

chmod用来变更文件或者目录的权限

1
2
3
4
5
6
7
r:								读
w: 写
x: 执行
chmod u+x,g+w file_name   //为文件file_name设置自己可以执行,组员可以写入的权限
chmod u=rwx,g=rw,o=r file_name
chmod 764 file_name
chmod a+x file_name   //对文件file_name的u,g,o都设置可执行属性

groupadd用于添加组账号

1
2
groupadd admin				添加的新组admin
groupadd -g GID admin 指定GID

useradd添加用户账号

1
useradd -u 600 -g 600 admin			-u UID	指定新用户的UID	  -g group	  指定新用户主组

crontab

1
2
3
4
5
* */1 * * * /etc/init.d/smb restart	每一小时重启smb
min hour day month week

在/var/spool/cron中的以用户名为文件中加入定时任务,例如
*/3 * * * * python /export/Domains/smartQuery.wms5-c.jd.local/server1/conf/smartquery_detection_restart.py

rsync

1
2
3
rsync----->remote sync(远程同步) 	可用yum install -y rsync 安装
不仅能同步远程数据(scp),也能同步本地数据(cp)
rsync -avL test/ 192.168.188.129:/tmp/test2/ 将本地test目录下的文件都复制到192.168.188.129:/tmp/test2/目录下

rz和sz

1
2
3
4
上传(rz)和下载(sz)文件
上传,直接键入rz,回车,即可上传文件

下载 , sz filename 即可下载

tar

1
2
3
4
上传和下载前都应打包

打包:tar cvf FileName.tar DirName 压缩:tar zcvf FileName.tar.gz DirName
解包:tar xvf FileName.tar 解压:tar zxvf FileName.tar.gz

xargs和exec

1
2
3
4
5
对批量文件进行操作时可以使用这个
xargs
ls *.txt | xargs -n1 -i{} mv {} {}_bak 对当前目录下的文件进行重命名
exec
和find经常使用 find ./*_bak -exec mv {} {}_bak \; 不加\ , shell会把分号作为命令的结尾

vmstat,内存,虚拟内存,cpu使用

1
2
3
4
5
6
7
8
9
10
11
12
13
si,so,bi,bo得经常参考
[root@VM_0_14_centos centos]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 117768 173372 1286612 0 0 1 24 30 34 2 2 96 0 0
r:(run) 运行或等待cpu时间片的进程数
b:(block) 表示等待资源的进程数
wa:表示I/O等待所占cpu的时间百分比
bi,bo:从块设备读取写入数据的量
si,so:交换区写入内存或者内存写入交换区

vmstat 1 5 每隔一秒输出状态,共输出5次
vmstat 1 每隔一秒输出状态, 一直输出

top

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
top 动态监控进程所占的系统资源,每隔三秒变一次,会把占用系统资源(cpu,内存,磁盘I/O)的进程放在最前面
top - 10:20:58 up 10 days, 18:19, 1 user, load average: 0.02, 0.04, 0.05
Tasks: 82 total, 1 running, 81 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.3 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1883844 total, 106492 free, 304888 used, 1472464 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 1366828 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 190928 3692 2408 S 0.0 0.2 1:13.45 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.06 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:05.35 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh

RES:进程所占内存大小
%MEM:使用内存的百分比

top -bn1 非动态的输出

在top视图中,按数字“1”,可监控每个逻辑CPU的状况.
默认进入top时,各进程是按照CPU的占用量来排序的. 通过”shift + >”或”shift + <”可以向右或左改变排序列

free 查看内存使用状况

1
2
3
4
5
     total        used        free      shared   buff/cache   available
Mem: 1883844 304080 159728 332 1420036 1367676

buffer和cache都是一部分内存。数据经过CPU计算,即将要写入磁盘,这是用的内存是buffer,
需要把数据从磁盘中昂读出来,临时先放在内存中,这个内存就是cache

ps 查看系统进程

1
2
3
4
5
6
7
8
9
10
11
12
13

[root@VM_0_14_centos centos]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 190928 3712 ? Ss Jul21 1:13 /usr/lib/systemd/systemd --system --deserialize 22
root 2 0.0 0.0 0 0 ? S Jul21 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Jul21 0:05 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Jul21 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S Jul21 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S Jul21 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R Jul21 0:47 [rcu_sched]
root 10 0.0 0.0 0 0 ? S Jul21 0:04 [watchdog/0]

ps aux | grep xxx //经常使用

netstat 查看网络状况

1
2
3
4
5
6
7
8
netstat -anlp		打印当前系统启动哪些端口
-a 显示所有端口
-n 拒绝显示别名,能显示数字就显示数字
-l 列出仅监听的端口
-p 显示建立连接的程序名

-t 仅显示tcp相关选项
-u 仅显示udp相关选项

sort 排序

1
2
3
4
5
-t		后面跟分割字符
-n 使用纯数字排序
-r 表示反向排序
-u 去重复
-kn1,n2 表示由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序

wc 统计文档的行数,词数和字符数

1
2
3
-l 		行数
-w 统计词数
-m 统计字符数

uniq 用来删除重复的行

1
2
3
4
5
6
7
8
9
10
使用uniq前必须先给文件排序,不然不管用
-c 统计重复的行数
sort test.txt | uniq
11
22
33
sort test.txt | uniq -c
2 11
1 22
1 33
1
2
3
4
5
6
如果一行中想输入多个命令,可在多个命令中加入';'   , 如果把一条命令放在后台执行,则需要加上&,适用于运行时间较长的情况

&&,|| 也能放在命令中间
; command1执行成功与否,command2都会执行
&& command1执行成功,command2才会执行,
|| command1执行成功,command2不会执行,command1执行不成功,command2才会执行
1
2
3
重定向符号>,>>,2>,2>>
>取代,>>追加
2>,2>> 想执行一个命令报错时,想重定向到文本

df 查看磁盘的容量

1
2
3
4
-i		查看inodes的使用状况
-h 使用合适的单位显示 ,GB (一般用这个)
-k 以KB单位显示
-m 以MB单位显示

iostat 对系统的磁盘操作活动进行监视,查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息。

du 查看某个目录或文件所占空间大小

1
2
3
-s		列出总和 --summarize 
-h 系统自动调节单位--human-readable
一般使用du -sh *

fdisk linux下硬盘分区工具,只能划分小于2TB的分区

mount 挂载和卸载磁盘

shell

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
注意事项:
[] 和 test是一样的
(()) 和let 功能基本相同,变量名前无需加$

数值比较
-eq 等于为真
-ne 不等于为真
-gt 大于为真
-ge 大于等于为真
-lt 小于为真
-le 小于等于为真

字符串比较
= 等于为真
!= 不等于为真
-z 字符串 字符串长度为零则为真
-n 字符串 字符串的长度不为零则为真

文件运算符
-e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ]
-d filename 如果 filename 为目录,则为真 [ -d /tmp/mydir ]
-f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ]
-L filename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ]
-r filename 如果 filename 可读,则为真 [ -r /var/log/syslog ]
-w filename 如果 filename 可写,则为真 [ -w /var/mytmp.txt ]
-x filename 如果 filename 可执行,则为真 [ -L /usr/bin/grep ]
filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ]
filename1 -ot filename2 如果 filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]


选择语句格式
a=10
b=20
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi

循环语句
for var in 1 2 3 4 5
do
echo $var
done

for var in 'asdf' 'gsh'
do
echo $var
done

int=5 #赋值符号左右不能留有空格
while(( int < 10 )) #在(())里面可以直接使用比较符号
do
echo $int
let "int++"
done


作用:将<<EOF EOF 里面的内容原模原样的输入到nscd.conf文件中
cat > /etc/nscd.conf <<EOF
logfile /export/Logs/nscd/nscd.log
threads 10
max-threads 30
server-user nscd
debug-level 0

enable-cache hosts yes
positive-time-to-live hosts 60
negative-time-to-live hosts 20
suggested-size hosts 211
check-files hosts yes
shared hosts yes
EOF