我是靠谱客的博主 漂亮煎蛋,这篇文章主要介绍linux 的性能监控一、linux 的性能监控二、linux基础shell 编程,现在分享给大家,希望可以做个参考。

一、linux 的性能监控

  • 对进程的监控

    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    ps -aux ps 参数: -e:显示所有进程和环境变量 -f:全格式显示 -h:不显示标题 -l:长格式显示 -w:宽格式输出 -a:显示终端上所有进程,包括其他的用户进程 -r:只显示正在运行的进程 -x:显示没有控制终端的进程 -u:以用户为主的格式来显示进程 kill kill 参数 pid: 参数: -2:相当于ctrl + c -9: 强制终止 -15:正常终止
  • 对内存的监控

    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    free free 参数: -b:以字节为单位显示内存使用情况 -k:以KB为单位显示内存的使用情况 -m:以MB为单位显示内存的使用情况 -g:以GB为单位显示内存的使用情况 -s:每个多少秒显示内存的使用情况 -t:显示内存和swap的总和。 top 参数: ---用于动态监控系统资源、包括内存,交换分区和cpu的使用率,实时更新的内容 -d:指定更新时间 -q:没有任何延迟的更新 -c:显示进程的完整路径 -S:累积模式,将已完成或者已消失的子进程的cpu时间累积 -s:安全模式,去除交换命令所带来的潜在危险 -i:不显示任何的闲置(ldle)或无用的(Zombie)的进程 -n:显示更新的次数,完成后将会退出
  • 对硬件的监控

    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # 监控内存 sar -r 间隔时间 采样次数 # 监控磁盘 sar -d 间隔时间 采样次数 # 监控网络 sar -n 统计信息 间隔时间 采样次数 iostat 监控cpu和磁盘 # 监控cpu: iostat -c 时间间隔 采样次数 # 监控硬盘: iostat -d 设备名 时间间隔 采样次数 # 不加参数表示同时监控cpu和磁盘 iostat -d /dev/sda 可以单独监控磁盘
  • linux的性能监控工具

  • nmon

    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    安装nmon后 在nmon所在的目录执行如下命令: ./nmon -ft -s 2 -c 100 -s: 时间间隔 -c:循环次数 执行时生成一个以.nmon的文件 把文件下载到windows上 用 nmon analyser v66.xlsm 文件来进行解析,生成excel文件。就能看到分析的数据

二、linux基础

(一) linux的目录结构

非root用户若要操作一些权限,要在命令行的前加上sudo

若sudo用不了,切换root用户输入visodu 编辑 找到如下内容

在root ALL=(ALL) ALL 下添加一行 : 你的用户名 ALL=(ALL) ALL

如:frank ALL=(ALL) ALL

1、/dev 设备管理 cpu, 硬盘,内存等等

2、/media 管理dvd, u盘等

3、/bin 存放的时指令,二进制文件

4、/etc 系统配置目录

5、/home 用户目录

6、/lib 动态链接库目录

7、/mnt 挂载目录

8、/opt 软件安装目录

9、/proc 内核目录(千万别去动)

10、/root root的用户目录

11、/sbin 超级用户才能用的指令

12、/selinux 安全目录

13、/usr 用户程序目录

14、/sys 系统目录(千万别去动)

15、/tmp 临时文件目录

16、/var 存放日志文件等

17、 /boot 引导目录(千万别去动)

18、/srv 存放一些服务启动后需要提取的数据目录(千万别去动)

(二)vi/vim 编辑器

三种常见模式:

一、正常模式

yy 复制当前的一行,nyy 复制当前向下n行

p 粘贴

dd 删除当前行,ndd 删除当前以下n行

yw:复制光标所在位置到单词末尾之间的字符
nyw:复制光标所在位置之后的n个单词
p:将复制内容粘贴到光标所在的位置

G 进入最末行,gg竟然最首行

n + shift + g 进入指定的n行

u 撤销刚刚输入的内容

h:光标左移一个字符
l:光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n:光标下移一行
Enter:光标下移一行

w或W:光标右移一个字至字首
b或B:光标左移一个字至字首
e或E:光标右移一个字至字尾
(:光标移至句首
):光标移至句尾
{:光标移至段落开头
}:光标移至段落结尾

nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
H:光标移至屏幕顶行
M:光标移至屏幕中间行
L:光标移至屏幕最后行
0或者^:(注意是数字零)光标移至当前行首
$:光标移至当前行尾

Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nzz:

