Linux系统总结04

一、Linux动态监控系统

  • 动态监控进程:使用 top 指令。top 和 ps 指令相似,都用来显示正在执行的进程。最大的不同:top在执行一段时间可以更新正在运行的进程。

    1. 指令:top [选项]。常见选项:

      选项功能
      -d [秒数]指定 top 指令每隔几秒更新。默认是3秒
      -i使 top 不显示任何闲置或者僵死进程
      -p通过指定监控进程ID来仅仅监控某个进程的状态

      在这里插入图片描述

    2. top界面的交互操作说明:

      操作功能
      P以CPU使用率排序,默认就是此项
      M以内存的使用率排序
      N以PID排序
      q退出top
    3. 监控特定的用户,比如监控tom用户: 先输入top指令,按下回车键后,输入 u 再回车,再输入用户名tom即可。

    4. 终止指定的进程: 先输入top指令,按下回车键后,输入 k 再回车,再输入要结束的进程ID即可。

  • 监控网络状态:

    1. 查看系统网络情况:netstat [选项]。常见选项:-an:按一定顺序排列输出;-p:显示哪个进程在调用。
      在这里插入图片描述
    2. 查看sshd进程的网络状态:netstat -anp | grep sshd。
      在这里插入图片描述

二、RPM与YUM

  • RPM包的管理:RPM用于互联网下载包的打包及安装工具,包含在某些Linux分发版中。它生成具有 .RPM 扩展名的文件。RPM是 RedHat Package Manager 的缩写,类似于Windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。Linux的发行版本中,Suse、RedHat、CentOS等采用了RPM。

    1. RPM包的简单查询指令:
      查询已安装的RPM列表:rpm -qa | grep xx。
      查询软件包是否安装:rpm -q [软件包名]。
      查询软件包信息:rpm -qi [软件包名]。
      查询软件包中的文件:rpm -ql [软件包名]。
      查询文件所属的软件包:rpm -qf [文件全路径名]。
      卸载RPM包:rpm -e [RPM包名称]。
    2. 细节讨论:
      ① 如果其他软件包依赖于要卸载的软件包,卸载时会产生错误信息。比如:$ rpm -e foo。
      ② 如果就是要删除foo这个包,可以增加参数 --nodeps,就可以强制删除,但是一般不推荐。
    3. 安装RPM包:rpm -ivh [RPM包全路径名称]。-i:安装;-v:提示;-h:进度条。
  • YUM介绍:YUM是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

    1. yum的基本指令:
      查询yum服务器是否有需要安装的软件:yum list | grep xx软件列表。
      安装指定的yum包:yum install xxx。

三、搭建JavaEE环境

  • 如果需要在Linux下进行JavaEE的开发,需要安装如下软件:
    在这里插入图片描述

  • 安装JDK环境:
    ① mkdir /opt/jdk;
    ② 将Windows下载的jdk上传到 /opt/jdk 目录下;
    ③ cd /opt/jdk;
    ④ tar -zxvf jdk-8u261-linux-x64.tar.gz;
    ⑤ mkdir /usr/local/java;
    ⑥ mv /opt/jdk/jdk1.8.0_261 /usr/local/java;
    ⑦ 配置环境变量:vim /etc/profile;
    ⑧ 添加:export JAVA_HOME=/usr/local/java/jdk-8u261;
    ⑨ 添加:export PATH=$JAVA_HOME/bin:$PATH;
    ⑩ source /etc/profile;

  • 安装tomcat环境:
    ① 上传安装文件,并解压到 /opt/tomcat;
    ② 进去解压目录 /bin,启动tomcat:./startup.sh;
    ③ 开放Linux系统的8080端口;
    firewall -cmd --permanent --add-port=8080/tcp;

  • idea工具的安装:
    ① 下载Linux版本的idea;
    ② 解压缩到 /opt/idea;
    ③ 启动idea的bin目录下的 ./idea.sh,配置jdk;
    ④ 编写java程序,测试是否成功;

  • MySQL5.7的安装:
    ① mkdir /opt/mysql,并且cd进去;
    ② 运行:wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar,下载安装包;【注意:CentOS7.6 自带的类mysql数据库是 mariadb ,会与mysql冲突,先删除】
    ③ 运行:tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar;
    ④ 运行: rpm -qa | grep mari,查询mariadb的相关安装包,通过rpm -e --nodeps mariadb-libs进行卸载;
    ⑤ rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm;
    rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm;
    rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm;
    rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm;
    ⑥ 运行:systemctl start mysqld.service,启动MySQL服务;
    ⑦ 设置root用户密码:运行grep “password” /var/log/mysqld.log可以看到当前密码;
    ⑧ 登录:mysql -u root -p;
    ⑨ 设置root密码,对于个人开发环境,如果要设置比较简单的密码(生成环境服务器要设置复杂密码),可以运行 set global validate_password_policy=0,提示密码设置策略;
    ⑩ set password for ‘root’@‘localhost’=password(‘***’);运行 flush privileges 使密码设置生效;

