linux 的性能监控

一、linux 的性能监控

  • 对进程的监控

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

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

    # 监控内存
    sar -r 间隔时间  采样次数
    # 监控磁盘
    sar -d 间隔时间  采样次数
    # 监控网络
    sar -n 统计信息 间隔时间  采样次数
    
    
    iostat 监控cpu和磁盘
    # 监控cpu:
    iostat -c 时间间隔 采样次数
    # 监控硬盘:
    iostat -d 设备名  时间间隔 采样次数
    # 不加参数表示同时监控cpu和磁盘
    
    iostat -d /dev/sda 可以单独监控磁盘
    
  • linux的性能监控工具

  • nmon

    安装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返回上一个

(二)开关机重启命令

关机/重启:

shutdown
shutdown -h now # 立即关机
shutdown -h  3  # 三分钟后关机
shutdown -r now # 立刻重启
halt            # 关机
reboot          # 重启
sync            # 把内存的数据同步到磁盘

注销

logout

切换用户

su  用户名

(三)、用户管理命令

添加用户

useradd 用户名
# 创建号的用户存在/etc/passwd 文本中

给用户设定密码

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

查看用户id

id 用户名

删除用户账号

userdel [-r] 用户名

建立用户组

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

更改群组识别码或名称

groupmod [-g <群组识别码> <-o>][-n <新群组名称>][群组名称]
     -g #<群组识别码>  设置欲使用的群组识别码
     -o #重复使用群组识别码
     -n #<新群组名称>  设置欲使用的群组名称
     

删除群组

groupdel [群组名称]

(四)目录管理

创建一个目录

mkdir -[参数] 目录名
	  -p #如果父节点不存在可以使用-p参数创建

重命名目录

mv  旧目录/文件名  新目录/文件名

目录路径的切换

cd 

(五)文本搜索命令

grep

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

sort 排序命令

sort 文件名
# 显示出来内容排序

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

wc 统计命令

wc -[参数] 文件名称
   -c, --bytes:统计字节数
   -m, --chars:统计字符数
   -l, --lines:统计行数
   -L, --max-line-length:打印最长行的长度
   -w, --words:统计字数

cp 拷贝命令

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

mv 剪切/移动命令

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

rm 文件删除命令

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

find 文件查找命令

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 查看命令

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

head 查看命令

head [参数] 文件名
	-n 查看前n行

more 查看命令

more [-dlfpcsu] [-num] [+/ pattern] [+ linenum] [file ...]
参数说明:
-num:每页显示多少行内容
+num:从多少行开始显示
more +2 -3 test.txt 
从第2行开始,每页显示3行数据阅读test.txt文件
空格键:显示下一页内容
回车键:显示下一行内容
b键:显示上一页内容

tail 查看命令

tail [参数] 文件名
    -n 查看最后n行
    -f 动态查看

diff 比较两个文件

diff [option] file1 file2
	-a 将所有文件当做文本文件处理
	-b 忽略空格造成的不同
	-B 忽略空行造成的不同
	-i 忽略大小写
	-c 使用纲要输出格式

cmp 比较两个文件

cmp [参数] file1 file2
	-c 除了标明差异处的八进制字码之外,一并显示该字符		 所对应字符
	-i 指定一个数目,比较时直接跳过对应的字符进行后续		 比较
	-l 标示出所有不一样的地方,并显示对应的八进制码

#当相互比较的两个文件完全一样时,则该指令不会显示任何信息。
#若发现有所差异,预设会标示出第一个不同之处的字符和行数编号

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

comm [参数] file1 file2
	-1 不显示只出现在第一个文件中的行
	-2 不显示只出现在第二个文件中的行
	-3 不显示同时出现在两个文件中的行
	-12 显示两个文件中同时出现的行
	-13 显示只出现在第二个文件中的行
	-23 显示只出现在第一个文件中的行

file 识别文件类型

file [参数] 文件名
	-b 结果中不输出文件名称
	-f 列举文件中包含的各个文件名的文件类型

ls 查看文件列表

ls -l #ls –l查看文件详细信息

ln 生成连接文件

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




whereis 搜索程序或指令的名称

whereis [参数] 程序名
		-b   定位可执行文件。
		-m   定位帮助文件。
		-s   定位源代码文件。
		-u   搜索默认路径下除可执行文件、源代码文件、			  帮助文件以外的其它文件。
		-B   指定搜索可执行文件的路径。
		-M   指定搜索帮助文件的路径。
		-S   指定搜索源代码文件的路径

which 查找文件

which  文件名

(八) 权限管理

chmod 修改文件权限

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

修改文件所属用户组

chgrp [-R] 组名 文件名

修改文件拥有者

chown [-R] 用户名 文件名

(九)系统命令

alias 给命令命别名

#如:
alias lsl = 'ls -l'
# 撤销别名
 unalias  lsl

echo 输出命令

export 设置环境变量

# 临时配置
export var_name=value
unset var_name     删除某个系统环境变量

# /etc/profile 文件 可以配置永久的环境变量
source  1、加载环境变量   2、执行sql脚本(在linux)

systemctl 服务启动命令

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地址:

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

修改网关

vim /etc/sysconfig/network
  NETWORKING=yes
  HOSTNAME=Aaron
  GATEWAY=192.168.1.1

netstat 对TCP连接,TCP和UDP监听

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 查看网络连接情况

# 如:
ping www.baidu.com

telnet 连接到远程电脑上

telnet ip地址

(十一)磁盘管理命令

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

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

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

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

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

mount /dev/设备文件  /mnt/目录名

fdisk 硬盘分区命令

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 实时显示系统中各个进程的资源占用状况

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 动态监控

top 
	P 以cpu使用率排序
	M  以内存的使用率排序
	N  以PID 排序
	q   推出

(十三)备份压缩命令

gzip 对压缩成.zip文件

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

# 解压
gunzip file.zip

tar 压缩/解压tar包

#文件打包语法:
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 包

#将文件打包为zip格式的压缩文件
zip -r filename.zip filesdir
	-r递归压缩
#unzip 是从zip包中解压出某个文件
unzip filename.zip

bzip2与bunzip2

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

(十四)任务调度

crontab 定时任务的设置

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分钟执行


其他命令

通常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 第一个程序

#!/bin/bash
echo hello word

变量:

定义变量

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

撤销变量:

unset 变量名 --> unset var_name

静态变量 :

readonly var_name=100

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

#!/bin/bash
var=hello #非静态变量
readonly static_var=100 #静态变量
echo "$var"
unset var
echo "var=$var" 
unset static_var  # 执行到这里时会报错

shell 变量定义的规则

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

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

如:

#!/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} …
  • $* -->代表命令中的所有变量,把所有的变量看成一个整体
  • @ − − > 代 表 命 令 中 的 所 有 变 量 , 不 过 @--> 代表命令中的所有变量,不过 @>@把每个变量区分对待
  • $#—>代表命令中所有参数的个数
#!/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则表示上一个命令执行不正确,具体什么数有命令自己决定
#!/bin/bash
# 显示进程号
echo "$$"

#后台运行
./get_var.sh &
# 后台运行的最后一个程序的进程
echo "$!"
#最后一次执行的命令的返回状态
echo "$?"


!>>
执行结果
16624
16625
0
[hadoop@localhost shell_program]$ ./get_var.sh
  
0

!

运算符

  • ( ( 运 算 施 ) ) " 或 " ((运算施))" 或" (())""[运算式]”
  • expr m + n expr 运行符间要有空格
  • expr + - * / % 加、减、乘、除、取余
#!/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
!

条件判断

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值