二、插入模式/编辑模式

a / i / o /r

i:在光标前
I:在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行

r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替

三、命令行模式

/关键字 搜索关键字

:set nu 设置行号

:set nonu 取消行号

????/vivian/sky/ 替换当前行第一个 vivian 为 sky????/vivian/sky/g 替换当前行所有 vivian 为 sky:n,s/vivian/sky/替换第n行开始到最后一行中每一行的第一个vivian为sky :n,s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
:n1,n2s/vivian/sky/g 替换n1行至n2行的vivian替换为sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
:g/p1/s//p2/g:将文件中所有的p1替换为p2

/str:从光标位置开始往文件末尾查找str,按n查找下一个,按N返回上一个
?str:从光标位置开始往文件开头查找str,按n查找下一个,按N返回上一个

(二)开关机重启命令

关机/重启:

复制代码
1
2
3
4
5
6
7
8
shutdown shutdown -h now # 立即关机 shutdown -h 3 # 三分钟后关机 shutdown -r now # 立刻重启 halt # 关机 reboot # 重启 sync # 把内存的数据同步到磁盘

注销

复制代码
1
2
logout

切换用户

复制代码
1
2
su 用户名

(三)、用户管理命令

添加用户

复制代码
1
2
3
useradd 用户名 # 创建号的用户存在/etc/passwd 文本中

给用户设定密码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
psswd -[参数] 用户名 -c # 加上文字备注 -d # 指定用户登录时的开始目录 -e # 指定账户的有效期 -f # 指定在密码过期后多少天关闭该账户 -g # 指定用户所属的群组 -G # 指定用户所属的附加群组 -m # 自动建立用户的登录目录 -M # 不要自动建立用户的登入目录 -n # 取消建立以用户名称为名的群组 -r # 建立系统帐号 -S # 指定用户登入后所使用的shell -u # 指定用户ID

查看用户id

复制代码
1
2
id 用户名

删除用户账号

复制代码
1
2
userdel [-r] 用户名

建立用户组

复制代码
1
2
3
4
5
6
groupadd [-g gid] [-o]] [-r] [-f] groupname -g #gid指定组ID号 -o #允许创建ID重复的用户组 -r #创建系统用户组,低于499系统账号 # 创建的用户组在 /etc/group 中

更改群组识别码或名称

复制代码
1
2
3
4
5
6
groupmod [-g <群组识别码> <-o>][-n <新群组名称>][群组名称] -g #<群组识别码>  设置欲使用的群组识别码 -o #重复使用群组识别码 -n #<新群组名称>  设置欲使用的群组名称

删除群组

复制代码
1
2
groupdel [群组名称]

(四)目录管理

创建一个目录

复制代码
1
2
3
mkdir -[参数] 目录名 -p #如果父节点不存在可以使用-p参数创建

重命名目录

复制代码
1
2
mv 旧目录/文件名 新目录/文件名

目录路径的切换

复制代码
1
2
cd

(五)文本搜索命令

grep

复制代码
1
2
3
4
5
6
7
8
9
grep -[参数] 搜索内容 文件名 -c:只输出匹配行的计数。 -i:不区分大 小写。 -h:查询多文件时不显示文件名。 -l:查询多文件时只输出包含匹配字符的文件名。 -n:显示匹配行及 行号。 -s:不显示不存在或无匹配文本的错误信息。 -v:显示不包含匹配文本的所有行

sort 排序命令

复制代码
1
2
3
sort 文件名 # 显示出来内容排序

(六)统计及比较文本命令

wc 统计命令

复制代码
1
2
3
4
5
6
7
8
wc -[参数] 文件名称 -c, --bytes:统计字节数 -m, --chars:统计字符数 -l, --lines:统计行数 -L, --max-line-length:打印最长行的长度 -w, --words:统计字数

cp 拷贝命令

复制代码
1
2
3
4
5
6
cp [-参数] 源文件 目的文件 -d:在进行 copy 的时候,如果是 copy 到 link 文件,若不加任何参数,则预设情況中会将 link 到的原始文件copy 到目的地,若加 -d 时,则 link 文件可原封不动的将 link 这个捷径拷贝到目的地 -r:可以进行目录的copy -s:做成链接文件,而不 copy 之意!与 ln 指令相同功能! -u, --update:如果来源文件比较新,或者是沒有目的文件,那么才会进行 copy 的动作