四、Linux的Shell编程

Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器的管理。对于JavaEE和Python程序员来说,由于工作的需要,通常会要求编写一些Shell脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。对于大数据程序员来说,需要编写Shell程序来管理集群。

  • Shell是一个命令行解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至编写一些程序。

  • Shell脚本的执行方式:

    1. 脚本格式要求:① 以 #!/bin/bash 开头;② 需要有可执行权限;

    2. 编写一个Shell脚本,输出 Hello World!:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    3. 脚本的常用执行方式:① 首先需要赋予helloworld.sh脚本可执行权限,再执行脚本;② 使用 sh + 脚本 执行。不用赋予脚本可执行权限,直接执行即可。

  • Shell的变量:

    1. Linux中Shell的变量分为:系统变量 和 用户自定义变量。

    2. 系统变量:$HOME、$PWD、$SHELL、$USER等等。比如:echo $HOME;

    3. 显示当前Shell中所有变量:set。

    4. Shell变量的定义:
      ① 定义变量:变量=值;
      ② 撤销变量:unset 变量;
      ③ 声明静态变量:readonly 变量。 【注意:不能 unset】
      在这里插入图片描述
      在这里插入图片描述

    5. 变量定义规则:
      ① 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
      等号两侧不能有空格
      ③ 变量名称一般习惯大写。

    6. 将命令的返回值赋值给变量:
      ① A=`date` 反引号,运行里面的命令,并把结果返回给变量A。
      ② A=$(date) 等价于反引号。
      在这里插入图片描述
      在这里插入图片描述

    7. 设置环境变量:
      ① export 变量名=变量值 :将Shell变量输出为环境变量 / 全局变量。
      ② source 配置文件 : 让修改后的配置信息立即生效。
      ③ echo $变量名 :查询输出环境变量值。
      【Shell脚本中的多行注释:单独一行 :<<! 以及 单独一行 !】

    8. 位置参数变量:
      ① 当执行一个Shell脚本时,如果希望获取到命令行的参数信息时,就可以使用到位置参数变量。比如:./myshell.sh 100 200,这个就是一个执行Shell的命令行,可以在myshell脚本中获取到参数信息。
      ② 基本语法:

      符号参数功能描述
      $nn为数字,$0代表命令本身;$1-$9代表第一到第九个参数;十以上的参数需要用大括号包含,比如:${10}
      $*代表命令行中所有的参数,$*把所有的参数看成一个整体
      $@也代表命令行中的所有的参数,不过$@把每个参数区分对待
      $#代表命令行中所有参数的个数

      在这里插入图片描述
      在这里插入图片描述

    9. 预定义变量:
      ① 就是Shell的设计者事先已经定义好的变量,可以直接在Shell脚本中使用。
      ② 基本语法:

      符号参数功能描述
      $$当前进程的进程号 PID
      $!后台运行的最后一个进程的进程号 PID
      $?最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果值非0,证明上一个命令执行不正确

      在这里插入图片描述
      在这里插入图片描述

    10. Shell中的运算符:
      ① “$((运算式))” 或者 “$[运算式]” 或者 expr m + n。【注意:expr间有空格】
      ② expr m - n。
      ③ expr * , / , % 乘、除、取余。
      在这里插入图片描述

    11. Shell中的条件判断:
      ① [ condition ] 。【注意:condition前后有空格】
      #非空返回true,可以使用 $? 验证。【0为true,>1为false】
      ② 判断语句:
      两个字符串比较:=;
      两个整数比较:

      判断条件含义
      -lt小于
      -le小于等于
      -eq等于
      -gt大于
      -ge大于等于
      -ne不等于

      按照文件权限进行比较:

      判断条件含义
      -r有读权限
      -w有写权限
      -x有执行权限

      按照文件权限进行比较:

      判断条件含义
      -f文件存在并且是一个常规文件
      -e文件存在
      -d文件存在并且是一个目录

      在这里插入图片描述

    12. Shell的流程控制:
      ① if语句:
      单分支:

      		if [ condition ]
      		then
      			代码
      		fi
      

      多分支:

      		if [ condition ]
      		then
      			代码
      		elif [ condition ]
      		then
      			代码
      		fi
      

      在这里插入图片描述
      ② case 语句:

      			case $变量名 in 
      			"值1")
      				如果变量值等于值1,执行程序1
      			;;
      			"值2")
      				如果变量值等于值2,执行程序2
      			*)
      				如果变量值都不是以上值,则执行此程序
      			;;
      			esac
      

      在这里插入图片描述

      ③ for循环:

      for 变量 in 值1 值2 值3...
      do
      	程序代码
      done
      

      或者

      for (( 初始值;循环控制条件;变量变化 ))
      do
      	程序代码
      done
      

      在这里插入图片描述

      在这里插入图片描述

      ④ while循环:

      while [ 条件判断式 ]
      do
      	程序代码
      done
      

      在这里插入图片描述

    13. read读取控制台输入:
      ① read (选项)(参数)。
      ② 选项:-p:指定读取值时的提示符;-t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。
      ③ 参数:指定读取值的变量名。
      在这里插入图片描述

    14. Shell中的函数:有系统函数,也可以自定义函数。
      系统函数:
      ① basename [pathname] [suffix] :返回完整路径最后 / 的部分,常用于获取文件名。
      basename指令会删除掉所有的前缀包括最后一个 ‘/’ 字符,然后将字符串显示出来。
      suffix为后缀,如果suffix被指定,basename会将pathname中的suffix去掉。
      在这里插入图片描述
      ② dirname:返回完整路径最后 / 的前面部分,常用于返回路径部分。
      dirname [文件绝对路径]。从给定的包含绝对路径的文件名中去除文件名(非目录部分),然后返回剩下的路径(目录部分)。
      在这里插入图片描述
      自定义函数:
      ① 基本语法:

      [ function ] funname[()]
      {
      	Action;
      	[return int;]
      }
      
      调用直接写函数名:funname []
      

      在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值