mv 剪切/移动命令

复制代码
1
2
3
mv [-参数] 来源文件 目的文件 -u :同样的,为 update 的简写,当来源文件比目的文件还新的时候才会有效

rm 文件删除命令

复制代码
1
2
3
4
rm 文件名 rm –rf 强制删除目录或文件,如有目录嵌套,则不提示 rm –i 删除文件或目录时给予确认提示

find 文件查找命令

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
find [-参数] '*.文件后缀' -name:按文件名查找 -user:按文件属主查找 -group:按文件所属组查找 -nouser:查找没有属主的文件 -nogroup:查找没有所属组的文件 -type x:按文件类型查找,d表示目录,f表示普通文件 -amin n 查找n分钟以前被访问过的所有文件 -atime n 查找n天以前被访问过的所有文件 -cmin n 查找n分钟以前文件状态被修改过的所有文件 -ctime n 查找n天以前文件状态被修改过的所有文件 -mmin n 查找n分钟以前文件内容被修改过的所有文件 -mtime n 查找n天以前文件内容被修改过的所有文件 -exec,将其前面命令的输出做为其后面命令的操作对象 #-exec 命令 { } ;

(七)文件管理命令

cat 查看命令

复制代码
1
2
3
4
5
cat [ -参数 ] 文件名1 【文件名2。。。】 -n 对所有输出行进行编号 -b 与-n相似,但空白行不编号 # 可以查看多个文件

head 查看命令

复制代码
1
2
3
head [参数] 文件名 -n 查看前n行

more 查看命令

复制代码
1
2
3
4
5
6
7
8
9
10
11
more [-dlfpcsu] [-num] [+/ pattern] [+ linenum] [file ...] 参数说明: -num:每页显示多少行内容 +num:从多少行开始显示 more +2 -3 test.txt 从第2行开始,每页显示3行数据阅读test.txt文件 空格键:显示下一页内容 回车键:显示下一行内容 b键:显示上一页内容

tail 查看命令

复制代码
1
2
3
4
tail [参数] 文件名 -n 查看最后n行 -f 动态查看

diff 比较两个文件

复制代码
1
2
3
4
5
6
7
diff [option] file1 file2 -a 将所有文件当做文本文件处理 -b 忽略空格造成的不同 -B 忽略空行造成的不同 -i 忽略大小写 -c 使用纲要输出格式

cmp 比较两个文件

复制代码
1
2
3
4
5
6
7
8
cmp [参数] file1 file2 -c 除了标明差异处的八进制字码之外,一并显示该字符 所对应字符 -i 指定一个数目,比较时直接跳过对应的字符进行后续 比较 -l 标示出所有不一样的地方,并显示对应的八进制码 #当相互比较的两个文件完全一样时,则该指令不会显示任何信息。 #若发现有所差异,预设会标示出第一个不同之处的字符和行数编号

comm 比较两个有序的文件内容

复制代码
1
2
3
4
5
6
7
8
9
comm [参数] file1 file2 -1 不显示只出现在第一个文件中的行 -2 不显示只出现在第二个文件中的行 -3 不显示同时出现在两个文件中的行 -12 显示两个文件中同时出现的行 -13 显示只出现在第二个文件中的行 -23 显示只出现在第一个文件中的行

file 识别文件类型

复制代码
1
2
3
4
file [参数] 文件名 -b 结果中不输出文件名称 -f 列举文件中包含的各个文件名的文件类型

ls 查看文件列表

复制代码
1
2
3
ls -l #ls –l查看文件详细信息

ln 生成连接文件

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ln file1 file2 # file2是file1的链接文件 #硬链接的意思是给源文件另外设置一个名称,删除了源文件,#还可以通过另外一个名称访问 #软链接的意思是产生一个特殊的指向源文件位置的文件,删除#了源文件,链接文件就不可用 #ln命令默认创建的是硬链接, #如果要创建软连接,使用参数-s #软链接与硬链接的区别: #-软链接可以跨文件系统,硬链接不可以 #-软链接可以对目录进行链接,硬链接不可以 #-软链接可以对一个不存在的文件名建立链接 #常用参数: -b 覆盖以前建立的链接 -d 允许超级用户创建目录的硬链接 -f 强制执行 -s 创建软链接 -i 交互模式,文件存在时提示用户是否覆盖

whereis 搜索程序或指令的名称

复制代码
1
2
3
4
5
6
7
8
9
10
whereis [参数] 程序名 -b 定位可执行文件。 -m 定位帮助文件。 -s 定位源代码文件。 -u 搜索默认路径下除可执行文件、源代码文件、 帮助文件以外的其它文件。 -B 指定搜索可执行文件的路径。 -M 指定搜索帮助文件的路径。 -S 指定搜索源代码文件的路径

which 查找文件

复制代码
1
2
which 文件名

(八) 权限管理

chmod 修改文件权限

复制代码
1
2
3
4
5
6
7
chmod [-R] 权限 文件名 -R 连目录的权限一起修改(递归修改) +:添加权限(w、r、x) -:删除权限(w、r、x) u:文件拥有者 g:文件所属组 o:其他人 a:所 有人

修改文件所属用户组

复制代码
1
2
chgrp [-R] 组名 文件名

修改文件拥有者

复制代码
1
2
chown [-R] 用户名 文件名

(九)系统命令

alias 给命令命别名

复制代码
1
2
3
4
5
#如: alias lsl = 'ls -l' # 撤销别名 unalias lsl

echo 输出命令

export 设置环境变量

复制代码
1
2
3
4
5
6
7
# 临时配置 export var_name=value unset var_name 删除某个系统环境变量 # /etc/profile 文件 可以配置永久的环境变量 source 1、加载环境变量 2、执行sql脚本(在linux)

systemctl 服务启动命令

复制代码
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
systemctl start 服务名 #启动服务 systemctl stop 服务名 #停止服务 systemctl restart 服务名 #重启服务 ls -l /etc/init.d/ #查看系统有那些可用的服务 # 查看或修改运行级别 vim /etc/inittab # 常用3和5 id:3:initdefault 0 系统停机状态,默认运行级别的系统程序不能设置为0 否则 无法 启动 1 单用户工作状态,root权限,用于维护,禁止远程登录 2 多用户状态(没有NFS), 不支持网络 3 完全多用户状态(有NFS),登录后进入控制台命令行模式 4 系统未使用,保留 5 X11控制台,登录后进入图形GUI模式 6 系统正常关闭并重启,默认运行级别不能设未0 否则无法运 行 init 3 init 5 init 0 # 查看系统运行级别设置自启动/关闭 chkconfig --list | grep xxx chkconfig --level 5 服务名 on/off

(十)网络通信命令

ifconfig 查看ip地址

修改ip地址:

复制代码
1
2
3
4
5
6
7
8
vim /etc/sysconfig/network-scripts/ifcfg-eth0   DEVICE=eth0   ONBOOT=yes   BOOTPROTO=static   IPADDR=219.136.241.211   NETMASK=255.255.255.128   GATEWAY=219.136.241.254

修改网关

复制代码
1
2
3
4
5
vim /etc/sysconfig/network   NETWORKING=yes   HOSTNAME=Aaron   GATEWAY=192.168.1.1

netstat 对TCP连接,TCP和UDP监听

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
netstat [参数] -a 显示所有socket,包括正在监听的 -c 每隔1秒就重新显示一遍,直到用户中断它 -i 显示所有网络接口的信息 -t 显示TCP协议的连接情况 -u 显示UDP协议的连接情况 -an 按一定的顺序排列输出 -p 显示那个进程在调用 #Proto :网络传输协议,主要为tcp和udp #Local Address :本地的ip:port #Foreign Address:远程主机的ip:port #State :连线状态,主要有监听( LISTEN )和建立(ESTABLISED) #PID :服务的进程编号 #Program name:服务名称

ping 查看网络连接情况

复制代码
1
2
3
# 如: ping www.baidu.com

telnet 连接到远程电脑上

复制代码
1
2
telnet ip地址

(十一)磁盘管理命令

df 检查linux服务器的文件系统的磁盘空间占用情况

复制代码
1
2
3
4
5
6
7
8
df [参数] -a 全部文件系统列表(不使用-a只显示已用列表) -h 方便阅读方式显示 -H 和-h类似,但是计算时1K=1000,而不是1024 -T 输出文件系统类型 -l 只显示本地文件系统

du 命令对指定文件和目录磁盘使用的空间的查看

复制代码
1
2
3
4
5
6
7
8
9
10
11
du [参数] 目录 -a 显示目录中所有的文件,不只是目录 -b 显示目录或文件大小时,以byte为单位 -k 显示结果以千字节KB为单位 -m 显示结果以兆字节M为单位 -c 显示结果中最后加上一个总计 -h 以易阅读的方式显示结果 -s 只显示工作目录所占总空间 --max-depth=n 只列举出深度小于n的目录和文件信息

mount 命令用于挂载新的设备(硬盘)加入现有linux系统中

复制代码
1
2
3
mount /dev/设备文件 /mnt/目录名

fdisk 硬盘分区命令

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
fdisk -l #列出所有的分区 fdisk /dev/sdb #命令进入分区界面 #输入n进行分区 #分区时,输入p代表主分区,输入e代表逻辑分区 #选择好分区后,接下来进行分区起始磁盘位置设置,一般保持#默认为1 #然后进行分区大小设置,假设设置1个G的分区,则输入#+1024m # 输入w进行保存,新的硬盘分区sdb1即设置好 #对新的分区进行格式化,使用mkfs –t ext3 –c /dev/sdb1命令,如有多个分区以此类推 #接下来就使用mount命令将新的分区挂载到指定目录 #使用命令mount /dev/sdb1 /mnt将新的分区/dev/sdb1挂载到/mnt目录下 #如果想每次系统重启都能自动挂载该分区,需要修改/etc/fstab文件 #在文件最后加上一行/dev/sdb1 /mnt ext3 defaults 1 2 #分别表示分区名称、挂载路径、文件系统格式、defaults是挂载时设定的参数

(十二)系统资源查看

ps 实时显示系统中各个进程的资源占用状况

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ps –aux 查看所有资源 ps -ef | more 查看父进程 # 找出占用内存资源最多的前 10 个进程 ps -auxf | sort -nr -k 4 | head -10 # 找出占用 CPU 资源最多的前 10 个进程 ps -auxf | sort -nr -k 3 | head -10 # 其显示处理的参数 USER 用户名 PID 进程ID CPU cpu MEM 内存 VSZ 虚拟内存 RSS 物理内存 TTY 使用的终端 STAT 状态 s:休眠 S:睡眠 R:正在运行 N:比普通进程优先级 低,D:短期等待进程,Z:僵尸进程,T:被跟踪和被停止 等。 START 启动时间 TIME 占用cpu的总时间 COMMAND 进程执行时的命令行 # 通过

lsof 命令列出当前系统打开文件的工具

top 动态监控

复制代码
1
2
3
4
5
6
top P 以cpu使用率排序 M 以内存的使用率排序 N 以PID 排序 q 推出

(十三)备份压缩命令

gzip 对压缩成.zip文件

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
gzip [参数] file1 file2 file.gz -d 将压缩文件解压。 -l 对每个压缩文件,显示下列字段: 压缩文件的大小 未压缩文件的大小 压缩比 未压缩文件的名字 -r 递归式地查找指定目录并压缩其中的所有文件或者是 解压缩。 -t 测试,检查压缩文件是否完整。 -v 对每一个压缩和解压的文件,显示文件名和压缩比。 -num 用指定的数字num调整压缩的速度, -1或--fast表示最快压缩方法(低压缩比), -9或--best表示最慢压缩方法(高压缩比)。系统 缺省 值为6。 # 解压 gunzip file.zip

tar 压缩/解压tar包

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#文件打包语法: tar -cvf 目标文件名.tar 源文件 #文件解包语法: tar -xvf 目标文件名.tar #文件压缩语法: tar -zcvf 目标文件名.tar.gz 源文件 #文件解压语法: tar -zxvf 目标文件名.tar.gz #参数说明: -c,建立新的备份文件; -x,将备份文件解开; -t,列出备份文件的内容; -r,将文件附加在一个备份文件的后面; -u,将备份文件里的文件以教新的版本更新; -d,比较备份文件里的文件与文件系统中的文件; -v,在处理文件时显示更多的信息; -k,在解开文件时保留已存在的文件,也就是在备份文件 中的文件不能覆盖已存在的文件; -f,filename指定filename为读出或写人的备份文件 的文件名 -z,压缩文件。

zip 包

复制代码
1
2
3
4
5
6
7
#将文件打包为zip格式的压缩文件 zip -r filename.zip filesdir -r递归压缩 #unzip 是从zip包中解压出某个文件 unzip filename.zip

bzip2与bunzip2

复制代码
1
2
3
4
5
6
7
8
9
10
bzip2与bunzip2是Linux系统另一款常用的压缩工具,具有很高的压缩比例。压缩文件后缀名为.bz2 不支持将多个文件和目录压缩成一个文件 -c:将压缩与解压缩的结果输出到标准输出上 -d:解压缩 -f:压缩或解压缩时强制覆盖已存在的文件 -k:压缩或解压缩后保留源文件 -t:测试.bz2文件的完整性 -v:压缩或解压缩时显示详细信息

(十四)任务调度

crontab 定时任务的设置

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
crontab [参数] -e 编辑crontab定时任务 -l 查询crontab任务 -r 删除当前用户所有的crontab任务 # 定时任务的编辑有如下的五个*号 * * * * * 第一个表示 一个小时中的第几分钟 0-59 第二个表示 一天中的第几个小时 0-23 第三个表示 一个月中的第几天 1-31 第四个表示 一年中的第几个月 1-12 第五个表示 一周中的星期几 0-7 , 代表连续的时间 1,4,8 * * * * 每1,4,8 分钟执行 * 代表任何时间 - 代表一个时间范围 0 2 * * 3-5 周三到周五2:00执行 */n 代表每隔多久执行一次 */3 * * * * 每3分钟执行

其他命令

复制代码
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
通常Linux应用软件的安装包有三种 tar包,如software-1.2.3-1.tar.gz rpm包,如software-1.2.3-1.i386.rpm dpkg包,如software-1.2.3-1.deb 大多数Linux应用软件包的命名遵循一定的规律: 名称-版本-修正版-类型 ---------------------------------------------------- tar包是使用系统中的tar命令打包的,其中包含的内容一般分为两种 一种就是可执行文件,解包后可以直接运行安装 比如software.bin,赋予可执行权限x后,即可通过./software.bin运行安装 另外一种就是源程序,解包后需要使用编译器将其编译成可执行文件 首先将tar包解包 阅读解包后的目录中附带的INSTALL或README文件了解相关信息 执行./configure命令为编译做准备 执行make命令进行软件编译 执行make install命令完成安装,一般默认安装在/usr/local/bin目录下 执行make clean删除安装时产生的临时文件 如果想要卸载,执行make uninstall命令 ---------------------------------------------------- rpm包是Redhat Linux提供的一种包封装格式,使用相应的rpm命令来完成安装,让软件安装工作变得简单 查询已安装的rpm包 rpm –qa software-1.2.3.rpm 安装rpm包 rpm –ivh software-1.2.3.rpm 强制安装 --force --nodeps 卸载rpm包 rpm –e software-1.2.3 注意:卸载时,包名不要后缀名 升级rpm包 rpm –Uvh software-1.2.3.rpm dpkg包是Debian Linux提供的一种包封装格式 安装dpkg包 dpkg –i software-1.2.3.deb 卸载dpkg包 dpkg –e software-1.2.3 同样卸载dpkg包,也不需要后缀名 ---------------------------------------------------- 在Redhat Linux中使用rpm命令安装rpm包,还需要注意安装包之间的依赖关系,某些安装包在安装过程中需要预先安装好依赖包 同时在Redhat还有另外一种更简单的程序安装方式,使用yum命令,能够自动从程序库中获取相应安装包和依赖包 查看程序库中所有包文件,可以搭配grep命令搜索 yum list 查看所有已安装的包 yum list installed 安装程序 yum install 软件名 卸载程序 yum remove 软件名 ---------------------------------------------------- 使用lrz和lsz命令完成客户端与Linux服务器的文件上传和下载 linux系统默认不支持lrz和lsz命令的,需要安装相应的工具 lsz命令发送 文件到本地(下载) 语法:lsz filename 下载的文件保存路径在客户端进行设置 lrz命令上传本地文件到服务器 语法:lrz 使用lrz命令后会在客户端出现弹出框,选择要上传的文件上传即可 上传的文件路径为命令输入时的工作路径 ---------------------------------------------------- 通过FTP完成客户端与Linux服务器的文件上传和下载,一般的各种Linux发行版中默认带有的ftp软件是vsftpd 使用yum list installed | grep vsftpd命令来检测是否安装了vsftpd软件 如果没有安装vsftpd软件,则使用yum来进行安装 安装命令 yum -y install vsftpd 安装完成后,启动vsftpd软件服务 启动服务命令:systemctl start vsftpd 停止服务命令:systemctl stop vsftpd 重启服务命令:systemctl restart vsftpd ---------------------------------------------------- vsftpd的配置 ftp的配置文件主要有三个,位于/etc/vsftpd/目录下 [root@localhost vsftpd]# ls -l total 36 -rw------- 1 root root 125 Jan 9 2013 ftpusers -rw------- 1 root root 361 Jan 9 2013 user_list -rw------- 1 root root 4579 Jan 9 2013 vsftpd.conf ftpuser 该文件用来指定哪些用户不能访问ftp服务器,通常是系统默认的用户,文件中每个用户独占一行 user_list 该文件内容和ftpuser相同,是系统对vsftpd的配置文件进行检测时所需要的文件,所以这个文件必须存在 vsftpd.conf是vsftpd软件的主配置文件 其中部分设置说明: anonymous_enable=YES //是否允许匿名用户登录,默认是允许 local_enable=YES //是否允许本地用户登录FTP服务器,默认是允许 write_enable=YES  //是否允许用户具有在FTP服务器文件中执行写的权限,默认是允许 userlist_enable=YES //用户列表中的用户是否允许登录FTP服务器,默认是不允许 anon_mkdir_write_enable=YES  //是否允许匿名账户在FTP服务器中创建目录 anon_upload_enable=YES //是否允许匿名账户在FTP服务器上进行上传

shell 编程

shell 第一个程序

复制代码
1
2
3
#!/bin/bash echo hello word

变量:

定义变量

​ 变量名=值 -->var_name=value

撤销变量:

unset 变量名 --> unset var_name

静态变量 :

readonly var_name=100

​ 静态变量不能 unset , unset会报错

复制代码
1
2
3
4
5
6
7
8
#!/bin/bash var=hello #非静态变量 readonly static_var=100 #静态变量 echo "$var" unset var echo "var=$var" unset static_var # 执行到这里时会报错

shell 变量定义的规则

  • 变量名称只能由字母、数字、下划线组成,但不能以数字开头(和python一样)
  • 等号不能有空格
  • 变量名称一般用大写

将命令赋值给表里时要用``引号或$()包围起来

如:

复制代码
1
2
3
4
5
6
#!/bin/bash COMMD=`ls -l` COMMD1=`ps -aux` echo "$COMMD" echo "$COMMD1"

设置环境变量

  • export 变量名=变量值
  • source 配置文件
  • echo $环境变量

位置参数变量

  • $n–>n为数字,$0表示命令本身,$1- 9 代 表 1 到 第 九 个 参 数 , 十 个 参 数 以 上 9代表1到第九个参数,十个参数以上 91{10}, ${11} …
  • $* -->代表命令中的所有变量,把所有的变量看成一个整体
  • @ − − > 代 表 命 令 中 的 所 有 变 量 , 不 过 @--> 代表命令中的所有变量,不过 @>@把每个变量区分对待
  • $#—>代表命令中所有参数的个数
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash echo "$0" echo "$1 $2 $3" echo "$*" echo "$@" echo "$#" !>> 输出结果如下 ./get_var.sh 20 30 40 20 30 40 20 30 40 3 !

预定义变量

  • $$ —>当前的进程号
  • $! ---->后台运行的最后一个程序的进程
  • $? ---->最后一次执行的命令的返回状态,0为正确执行,非0则表示上一个命令执行不正确,具体什么数有命令自己决定
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash # 显示进程号 echo "$$" #后台运行 ./get_var.sh & # 后台运行的最后一个程序的进程 echo "$!" #最后一次执行的命令的返回状态 echo "$?" !>> 执行结果 16624 16625 0 [hadoop@localhost shell_program]$ ./get_var.sh 0 !

运算符

  • ( ( 运 算 施 ) ) " 或 " ((运算施))" 或" (())""[运算式]”
  • expr m + n expr 运行符间要有空格
  • expr + - * / % 加、减、乘、除、取余
复制代码
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
#!/bin/bash A=100 B=20 echo "$(($A+$B))" echo "$[$A*$B]" RESULTADD=`expr 1 + 2` RESULTMUN=`expr 4 - 1` RESULTMULT=`expr 4 * 5` RESULTDIV=`expr 30 / 6` echo "$RESULTADD" echo "$RESULTMUN" echo "$RESULTMULT" echo "$RESULTDIV" !>> 输出结果如下: 120 2000 3 3 20 5 !

条件判断

最后

以上就是漂亮煎蛋最近收集整理的关于linux 的性能监控一、linux 的性能监控二、linux基础shell 编程的全部内容,更多相关linux内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部