精华内容
下载资源
问答
  • linux ocr command line linux 命令 图片 文字 转换 linux ocr command line linux 命令 图片 文字 转换 linux ocr command line linux 命令 图片 文字 转换
  • Linux常用命令

    万次阅读 多人点赞 2018-11-08 11:49:23
    一、基本命令 1.1 关机和重启 1.2 帮助命令 二、目录操作命令 2.1 目录切换 cd 2.2 目录查看 ls [-al] 2.3 目录操作【增,删,改,查】 2.3.1创建目录【增】 mkdir 2.3.2删除目录或文件【删】rm 2.3.3目录...

    目录

     

    一、基本命令

    1.1 关机和重启

    1.2 帮助命令

    二、目录操作命令

    2.1 目录切换 cd

    2.2 目录查看 ls [-al]

    2.3 目录操作【增,删,改,查】

    2.3.1 创建目录【增】 mkdir

    2.3.2 删除目录或文件【删】rm

    2.3.3 目录修改【改】mv 和 cp

    2.3.4 搜索目录【查】find

    三、文件操作命令

    3.1 文件操作【增,删,改,查】

    3.1.1 新建文件【增】touch

    3.1.2 删除文件 【删】 rm

    3.1.3 修改文件【改】 vi或vim

    3.1.4 文件的查看【查】

    3.2 权限修改

    四、压缩文件操作

    4.1 打包和压缩

    4.2 解压

    五、查找命令

    5.1 grep

    5.2 find

    5.3 locate

    5.4 whereis

    5.5 which

    六、su、sudo

    6.1 su

    6.2 sudo

    七、系统服务

    八、网络管理

    8.1 主机名配置

    8.2 IP 地址配置

    8.3 域名映射

    九、定时任务指令crontab 配置

    9.1 命令格式

    9.2 配置说明、实例

    十、其他命令

    10.1 查看当前目录:pwd

    10.2 查看进程:ps -ef

    10.3 结束进程:kill

    10.4 网络通信命令:

    10.5 配置网络

    10.6 重启网络

    10.7 切换用户

    10.8 关闭防火墙

    10.9 修改文件权限

    10.10 清屏

    10.11 vi模式下快捷键

    十一、Linux项目部署

    11.1 安装jdk1.8

    11.2 安装MySQL5.6

    11.2.1 上传MySQL5.6的tar包

    11.2.2 安装

    11.2.3 开机自动启动设置

    11.2.4 开启远程访问

    11.3 安装tomcat部署项目

    11.3.1 创建ucenter用户

    11.3.2 安装Tomcat

    11.3.3 部署用户管理项目

    11.4 Linux下使用FastDFS

    11.4.1 安装gcc

    11.4.2 安装libevent

    11.4.3 安装libfastcommon-master

    11.4.4 安装fastdfs

    11.4.5 配置并启动tracker服务

    11.4.6 配置并启动storage服务

    11.5 安装fastdfs-nginx-module

    11.5.1 解压

    11.5.2 修改config

    11.5.3 配置nginx与FastDFS关联配置文件

    11.6 安装Nginx的插件

    11.6.1 如果没有安装过nginx

    11.6.2 如果已经安装过nginx

    11.6.3 启动nginx

    11.6.4 设置nginx开机启动

    11.7 安装Elasticsearch

    11.7.1 新建一个用户leyou

    11.7.2 上传安装包,并解压

    11.7.3 修改配置

    11.7.4 运行

    11.7.5 错误1:内核过低

    11.7.6 错误2:文件权限不足

    11.7.7 错误3:线程数不够

    11.7.8 错误4:进程虚拟内存

    11.7.9 重启终端窗口

    11.8 安装RabbitMQ

    11.8.1 安装Erlang

    11.8.2 安装RabbitMQ

    11.8.3 设置配置文件

    11.8.4 启动、停止

    11.8.5 开启web界面管理工具

    11.8.6 设置开机启动

    11.8.7 防火墙开放15672端口

    11.9 redis安装和配置

    11.9.1 安装

    11.9.2 配置

    11.9.3 启动或停止

    11.9.4 设置开机启动


    一、基本命令

    1.1 关机和重启

    关机
        shutdown -h now        立刻关机
        shutdown -h 5        5分钟后关机
        poweroff            立刻关机
    重启
        shutdown -r now        立刻重启
        shutdown -r 5        5分钟后重启
        reboot                立刻重启

    1.2 帮助命令

    --help命令
      shutdown --help:
      ifconfig  --help:查看网卡信息
     
    man命令(命令说明书) 
      man shutdown
      注意:man shutdown打开命令说明书之后,使用按键q退出

    二、目录操作命令

    2.1 目录切换 cd

    命令:cd 目录

    cd /        切换到根目录
    cd /usr        切换到根目录下的usr目录
    cd ../        切换到上一级目录 或者  cd ..
    cd ~        切换到home目录
    cd -        切换到上次访问的目录

    2.2 目录查看 ls [-al]

    命令:ls [-al]

    ls                查看当前目录下的所有目录和文件
    ls -a            查看当前目录下的所有目录和文件(包括隐藏的文件)
    ls -l 或 ll       列表查看当前目录下的所有目录和文件(列表查看,显示更多信息)
    ls /dir            查看指定目录下的所有目录和文件   如:ls /usr

    2.3 目录操作【增,删,改,查】

    2.3.1 创建目录【增】 mkdir

    命令:mkdir 目录

    mkdir    aaa            在当前目录下创建一个名为aaa的目录
    mkdir    /usr/aaa    在指定目录下创建一个名为aaa的目录

    2.3.2 删除目录或文件【删】rm

    命令:rm [-rf] 目录

    删除文件:
    rm 文件        删除当前目录下的文件
    rm -f 文件    删除当前目录的的文件(不询问)

    删除目录:
    rm -r aaa    递归删除当前目录下的aaa目录
    rm -rf aaa    递归删除当前目录下的aaa目录(不询问)

    全部删除:
    rm -rf *    将当前目录下的所有目录和文件全部删除
    rm -rf /*    【自杀命令!慎用!慎用!慎用!】将根目录下的所有文件全部删除

    注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了方便大家的记忆,无论删除任何目录或文件,都直接使用 rm -rf 目录/文件/压缩包

    2.3.3 目录修改【改】mv 和 cp

    一、重命名目录
        命令:mv 当前目录  新目录
        例如:mv aaa bbb    将目录aaa改为bbb
        注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行    重命名的操作

    二、剪切目录
        命令:mv 目录名称 目录的新位置
        示例:将/usr/tmp目录下的aaa目录剪切到 /usr目录下面     mv /usr/tmp/aaa /usr
        注意:mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作

    三、拷贝目录
        命令:cp -r 目录名称 目录拷贝的目标位置   -r代表递归
        示例:将/usr/tmp目录下的aaa目录复制到 /usr目录下面     cp /usr/tmp/aaa  /usr
        注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不    用写-r递归

    2.3.4 搜索目录【查】find

    命令:find 目录 参数 文件名称
    示例:find /usr/tmp -name 'a*'    查找/usr/tmp目录下的所有以a开头的目录或文件

    三、文件操作命令

    3.1 文件操作【增,删,改,查】

    3.1.1 新建文件【增】touch

    命令:touch 文件名
    示例:在当前目录创建一个名为aa.txt的文件        touch  aa.txt

    3.1.2 删除文件 【删】 rm

    命令:rm -rf 文件名

    3.1.3 修改文件【改】 vi或vim

    【vi编辑器的3种模式】
        基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
    1) 命令行模式command mode)
          控制屏幕光标的移动,字符、字或行的删除,查找,移动复制某区段及进入Insert mode下,或者到 last line mode。
          命令行模式下的常用命令:
          【1】控制光标移动:↑,↓,j
          【2】删除当前行:dd 
          【3】查找:/字符
          【4】进入编辑模式:i o a
          【5】进入底行模式::
          
    2) 编辑模式(Insert mode)
          只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
          编辑模式下常用命令:
          【1】ESC 退出编辑模式到命令行模式;
          
    3) 底行模式(last line mode)
         将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
         底行模式下常用命令:
         【1】退出编辑:   :q
         【2】强制退出:   :q!
         【3】保存并退出:  :wq

    打开文件

    命令:vi 文件名
    示例:打开当前目录下的aa.txt文件     vi aa.txt 或者 vim aa.txt

    注意:使用vi编辑器打开文件后,并不能编辑,因为此时处于命令模式,点击键盘i/a/o进入编辑模式。

    编辑文件

    使用vi编辑器打开文件后点击按键:i ,a或者o即可进入编辑模式。

    i:在光标所在字符前开始插入
    a:在光标所在字符后开始插入
    o:在光标所在行的下面另起一新行插入

    保存或者取消编辑

    保存文件:

    第一步:ESC  进入命令行模式
    第二步::     进入底行模式
    第三步:wq     保存并退出编辑

    取消编辑:

    第一步:ESC  进入命令行模式
    第二步::     进入底行模式
    第三步:q!     撤销本次修改并退出编辑

    3.1.4 文件的查看【查】

    文件的查看命令:cat/more/less/tail

    cat:看最后一屏

    示例:使用cat查看/etc/sudo.conf文件,只能显示最后一屏内容
    cat sudo.conf

    more:百分比显示

    示例:使用more查看/etc/sudo.conf文件,可以显示百分比,回车可以向下一行,空格可以向下一页,q可以退出查看
    more sudo.conf

    less:翻页查看

    示例:使用less查看/etc/sudo.conf文件,可以使用键盘上的PgUp和PgDn向上    和向下翻页,q结束查看
    less sudo.conf

    tail:指定行数或者动态查看

    示例:使用tail -10 查看/etc/sudo.conf文件的后10行,Ctrl+C结束  
    tail -10 sudo.conf

    3.2 权限修改

    rwx:r代表可读,w代表可写,x代表该文件是一个可执行文件,如果rwx任意位置变为-则代表不可读或不可写或不可执行文件。

    示例:给aaa.txt文件权限改为可执行文件权限,aaa.txt文件的权限是-rw-------

    第一位:-就代表是文件,d代表是文件夹
    第一段(3位):代表拥有者的权限
    第二段(3位):代表拥有者所在的组,组员的权限
    第三段(最后3位):代表的是其他用户的权限

       421  421  421
    -  rw-   ---     ---

    命令:chmod +x aaa.txt
    或者采用8421法
    命令:chmod 100 aaa.txt

    四、压缩文件操作

    4.1 打包和压缩

    Windows的压缩文件的扩展名  .zip/.rar
    linux中的打包文件:aa.tar      
    linux中的压缩文件:bb.gz    
    linux中打包并压缩的文件:.tar.gz

    Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。
    而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。

    命令:tar -zcvf 打包压缩后的文件名 要打包的文件
    其中:z:调用gzip压缩命令进行压缩
      c:打包文件
      v:显示运行过程
      f:指定文件名
      
    示例:打包并压缩/usr/tmp 下的所有文件 压缩后的压缩包指定名称为xxx.tar
    tar -zcvf ab.tar aa.txt bb.txt 
    或:tar -zcvf ab.tar  *

    4.2 解压

    命令:tar [-zxvf] 压缩文件    
    其中:x:代表解压
    示例:将/usr/tmp 下的ab.tar解压到当前目录下

    示例:将/usr/tmp 下的ab.tar解压到根目录/usr下
    tar -xvf ab.tar -C /usr------C代表指定解压的位置

    五、查找命令

    5.1 grep

    grep命令是一种强大的文本搜索工具

    使用实例:

    ps -ef | grep sshd  查找指定ssh服务进程 
    ps -ef | grep sshd | grep -v grep 查找指定服务进程,排除gerp身 
    ps -ef | grep sshd -c 查找指定进程个数 

    5.2 find

    find命令在目录结构中搜索文件,并对搜索结果执行指定的操作。 

    find 默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。

    使用实例:

    find . -name "*.log" -ls  在当前目录查找以.log结尾的文件,并显示详细信息。 
    find /root/ -perm 600   查找/root/目录下权限为600的文件 
    find . -type f -name "*.log"  查找当目录,以.log结尾的普通文件 
    find . -type d | sort   查找当前所有目录并排序 
    find . -size +100M  查找当前目录大于100M的文件

    5.3 locate

    locate 让使用者可以很快速的搜寻某个路径。默认每天自动更新一次,所以使用locate 命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。如果数据库中没有查询的数据,则会报出locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory该错误!updatedb即可!

    yum -y install mlocate 如果是精简版CentOS系统需要安装locate命令

    使用实例:

    updatedb
    locate /etc/sh 搜索etc目录下所有以sh开头的文件 
    locate pwd 查找和pwd相关的所有文件

    5.4 whereis

    whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。

    使用实例:

    whereis ls    将和ls文件相关的文件都查找出来

    5.5 which

    which命令的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。

    使用实例:

    which pwd  查找pwd命令所在路径 
    which java  查找path中java的路径 

    六、su、sudo

    6.1 su

    su用于用户之间的切换。但是切换前的用户依然保持登录状态。如果是root 向普通或虚拟用户切换不需要密码,反之普通用户切换到其它任何用户都需要密码验证。

    su test:切换到test用户,但是路径还是/root目录
    su - test : 切换到test用户,路径变成了/home/test
    su : 切换到root用户,但是路径还是原来的路径
    su - : 切换到root用户,并且路径是/root

    su不足:如果某个用户需要使用root权限、则必须要把root密码告诉此用户。

    退出返回之前的用户:exit

    6.2 sudo

    sudo是为所有想使用root权限的普通用户设计的。可以让普通用户具有临时使用root权限的权利。只需输入自己账户的密码即可。

    进入sudo配置文件命令:

    vi /etc/sudoer或者visudo
    案例:
    允许hadoop用户以root身份执行各种应用命令,需要输入hadoop用户的密码。
    hadoop  ALL=(ALL)   ALL 
    
    案例:
    只允许hadoop用户以root身份执行ls 、cat命令,并且执行时候免输入密码。 
    配置文件中: 
    hadoop  ALL=NOPASSWD:  /bin/ls, /bin/cat 

    七、系统服务

    service iptables status  --查看iptables服务的状态
    service iptables start  --开启iptables服务
    service iptables stop  --停止iptables服务
    service iptables restart  --重启iptables服务
    
    chkconfig iptables off  --关闭iptables服务的开机自启动
    chkconfig iptables on  --开启iptables服务的开机自启动

    八、网络管理

    8.1 主机名配置

    [root@node1 ~]# vi /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=node1

    8.2 IP 地址配置

    [root@node1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

    8.3 域名映射

    /etc/hosts文件用于在通过主机名进行访问时做ip地址解析之用。所以,你想访问一个什么样的主机名,就需要把这个主机名和它对应的ip地址。

    [root@node1 ~]# vi /etc/hosts
    #### 在最后加上
    192.168.52.201  node1
    192.168.52.202  node2
    192.168.52.203  node3

    九、定时任务指令crontab 配置

    crontab是Unix和Linux用于设置定时任务的指令。通过crontab命令,可以在固定间隔时间,执行指定的系统指令或shell脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。

    crontab安装:

    yum install crontabs

    服务操作说明:

    service crond start   ## 启动服务 
    service crond stop    ## 关闭服务 
    service crond restart ## 重启服务

    9.1 命令格式

    crontab [-u user] file

    crontab [-u user] [ -e | -l | -r ]

    参数说明:

    -u user:用来设定某个用户的crontab服务  

    file:file是命令文件的名字,表示将file做为crontab的任务列表文件

    并载入crontab。

    -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前

    用户的crontab文件。

    -l:显示某个用户的crontab文件内容。如果不指定用户,则表示显示当前

    用户的crontab文件内容。

    -r:删除定时任务配置,从/var/spool/cron目录中删除某个用户的crontab

    文件,如果不指定用户,则默认删除当前用户的crontab文件。

    命令示例:

    crontab file [-u user] ## 用指定的文件替代目前的crontab
    crontab -l [-u user]  ## 列出用户目前的crontab
    crontab -e [-u user]  ## 编辑用户目前的crontab

    9.2 配置说明、实例

    命令:*   *    *   *   *   command  

    解释:分  时  日  月  周  命令

    第1列表示分钟1~59 每分钟用*或者 */1表示    

    第2列表示小时0~23(0表示0点)

    第3列表示日期1~31  

    第4列表示月份1~12  

    第5列标识号星期0~6(0表示星期天)  

    第6列要运行的命令

    配置实例:

    先打开定时任务所在的文件:
    crontab -e
    
    每分钟执行一次date命令 
    */1 * * * * date >> /root/date.txt
    
    每晚的21:30重启apache。 
    30 21 * * * service httpd restart
    
    每月1、10、22日的4 : 45重启apache。  
    45 4 1,10,22 * * service httpd restart
    
    每周六、周日的1 : 10重启apache。 
    10 1 * * 6,0 service httpd restart
    
    每天18 : 00至23 : 00之间每隔30分钟重启apache。
    0,30   18-23    *   *   *   service httpd restart
    晚上11点到早上7点之间,每隔一小时重启apache
    *  23-7/1    *   *   *   service httpd restart

    十、其他命令

    10.1 查看当前目录:pwd

    命令:pwd     查看当前目录路径

    10.2 查看进程:ps -ef

    命令:ps -ef    查看所有正在运行的进程

    10.3 结束进程:kill

    命令:kill pid 或者 kill -9 pid(强制杀死进程)           pid:进程号

    10.4 网络通信命令:

    ifconfig:查看网卡信息

    命令:ifconfig 或 ifconfig | more

    ping:查看与某台机器的连接情况

    命令:ping ip

    netstat -an:查看当前系统端口

    命令:netstat -an

    搜索指定端口
    命令:netstat -an | grep 8080

    10.5 配置网络

    命令:setup

    10.6 重启网络

    命令:service network restart

    10.7 切换用户

    命令:su - 用户名

    10.8 关闭防火墙

    命令:chkconfig iptables off

    或者:

     iptables -L;
     iptables -F;
     service iptables stop

    10.9 修改文件权限

    命令:chmod 777

    10.10 清屏

    命令:ctrl + l

    10.11 vi模式下快捷键

    esc后:

    保存并退出快捷键:shift+z+z

    光标跳到最后一行快捷键:shift+g

    删除一行:dd

    复制一行内容:y+y

    粘贴复制的内容:p

    十一、Linux项目部署

    11.1 安装jdk1.8

    先卸载open-jdk

    java -version
    rpm -qa | grep java

    rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
    rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

    开始安装:
    mkdir /usr/local/src/java
    rz 上传jdk tar包
    tar -zxvf jdk-8u181-linux-x64.tar.gz

    yum install glibc.i686

    配置环境变量:
     vi /etc/profile

     在末尾行添加
      #set java environment
      JAVA_HOME=/usr/local/src/jdk8/jdk1.8.0_181
      CLASSPATH=.:$JAVA_HOME/lib.tools.jar
      PATH=$JAVA_HOME/bin:$PATH
      export JAVA_HOME CLASSPATH PATH
      
    保存退出
    source /etc/profile  使更改的配置立即生效
    java -version  查看JDK版本信息,如果显示出1.8证明成功

    11.2 安装MySQL5.6

    11.2.1 上传MySQL5.6的tar包

    创建目录:mkdir /usr/local/src/mysql5.6

    上传:MySQL-5.6.34-1.rhel5.x86_64.rpm-bundle.tar 到上面的目录中

    11.2.2 安装

    第一步:解压

         命令:tar -xvf MySQL-5.6.34-1.rhel5.x86_64.rpm-bundle.tar

    第二步:检测是否已经安装了mysql

         命令:rpm -qa | grep mysql   

         如果已经安装了,将其卸载,如:

         rpm -e --nodeps  mysql-libs-5.1.71-1.el6.x86_64

    第三步:安装MySQL的服务端

         命令:rpm -ivh MySQL-server-5.6.34-1.rhel5.x86_64.rpm

    第四步:安装MySQL的客户端

         命令:rpm -ivh MySQL-client-5.6.34-1.rhel5.x86_64.rpm

    第五步:查看MySQL服务运行状态

         命令:service mysql status

    第六步:启动MySQL服务

         命令:service mysql start

    第七步:使用root账号登录mysql

    在安装mysql server时有句提示:

    注意:这个密码是不安全的,所有需要修改初始密码。

    1. 使用密码登录mysql账号:mysql -uroot -p
    2. 修改root密码:SET PASSWORD = PASSWORD('root');

    11.2.3 开机自动启动设置

    加入到系统服务:

    chkconfig --add mysql

    自动启动:

    chkconfig mysql on

    查询列表:

    chkconfig

    说明:都没关闭(off)时是没有自动启动。

    11.2.4 开启远程访问

    登录:

    mysql -uroot –proot

    设置远程访问(使用root密码):

    grant all privileges on *.* to 'root' @'%' identified by 'root';

    flush privileges;

    退出mysql,在centos环境下打开3306防火墙

    /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

    /etc/rc.d/init.d/iptables save

    /etc/init.d/iptables status

    11.3 安装tomcat部署项目

    准备工作:将web项目打成war包,改名为ROOT.war

    11.3.1 创建ucenter用户

    一般情况下,发布应用程序都不是使用root用户的,需要创建一个普通用户来发布程序;

    创建ucenter用户:

    useradd -d /ucenter ucenter

    设置密码:

    passwd ucenter (密码 ucenter)

    切换用户:

    su - ucenter

    11.3.2 安装Tomcat

    tomcat只要解压就可以使用。

    1、创建web目录
    mkdir /ucenter/web

    2、上传apache-tomcat-7.0.57.tar.gz

    3、解压:tar -xvf apache-tomcat-7.0.57.tar.gz

    4、重命名:mv apache-tomcat-7.0.57 itcast-usermanage

    5、启动tomcat:
         cd itcast-usermanage/bin/
         ./startup.sh 或者 sh startup.sh

    6、查看日志:
         tail -f ../logs/catalina.out

    7、查看效果 http://192.168.0.160:8080/

    发现无法访问:

    8、防火墙打开 8080 端口
         /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

         /etc/rc.d/init.d/iptables save

    9、安装成功

    11.3.3 部署用户管理项目

    1、上传usermanage.sql和ROOT.war到/ucenter/web

    2、执行数据库脚本

         cat user_manager.sql | mysql -uroot -p123456

    3、部署web程序

    3.1 删除webapps下的所有文件

         cd /ucenter/web/usermanage/webapps

         rm -rf *

    3.2 拷贝ROOT.war到webapps

         cp /ucenter/web/ROOT.war .

    3.3 重新启动tomcat

         cd ../bin/

         sh startup.sh && tail -f ../logs/catalina.out

    3.4 启动浏览器测试

    注意事项:Centos环境下部署项目中文乱码问题解决方案

        今天在一台新的CentOS机器上使用c3p0连接池操作mysql数据库出现中文乱码问题,具体表现为:查询时无中文乱码问题,写数据时中文乱码,查看了机器上数据库字符集也是UTF8,应该不会出现中文乱码才对,最后在c3p0配置文件中 jdbcUrl后加上:?useUnicode=true&characterEncoding=UTF8 中文就不会乱码了。

    【C3P0配置文件】

    <?xml version="1.0" encoding="UTF-8"?>
    <c3p0-config>
      <default-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
    	<property name="jdbcUrl">jdbc:mysql://localhost:3306/user_manager_yun6?useUnicode=true&amp;characterEncoding=UTF8 </property>
    	<property name="user">root</property>
    	<property name="password">root</property>
    	<property name="acquireIncrement">2</property>
    	<property name="initialPoolSize">5</property>
    	<property name="minPoolSize">1</property>
    	<property name="maxPoolSize">5</property>
      </default-config>
    </c3p0-config>

    11.4 Linux下使用FastDFS

    相关的安装包我打包到云盘上了,链接:https://pan.baidu.com/s/13NDYYil4mgLhkb5CYsc2Ww  提取码:66tn

    单节点FastDFS

    整个安装过程非常复杂,很容易出错,建议进行多次备份。

    我们这里不打算安装多台虚拟机,因此会把tracker和storage都安装在一起。

    11.4.1 安装gcc

    GCC用来对C语言代码进行编译运行,使用yum命令安装:

    yum -y install gcc

    后面会用到解压命令(unzip),所以这里可以用yum把unzip 也装一下

    yum install -y unzip zip

    11.4.2 安装libevent

    yum -y install libevent

    11.4.3 安装libfastcommon-master

    解压刚刚上传的libfastcommon-master.zip
    unzip libfastcommon-master.zip

    进入解压完成的目录
    cd libfastcommon-master

    编译并且安装:
    ./make.sh 
    ./make.sh install

    11.4.4 安装fastdfs

    tar -zxvf FastDFS_v5.08.tar.gz
    cd FastDFS
    ./make.sh
    ./make.sh install

    如果安装成功,会看到/etc/init.d/下看到提供的脚本文件:

    ll /etc/init.d/ | grep fdfs

    • fdfs_trackerd 是tracker启动脚本

    • fdfs_storaged 是storage启动脚本

    能够在 /etc/fdfs/ 目录下看到默认的配置文件模板:

    ll /etc/fdfs/

    • tarcker.conf.sample 是tracker的配置文件模板

    • storage.conf.sample 是storage的配置文件模板

    • client.conf.sample 是客户端的配置文件模板

    11.4.5 配置并启动tracker服务

    1)首先将模板文件复制

    cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

    2)修改复制后的配置文件:

    vim /etc/fdfs/tracker.conf 

    # 修改的内容如下:

    base_path=/项目名/tracker                 # 存储日志和数据的根目录

    3)新建目录:

    mkdir -p /项目名/tracker

    注意:关闭防火墙:

    chkconfig iptables off

    4)启动和停止

    service fdfs_trackerd start # 启动fdfs_trackerd服务,停止用stop

    检查FastDFS Tracker Server是否启动成功:

    ps -ef | grep fdfs_trackerd

    设置tracker服务开机启动:

    chkconfig fdfs_trackerd on

    11.4.6 配置并启动storage服务

    1)首先将模板文件复制

    cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

    2)修改复制后的配置文件:

    vim /etc/fdfs/storage.conf

    # 修改的内容如下:

    base_path=/项目名/storage                 # 数据和日志文件存储根目录 
    
    store_path0=/项目名/storage           # 第一个存储目录 
    
    tracker_server=192.168.56.101:22122       #  tracker服务器IP和端口 

    3)新建目录:

    mkdir -p /项目名/storage

    注意关闭防火墙: chkconfig iptables off

    4)启动和停止

    service fdfs_storaged start  # 启动fdfs_storaged服务,停止用stop

    设置storage服务开机启动:

    chkconfig fdfs_storaged on

    ps -ef | grep fdfs

    11.5 安装fastdfs-nginx-module

    11.5.1 解压

    tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

    11.5.2 修改config

    1)进入src目录

    cd fastdfs-nginx-module/src/

    2)编辑config

    vim config

    使用以下底行命令:

    :%s+/usr/local/+/usr/+g

    将所有的/usr/local替换为 /usr,这个才是正确的目录:

    11.5.3 配置nginx与FastDFS关联配置文件

    复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录, 并修改

    cp /usr/local/项目名/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
    
    vi /etc/fdfs/mod_fastdfs.conf

    修改以下配置:

    connect_timeout=10                       # 客户端访问文件连接超时时长(单位:秒)
    
    tracker_server=192.168.56.101:22122    # tracker服务IP和端口
    
    url_have_group_name=true                # 访问链接前缀加上组名
    
    store_path0=/leyou/storage            # 文件存储路径

    复制 FastDFS 的部分配置文件到/etc/fdfs 目录

    cd /usr/local/项目名/FastDFS/conf/
    cp http.conf mime.types /etc/fdfs/

    11.6 安装Nginx的插件

    11.6.1 如果没有安装过nginx

    1、安装nginx的依赖库

    yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

    2、解压安装包

    tar -zxvf nginx-1.10.0.tar.gz

    3、配置nginx安装包,并指定fastdfs-nginx-model

    cd nginx-1.10.0
    
    ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/usr/local/leyou/fastdfs-nginx-module/src

    注意:在执行./configure配置nginx参数的时候,需要将fastdfs-nginx-moudle源码作为模块编译进去。

    4、编译并安装

    make && make install

    11.6.2 如果已经安装过nginx

    1、 进入nginx目录:

    cd /usr/local/项目名/nginx-1.10.0/

    2、 配置FastDFS 模块

    ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/usr/local/项目名/fastdfs-nginx-module/src

    注意:这次配置时,要添加fastdfs-nginx-moudle模块

    3、编译,注意,这次不要安装(install)

    make

    4、替换nginx二进制文件:

    备份:

    mv /usr/bin/nginx /usr/bin/nginx-bak

    用新编译的nginx启动文件替代原来的:

    cp objs/nginx /usr/bin/

    11.6.3 启动nginx

    配置nginx整合fastdfs-module模块

    我们需要修改nginx配置文件,在/opt/nginx/config/nginx.conf文件中:

    vim  /opt/nginx/conf/nginx.conf

    将文件中,原来的server 80{ ...} 部分代码替换为如下代码:

    server {
        listen       80;
        server_name  image.项目名.com;
    	# 监听域名中带有group的,交给FastDFS模块处理
        location ~/group([0-9])/ {
            ngx_fastdfs_module;
        }
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    启动nginx:

    nginx	# 启动nginx
    
    nginx -s stop	# 停止nginx
    
    nginx -s reload	# 重新载入配置文件

    # 可通过ps -ef | grep nginx查看nginx是否已启动成功

    11.6.4 设置nginx开机启动

    创建一个开机启动的脚本:

    vim /etc/init.d/nginx

    添加以下内容:

    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemon
    #
    # chkconfig:   - 85 15
    # description:  NGINX is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /etc/nginx/nginx.conf
    # config:      /etc/sysconfig/nginx
    # pidfile:     /var/run/nginx.pid
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    
    nginx="/usr/bin/nginx"
    prog=$(basename $nginx)
    
    NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
    
    [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
    
    lockfile=/var/lock/subsys/nginx
    
    make_dirs() {
       # make required directories
       user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
       if [ -n "$user" ]; then
          if [ -z "`grep $user /etc/passwd`" ]; then
             useradd -M -s /bin/nologin $user
          fi
          options=`$nginx -V 2>&1 | grep 'configure arguments:'`
          for opt in $options; do
              if [ `echo $opt | grep '.*-temp-path'` ]; then
                  value=`echo $opt | cut -d "=" -f 2`
                  if [ ! -d "$value" ]; then
                      # echo "creating" $value
                      mkdir -p $value && chown -R $user $value
                  fi
              fi
           done
        fi
    }
    
    start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        make_dirs
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
    }
    
    restart() {
        configtest || return $?
        stop
        sleep 1
        start
    }
    
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $nginx -HUP
        RETVAL=$?
        echo
    }
    
    force_reload() {
        restart
    }
    
    configtest() {
      $nginx -t -c $NGINX_CONF_FILE
    }
    
    rh_status() {
        status $prog
    }
    
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
    
    case "$1" in
        start)
            rh_status_q && exit 0
            $1
            ;;
        stop)
            rh_status_q || exit 0
            $1
            ;;
        restart|configtest)
            $1
            ;;
        reload)
            rh_status_q || exit 7
            $1
            ;;
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            rh_status_q || exit 0
                ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
            exit 2
    esac

    修改文件权限,并加入服务列表

    # 修改权限
    chmod 777 /etc/init.d/nginx 
    # 添加到服务列表
    chkconfig --add /etc/init.d/nginx 

    设置开机启动

    chkconfig nginx on

    11.7 安装Elasticsearch

    需要虚拟机JDK1.8及以上

    11.7.1 新建一个用户leyou

    出于安全考虑,elasticsearch默认不允许以root账号运行。

    创建用户:

    useradd leyou

    设置密码:

    passwd leyou

    切换用户:

    su - leyou

    11.7.2 上传安装包,并解压

    我们将安装包上传到:/home/leyou目录

    解压缩:

    tar -zxvf elasticsearch-6.2.4.tar.gz

    我们把目录重命名:

    mv elasticsearch-6.3.0/ elasticsearch

    进入,查看目录结构:

    11.7.3 修改配置

    我们进入config目录:cd config

    需要修改的配置文件有两个:

    1、jvm.options

    Elasticsearch基于Lucene的,而Lucene底层是java实现,因此我们需要配置jvm参数。

    编辑jvm.options:

    vim jvm.options

    默认配置如下:

    -Xms1g
    -Xmx1g

    内存占用太多了,我们调小一些:

    -Xms512m
    -Xmx512m

    2、elasticsearch.yml

    vim elasticsearch.yml

    修改数据和日志目录:

    path.data: /home/leyou/elasticsearch/data # 数据目录位置
    path.logs: /home/leyou/elasticsearch/logs # 日志目录位置

    我们把data和logs目录修改指向了elasticsearch的安装目录。但是这两个目录并不存在,因此我们需要创建出来。

    进入elasticsearch的根目录,然后创建:

    mkdir data
    mkdir logs

    修改绑定的ip:

    network.host: 0.0.0.0 # 绑定到0.0.0.0,允许任何ip来访问

    默认只允许本机访问,修改为0.0.0.0后则可以远程访问

    11.7.4 运行

    进入elasticsearch/bin目录,可以看到下面的执行文件:

    然后输入命令:

    ./elasticsearch

    或者后台运行:

    ./elasticsearch -d

    11.7.5 错误1:内核过低

    修改elasticsearch.yml文件,在最下面添加如下配置: 然后重启

    bootstrap.system_call_filter: false

    11.7.6 错误2:文件权限不足

    我们用的是leyou用户,而不是root,所以文件权限不足。

    首先用root用户登录。直接输入exit命令

    然后修改配置文件:

    vim /etc/security/limits.conf

    添加下面的内容:

    * soft nofile 65536
    
    * hard nofile 131072
    
    * soft nproc 4096
    
    * hard nproc 4096

    11.7.7 错误3:线程数不够

    [1]: max number of threads [1024] for user [leyou] is too low, increase to at least [4096]

    继续修改配置:

    vim /etc/security/limits.d/90-nproc.conf 

    修改下面的内容:

    * soft nproc 1024

    改为

    * soft nproc 4096

    11.7.8 错误4:进程虚拟内存

    [3]: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

    vm.max_map_count:限制一个进程可以拥有的VMA(虚拟内存区域)的数量,继续修改配置文件, :

    vim /etc/sysctl.conf 

    添加下面内容:

    vm.max_map_count=655360

    然后执行命令:

    sysctl -p

    11.7.9 重启终端窗口

    所有错误修改完毕,一定要重启你的 Xshell终端,否则配置无效。

    11.8 安装RabbitMQ

    cd /usr/local/myapp
    
    mkdir rabbitmq
    
    cd rabbitmq
    

    11.8.1 安装Erlang

    1、在线安装

    yum install esl-erlang_17.3-1~centos~6_amd64.rpm
    
    yum install esl-erlang-compat-R14B-1.el6.noarch.rpm

    2、离线安装

    依次执行命令:

    1)rpm -ivh esl-erlang-17.3-1.x86_64.rpm --force --nodeps

    2)rpm -ivh esl-erlang_17.3-1~centos~6_amd64.rpm --force --nodeps

    3)rpm -ivh esl-erlang-compat-R14B-1.el6.noarch.rpm --force --nodeps

    11.8.2 安装RabbitMQ

    安装:

    rpm -ivh rabbitmq-server-3.4.1-1.noarch.rpm

    11.8.3 设置配置文件

    cp /usr/share/doc/rabbitmq-server-3.4.1/rabbitmq.config.example
    /etc/rabbitmq/rabbitmq.config

    开启用户远程访问

    vi /etc/rabbitmq/rabbitmq.config

    注意要去掉后面的逗号。

    11.8.4 启动、停止

    service rabbitmq-server start
    
    service rabbitmq-server stop
    
    service rabbitmq-server restart

    11.8.5 开启web界面管理工具

    rabbitmq-plugins enable rabbitmq_management
    
    service rabbitmq-server restart

    11.8.6 设置开机启动

    chkconfig rabbitmq-server on

    11.8.7 防火墙开放15672端口

    /sbin/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
    
    /etc/rc.d/init.d/iptables save

    11.9 redis安装和配置

    11.9.1 安装

    解压

    tar -xvf redis-4.0.9.tar.gz

    编译安装

     mv redis-4.0.9 redis
     cd redis
     make && make install

    11.9.2 配置

    修改安装目录下的redis.conf文件

    vim redis.conf

    修改以下配置:

    #bind 127.0.0.1 # 将这行代码注释,监听所有的ip地址,外网可以访问
    protected-mode no # 把yes改成no,允许外网访问
    daemonize yes # 把no改成yes,后台运行

    11.9.3 启动或停止

    redis提供了服务端命令和客户端命令:

    • redis-server 服务端命令,可以包含以下参数: start 启动 stop 停止

    • redis-cli 客户端控制台,包含参数: -h xxx 指定服务端地址,缺省值是127.0.0.1 -p xxx 指定服务端端口,缺省值是6379

    11.9.4 设置开机启动

    1) 输入命令,新建文件

    vim /etc/init.d/redis

    输入下面内容:

    #!/bin/sh
    # chkconfig:   2345 90 10
    # description:  Redis is a persistent key-value database
    PATH=/usr/local/bin:/sbin:/usr/bin:/bin
    
    REDISPORT=6379
    EXEC=/usr/local/bin/redis-server
    REDIS_CLI=/usr/local/bin/redis-cli
    
    PIDFILE=/var/run/redis.pid
    
    CONF="/usr/local/leyou/redis/redis.conf"
    
    case "$1" in  
        start)  
            if [ -f $PIDFILE ]  
            then  
                    echo "$PIDFILE exists, process is already running or crashed"  
            else  
                    echo "Starting Redis server..."  
                    $EXEC $CONF  
            fi  
            if [ "$?"="0" ]   
            then  
                  echo "Redis is running..."  
            fi  
            ;;  
        stop)  
            if [ ! -f $PIDFILE ]  
            then  
                    echo "$PIDFILE does not exist, process is not running"  
            else  
                    PID=$(cat $PIDFILE)  
                    echo "Stopping ..."  
                    $REDIS_CLI -p $REDISPORT SHUTDOWN  
                    while [ -x ${PIDFILE} ]  
                   do  
                        echo "Waiting for Redis to shutdown ..."  
                        sleep 1  
                    done  
                    echo "Redis stopped"  
            fi  
            ;;  
       restart|force-reload)  
            ${0} stop  
            ${0} start  
            ;;  
      *)  
        echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2  
            exit 1  
    esac

    然后保存退出

    注意:以下信息需要根据安装目录进行调整:

    EXEC=/usr/local/bin/redis-server # 执行脚本的地址

    REDIS_CLI=/usr/local/bin/redis-cli # 客户端执行脚本的地址

    PIDFILE=/var/run/redis.pid # 进程id文件地址

    CONF="/usr/local/src/redis-3.0.2/redis.conf" #配置文件地址

    2)设置权限

    chmod 755 /etc/init.d/redis

    3)启动测试

    /etc/init.d/redis start

    启动成功会提示如下信息:

    Starting Redis server...
    Redis is running...

    4)设置开机自启动

    chkconfig --add /etc/init.d/redis
    chkconfig redis on

     

    展开全文
  • 文章目录linux 系统命令总结大全关于作者**作者介绍**0.IP 地址相关命令0.1 ifconfig 命令 ---显示网络设备信息02.ip 命令 ---显示与操作路由03.dhclient 命令 --- 动态获取或释放IP地址04.nmtui ---界面修改网卡...

    文章目录

    linux 系统命令总结大全

    关于作者

    • 作者介绍


      📣 博客主页作者主页
      📣 简介

      云计算领域优质创作者🏆、学长的it故事 公众号创作者👱、在校期间参与众多计算机先关的校赛、省赛、国赛,斩获系列奖项。2019年考取华为资深工程师、红帽工程师等系列认证。

      📣 关注我简历模板、学习资料、文档下载、技术支持


    前言

    ​ 今天呢,下了很大的决心,准备将linux命令做一个真正的总结、因为之前看了很多linux 命令先关的文章,都不全,所以,博主将这两年沉淀下来的技术,通过自己的理解,将基础命令、常用的都整理出来,对初学者或者linux 爱好者都有一定的作用,偶尔可以翻翻,查下基础命令。

    ​ 后续呢,博主将分享dockerk8skvm负载均衡高可用等高级技术。

    0.IP 地址相关命令

    0.1 ifconfig 命令 —显示网络设备信息

    • 案例演示

      # 启动/关闭指定网卡
      [root@web_server01~]# ifconfig eth1 down
      [root@web_server01~]# ifconfig eth1 up
      
      # 临时设置ip 地址
      [root@web_server01~]# ifconfig eth0 192.168.1.100 
      [root@web_server01~]# ifconfig eth0 192.168.1.100 netmask 255.255.255.0
      [root@web_server01~]# ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.254
      
      # 删除临时IP 地址
      [root@web_server01~]# ifconfig eth0 del 192.168.1.100 netmask 255.255.255.0
      
      
      

    02.ip 命令 —显示与操作路由

    • 案例演示

      # 用ip命令显示网络设备的运行状态:
      [root@web_server01~]# ip link list
      
      #显示核心路由
      [root@web_server01~]# ip route list
      [root@web_server01~]# ip route show
      
      # 查看eht0 网卡信息(--> ip a)
      [root@web_server01~]# ip address show eth0
      
      
      

    03.dhclient 命令 — 动态获取或释放IP地址

    • 案例演示

      # 在指定网络接口上发出DHCP请求:
      [root@web_server01~]# dhclient eth0
      
      # 从指定的服务器获取ip地址
      [root@web_server01~]# dhclient -s 10.0.0.7
      
      # 释放IP地址:
      [root@web_server01~]# dhclient -r
      
      # 停止运行dhclient:
      [root@web_server01~]# dhclient -x
      
      

    04.nmtui —界面修改网卡地址信息

    • 案例演示

      [root@web_server01~]# nmtui
      

    05.nmcli 命令 — 设置ip地址

    • 案例演示

      #显示所有连接的列表:
      [root@web_server01~]# nmcli con show
      
      # 查看接口信息:
      [root@web_server01~]#nmcli device show 
      
      # 定义一个名字为default的新连接,它将使用DHCP通过eth0设备的以太网自动连接 :
      [root@web_server01~]# nmcli con add con-name "default" type ethernet ifname  eth0  
      
      #关闭自动连接:
      [root@web_server01~]# nmcli connection modify "static" connection.autoconnect  no  
      
      # 添加DNS:
      [root@web_server01~]# nmcli connection modify team0 ipv4.dns 8.8.8.8 
      

    1.文件目录命令

    1.1 ls 命令 --显示目录下的内容

    • 案例演示

      list=ls      查看文件或目录是否存在
      
      #文件或目录路径信息
      [root@web_server01~]# ls
      
      # 显示目录信息
      [root@web_server01~]# ll -d rivers/
      drwxr-xr-x 2 root root 6 Sep 11 22:59 rivers/
      
      #查看数据的属性信息(-->ll 命令)
      [root@web_server01~]# ls -l apache-tomcat-9.0.52.tar.gz 
      -rw-r--r-- 1 root root 11524133 Jul 31 12:22 apache-tomcat-9.0.52.tar.gz
      
      # 查看目录中隐藏文件
      [root@web_server01~]# ls -a      
      
      #将目录中的信息按照时间进行排序显示
      [root@web_server01~]# ls -lt
           
      #按照时间信息,进行反向排序
      [root@web_server01~]# ls -ltr    
      
      #显示的数据信息大小,以人类可读方式显示
      [root@web_server01~]# ls -lh
      total 11M
      -rw-------. 1 root root 1.7K Aug 23 15:38 anaconda-ks.cfg
      -rw-r--r--  1 root root  11M Jul 31 12:22 apache-tomcat-9.0.52.tar.gz
      drwxr-xr-x  2 root root    6 Sep 11 22:59 rivers
      
      

    1.2 cd 命令 —切换目录命令

    • 案例演示

      # change directory==cd   切换目录命令
          cd /xxx   绝对
      	cd xxx    相对
      	cd ..     上一级
      	cd ../../ 上多级
      	cd -      返回上一次所在路径
      	cd/cd ~   返回到用户家目录
      	
      [root@web_server01~]# cd /usr/local/
      [root@web_server01/usr/local]# cd ..
      [root@web_server01/usr]# cd ../../
      [root@web_server01/]# cd --
      [root@web_server01~]# 
      [root@web_server01~]# cd hbs/
      
      	
      

    1.3 cp 命令—复制文件或目录

    • 案例演示

      # 常用方式
      cp                  复制文件或目录数据到其他目录中
      cp -r               递归复制目录数据
      \cp                 强行覆盖数据
      	
      
      #复制目录:将rivers目录移动到/opt目录
      [root@web_server01~]# cp -R rivers/ /opt/
      
      #将文件test1改名为test2: -f 没有提示。 或者 \cp 
      [root@linuxcool ~]# cp -f test1 test2
      
      #复制多个文件:(将1.txt、2.txt、3.txt 复制到/opt/rivers)
      [root@web_server01~]# touch {1..3}.txt  # 创建3个文本
      [root@web_server01~]# cp 1.txt 2.txt 3.txt /opt/rivers/
      
      #交互式地将目录 /opt/rivers/ 中的所有.txt文件复制到目录 /root 中:
      [root@web_server01~]# cp /opt/rivers/*.txt /root/
      cp: overwrite ‘/root/1.txt’? y
      cp: overwrite ‘/root/2.txt’? y
      cp: overwrite ‘/root/3.txt’? y
      
      这里没有加参数 f ,就会有提示
      
      

    1.4 mkdir —创建目录

    • 案例演示

      make directory=mkdir   创建目录
      mkdir -p 多级目录 
      
      #在工作目录下,建立一个名为 rivers02 的子目录:
      [root@web_server01~]# mkdir rivers02
      
      # 在目录root/rivers02/下建立子目录hbs,并且设置文件属主有读、写和执行权限,其他人无权访问
      [root@web_server01~]# mkdir -m 700  /root/rivers02/hbs 
      
      # 同时创建子目录a1,b1,c1:
      [root@web_server01~/rivers]# mkdir a1 b1 c1
      [root@web_server01~/rivers]# ls
      a1  b1  c1
      [root@web_server01~/rivers]# 
      
      # 创建多级目录/忽略错误提示(递归创建目录 -p)
      [root@web_server01~]# mkdir -p /a/b/c
      
      

    1.5 rmdir 命令 — 删除空目录

    • 案例演示

      # 删除目录
      [root@web_server01~/rivers]# ls
      a1  b1  c1
      [root@web_server01~/rivers]# rmdir a1 b1 c1
      
      

    1.6 tree 命令 —查看目录结构

    • 案例演示

      [root@web_server01~/rivers02]# mkdir xixi
      [root@web_server01~/rivers02]# mkdir heihei
      
      # 只显示n层目录(n为数字):
      [root@web_server01~/rivers02]# tree -L 1
      .
      ├── hbs
      ├── heihei
      └── xixi
      
      
      # 用文件和目录的更改时间排序:
      
      [root@web_server01~/rivers02]# tree -t
      .
      ├── heihei        
      ├── xixi
      └── hbs
      
      以相反次序排序:
      [root@web_server01~/rivers02]# tree -r
      .
      ├── xixi
      ├── heihei
      └── hbs
      
      # 在每个文件或目录之前,显示完整的相对路径:
      
      [root@web_server01~/rivers02]# tree -f
      .
      ├── ./hbs
      ├── ./heihei
      └── ./xixi
      
      # 只显示目录:
      [root@web_server01~/rivers02]# tree -d
      .
      ├── hbs
      ├── heihei
      └── xixi
      
      #显示所有文件和目录:
      [root@web_server01~/rivers02]# tree -a
      .
      ├── hbs
      ├── heihei
      └── xixi
      
      

    1.7 mv 命令 — 移动或改名文件

    • 案例演示

      # 常用参数
      -i	若存在同名文件,则向用户询问是否覆盖
      -f	覆盖已有文件时,不进行任何提示
      -b	当文件存在时,覆盖前为其创建一个备份
      -u
      当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作
      
      # 将 1.txt 重命名 100.php
      [root@web_server01~]# mv 1.txt 100.php
      
      # 将 2.txt 移动到 /opt
      [root@web_server01~]# mv 2.txt /opt/
      
      # 将目录hbs移动目录rivers中(前提是目录hbs已存在,若不存在则改名):
      [root@web_server01~]# mv hbs/ /root/rivers
      
      # 将./rivers/hbs/目录下的文件移动到当前目录下:
      [root@web_server01~]# mv ./rivers/hbs/* .
      
      

    1.8 pwd 命令 — 显示当前路径

    • 案例演示

      # 查看当前工作目录路径:
      [root@web_server01~/rivers02]# pwd
      /root/rivers02
      

    2.文本编辑命令

    2.1 cat 命令 —显示文件内容

    • 案例演示

      #查看文件的内容:
      [root@nginx-server~]# cat lan.txt 
      world 
      hello world
      hello
      [root@nginx-server~]# 
      
      
      #查看文件的内容,并显示行数编号:
      [root@nginx-server~]# cat -n lan.txt 
           1	world 
           2	hello world
           3	hello
      [root@nginx-server~]# 
      
      #查看文件的内容,并输出到另外一个文件中:
      [root@nginx-server~]# cat -n lan.txt  > ndy.txt
      [root@nginx-server~]# cat ndy.txt 
           1	world 
           2	hello world
           3	hello
      [root@nginx-server~]# 
      # 清空文件的内容:
      [root@nginx-server~]# cat /dev/null > /root/ndy.txt 
      [root@nginx-server~]# cat ndy.txt 
      
      
      # 持续写入文件内容,碰到EOF符后结束并保存:
      [root@nginx-server~]# cat > index.html <<EOF
      > ni daye de
      > EOF
      [root@nginx-server~]#
      

    2.2 vi/vim 命令 —修改配置文件

    • 案例演示

      # 命令行模式
      命令模式-->插入模式
      	i   --- 表示从光标所在位置进入编辑状态    
      	I   --- 表示将光标移动到一行的行首,再进入编辑状态
      	o   --- 在光标所在行的下面,新起一行进行编辑
      	O   --- 在光变所在行的上面,新起一行进行编辑
      	a   --- 将光标移动到右边的下一个字符,进行编辑
      	A   --- 将光标移动到一行的行尾,进入到编辑状态
      	C   --- 将光标到行尾内容进行删除,并进入编辑状态
      	cc  --- 将整行内容进行删除并进入编辑状态
      	
      	大写字母G   将光标快速切换尾部
      	小写字母gg  将光标快速切换首部
      	ngg         n表示移动到第几行
      	$           将光标移动到一行的结尾
      	0/^         将光标移动到一行的行首
      
      # 末行模式
      :wq --- 保存并退出
      :w
      :q
      :wq!--- 强制保存退出
      :q! --- 强制退出
      
      # 快速删除命令
      d$:表示删除当前光标所在位置到行尾的内容
      d^:表示删除当前光标所在位置到第一个行首非空白字符位置的内容
      dd:删除当前光标所在行整行
      5dd:删除包括当前光标所在行在内的5行
      %d: 表示全部删除
      
      # 使用技巧
      将一行内容进行删除(剪切)   	deletedelete=dd
      将多行内容进行删除(剪切)   	3dd
      将内容进行粘贴                 	p
      粘贴多次内容                   	3p
      复制一行内容                   yy
      复制多行内容                   3yy	
      操作错误如何还原     	       小写字母u  undo
      ------------------------------------------------
      
      ctrl +v         选中想选的,然后shift+d 批量删除
      ctrl +v          选中想选的,然后shift+i,输入# ,然后按2次esc 批量注释
      ctrl +v          选中想选的,然后d ,批量取消注释。
      

    2.3 touch 命令 --创建文件、修改访问时间

    • 案例演示

      # 创建空文件
      [root@web_server01~]# touch lan.txt
      
      # 批量创建文件
      [root@web_server01~]# touch {1..2}.txt
      
      # 修改访问时间
      [root@web_server01~]# stat 1.txt                # 查看访问时间
        File: ‘1.txt’
        Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
      Device: 803h/2051d	Inode: 134398235   Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Access: 2021-09-12 09:40:34.112793455 +0800
      Modify: 2021-09-12 09:40:34.112793455 +0800
      Change: 2021-09-12 09:40:34.112793455 +0800
       Birth: -
       
       [root@web_server01~]# touch -t 2003141314 1.txt   # 修改访问时间,20年3月14日13:14分
      [root@web_server01~]# stat 1.txt 
        File: ‘1.txt’
        Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
      Device: 803h/2051d	Inode: 134398235   Links: 1
      Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
      Access: 2020-03-14 13:14:00.000000000 +0800
      Modify: 2020-03-14 13:14:00.000000000 +0800
      Change: 2021-09-12 09:45:31.331419636 +0800
       Birth: -
      # -a  只更改访问时间;
      # -m  只更改修改时间
      

    2.4 echo 命令 —输出命令

    • 案例演示

    • 主要用于打印字符或者回显

    • 常常和管道符连用

    • “>” 覆盖

    • “>>” 追加

    • 扩展 -e,主要用于写脚本,以多行的方式写入

      # 输出一段字符
      [root@web_server01~]# echo 'i love you'
      i love you
      
      # 输出变量提取后的值
      [root@web_server01~]# echo $PS1
      [\[\e[31;1m\]\u\[\e[0m\]\[\e[32;1m\]@\h\[\e[0m\]\[\e[36;1m\]\w\[\e[0m\]]\$
      
      # 将字符 重定向到 文件里
      [root@web_server01~]# echo '人生只若如初见' > hh.txt
      
      # 使用反引号执行命令,并将结果显示在终端
      [root@web_server01~]# echo `date`
      Sun Sep 12 10:07:59 CST 2021
      [root@web_server01~]# 
      
      # 扩展 -e,主要用于写脚本
      \033[30m 黑色字 \033[0m
      \033[31m 红色字 \033[0m
      \033[32m 绿色字 \033[0m
      \033[33m 黄色字 \033[0m
      \033[34m 蓝色字 \033[0m
      \033[35m 紫色字 \033[0m
      \033[36m 天蓝字 \033[0m
      \033[37m 白色字 \033[0m
      \033[40;37m 黑底白字 \033[0m
      \033[41;37m 红底白字 \033[0m
      \033[42;37m 绿底白字 \033[0m
      \033[43;37m 黄底白字 \033[0m
      \033[44;37m 蓝底白字 \033[0m
      \033[45;37m 紫底白字 \033[0m
      \033[46;37m 天蓝底白字 \033[0m
      \033[47;30m 白底黑字 \033[0m
      
      
    • 多行写入方式 \n

        [root@web_server01~]# echo "rivers01\nrivers02\nrivers03" 
        rivers01\nrivers02\nrivers03
        [root@web_server01~]# echo -e "rivers01\nrivers02\nrivers03" 
        rivers01
        rivers02
        rivers03
        [root@web_server01~]# echo -e "rivers01\nrivers02\nrivers03" > file1.txt 
        [root@web_server01~]# cat file1.txt 
        rivers01
        rivers02
        rivers03
        [root@web_server01~]
      

    2.5 rm 命令 —删除命令

    • 案例演示

       # 温馨提示:
        我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。很多时候翻车都翻在这里。
        
        # 常用参数
        -f	忽略不存在的文件,不会出现警告信息
        -i	删除前会询问用户是否操作
        -r/R	递归删除
        -v	显示指令的详细执行过程
        
        # 删除前逐一询问确认:
        [root@web_server01~]# rm -i 1.txt 2.txt 3.txt 
        rm: remove regular empty file ‘1.txt’? y
        rm: remove regular empty file ‘2.txt’? y
        rm: remove regular file ‘3.txt’? y
        [root@web_server01~]# 
        
        #直接删除,不会有任何提示
        [root@web_server01~]# rm -f 100.php 
        
        # 递归删除目录及目录下所有文件:
        [root@web_server01~]# ls rivers02/
        1.txt  hbs  heihei  xixi
        [root@web_server01~]# rm -rf rivers02/
        [root@web_server01~]# 
        
        # 删除当前目录下所有文件:
        [root@web_server01~/rivers]# ls
        1  hbs
        [root@web_server01~/rivers]# rm -rf *
        [root@web_server01~/rivers]# ls
        [root@web_server01~/rivers]# 
        
        #清空系统中所有的文件(谨慎):如果是用了,准备跑路吧
        [root@web_server01~]# rm -rf /*
      

    2.6 tail 命令 —查看文件尾部内容

    • 案例演示

      #显示文件shadow的最后10行:
      [root@web_server01~]# tail /etc/shadow
      
      #显示文件anaconda-ks.cfg 的内容,从第20行至文件末尾:
      
      [root@web_server01~]# tail +20 anaconda-ks.cfg 
       
      #显示文件shadow的最后10个字符:
      [root@web_server01~]# tail -c 10 /etc/shadow
      862::::::
      [root@web_server01~]#
      
      #一直变化的文件总是显示后10行:(主要用于看日志)
      [root@web_server01~]# tail -f /var/log/yum.log
      
      #显示帮助信息:
      [root@web_server01~]# tail --help
      
      

    2.7 head命令 —显示文件开头内容

    • 案例演示

      # 显示前3行文件内容:
      [root@web_server01~]# head -n 3 /etc/shadow
      
      # 显示文件名信息,并显示文件前两行:
      [root@web_server01~]# head -v -n 2 lan.txt 
      ==> lan.txt <==
      i love you
      1234151
      [root@web_server01~]# 
      
      #显示文件前5个字符:
      [root@web_server01~]# head -c 10 lan.txt
      i love you
      

    2.8 sort 命令 --排序命令

    • 案例演示

      # sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。
      
      # -r 以相反的顺序来排序
      # -f 忽略大小写
      #-b	忽略每行前面开始出的空格字符
      # -o <输出文件>	将排序后的结果存入制定的文件
      
      # 忽略大小写排序
      [root@web_server01~]# sort -f xixi.txt 
      a
      B
      c
      
      # 将排序结果 输出到 hbs/a.txt里面
      [root@web_server01~]# sort xixi.txt -o hbs/a.txt
      [root@web_server01~]# cat hbs/a.txt 
      a
      B
      c
      
      # 忽略每行前面开始出现的空格字符
      [root@web_server01~]# cat lan.txt 
       i love you
       1234151
      asdfdbsd
       aa
      [root@web_server01~]# sort -b lan.txt 
       1234151
       aa
      asdfdbsd
       i love you
      [root@web_server01~]#
      
      # 以相反的顺序取反
      [root@web_server01~]# sort -r xixi.txt 
      c
      B
      a
      
      

    2.9 uniq 命名 —去重

    • 案例演示

      # 常用参数
      -c	打印每行在文本中重复出现的次数
      -d	只显示有重复的纪录,每个重复纪录只出现一次
      -u	只显示没有重复的纪录
      
      
      # 打印每行在文件中出现重复的次数
      [root@web_server01~]# cat hh.txt 
      a
      a
      b
      c
      [root@web_server01~]# uniq -c hh.txt 
            2 a
            1 b
            1 c
      [root@web_server01~]# 
      
      #只显示有重复的纪录,且每个纪录只出现一次
      [root@web_server01~]# uniq -d hh.txt 
      a
      [root@web_server01~]# 
      
      # 只显示没有重复的纪录
      [root@web_server01~]# uniq -u hh.txt 
      b
      c
      [root@web_server01~]#
      
      # 删除连续文件中连续的重复行:
      [root@web_server01~]# uniq  hh.txt 
      a
      b
      c
      
      

    2.10 wc 命令 —用于统计文本、字符(数字、符号、空格、行)

    • 案例演示

      # 常用参数
      -w	统计字数,或--words:只显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串
      -c	统计字节数,或--bytes或--chars:只显示Bytes数
      -l	统计行数,或--lines:只显示列数
      
      [root@web_server01~]# cat lan.txt 
      world 
      hello world
      hello
      [root@web_server01~]# 
      
      # 统计字数
      [root@web_server01~]# wc -w lan.txt 
      4 lan.txt
      
      #统计行数
      [root@web_server01~]# wc -l lan.txt 
      3 lan.txt
      
      # 打印最长行的长度
      [root@web_server01~]# wc -L lan.txt 
      11 lan.txt
      
      

    2.11 more 显示文本文件内容

    • 案例演示

      # more命令用于将内容较长的文本文件内容(不能在一屏显示完)进行分屏显示,并且支持在显示时定位关键字。而对于内容较少的文本文件内容则推荐使用cat命令查看。
      
      #显示文件anaconda-ks.cfg的内容,每5行显示一次,而且在显示之前先清屏:
      [root@web_server01~]#  more -c -5 anaconda-ks.cfg
      #version=DEVEL
      # System authorization information
      auth --enableshadow --passalgo=sha512
      # Use CDROM installation media
      cdrom
      [root@web_server01~]#
      
      #显示文件file的内容,每5行显示一次,而且在显示之后再清屏:
      [root@web_server01~]# more -p -5 anaconda-ks.cfg
      #version=DEVEL
      # System authorization information
      auth --enableshadow --passalgo=sha512
      # Use CDROM installation media
      cdrom
      --More--(7%)
      
      #从第 20 行开始显示 anaconda-ks.cfg 之文档内容 :
      [root@web_server01~]#  more +20 anaconda-ks.cfg 
      
      # 使用技巧
      Space键:显示文本的下一屏内容
      Enter键:向下n行,需要定义,默认为1行
      斜线符\:接着输入一个模式,可以在文本中寻找下一个相匹配的模式
      H键:显示帮助屏
      B键:显示上一屏内容
      Q键:退出more命令
      Ctrl+F、空格键:向下滚动一屏
      Ctrl+B:返回上一屏
      =: 输出当前的行号
      :f:输出文件名和当前的行号
      V:调用vi编辑器
      !:调用Shell,并执行命令
      

    2.12 less命令 — 分页显示内容

    • 案例演示

      #浏览文字档案的内容,用less命令显示文件时,PageUp键向上翻页,PageDown键向下翻页,要退出less程序,应按Q键。
      
      less的作用与more十分相似,不同点为less命令允许用户向前或向后浏览文件,而more命令只能向前浏览 。
      
      #查看文件 :
      [root@web_server01~]# less anaconda-ks.cfg
      
      #ps查看进程信息并通过less分页显示:
      [root@linuxcool ~]# ps -ef |less 
      

    2.13 stat 命令 – 查看数据详细属性信息

    • 案例演示

      # 常用参数
      -L	支持符号链接
      -f	显示文件系统的信息
      -t	以简洁的方式输出
      --help	显示命令帮助信息
      
      # 查看文件 anaconda-ks.cfg 的三种时间状态:Access,Modify,Change:
      [root@web_server01~]# stat anaconda-ks.cfg 
        File: ‘anaconda-ks.cfg’
        Size: 1681      	Blocks: 8          IO Block: 4096   regular file
      Device: 803h/2051d	Inode: 134318467   Links: 1
      Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
      Access: 2021-09-12 10:26:28.679267897 +0800
      Modify: 2021-08-23 15:38:37.120883350 +0800
      Change: 2021-08-23 15:38:37.120883350 +0800
       Birth: -
      
      
      # 查看文件系统信息
      [root@web_server01~]# stat -f anaconda-ks.cfg 
        File: "anaconda-ks.cfg"
          ID: 80300000000 Namelen: 255     Type: xfs
      Block size: 4096       Fundamental block size: 4096
      Blocks: Total: 25757146   Free: 25197394   Available: 25197394
      Inodes: Total: 51539456   Free: 51473814
      
      

    2.14 ln 命令 —创建连接文件

    • 案例演示

      # 常用参数
      ln 源文件 链接文件 创建硬链接
      ln -s       创建软链接
      
      
      # 将解压的mysql 链接到 mysql5.7
      [root@web_server01~]#ln -s mysql-5.7.22-linux-glibc2.12-x86_64/ mysql5.7
      

    2.15 dd 命令 — 模拟创建出指定大小的文件

    • 案例演示

      #  模拟创建出指定大小的文件
      #从哪取出数据  放到哪          占用1个block多少空间     总共使用多少个block
      [root@web_server01~]# dd if=/dev/zero of=/opt/liuaoni.txt bs=10 count=100
      100+0 records in
      100+0 records out
      1000 bytes (1.0 kB) copied, 0.000335941 s, 3.0 MB/s
      [root@web_server01~]# 
      
      # 查看 liuaoni.txt 文件大小
      [root@web_server01~]# du -h /opt/liuaoni.txt 
      4.0K	/opt/liuaoni.txt
      

    2.16 chattr 命令 — 改变文件属性

    • 案例演示

      # 常用参数
      a:让文件或目录仅供附加用途。
      b:不更新文件或目录的最后存取时间。
      c:将文件或目录压缩后存放。
      d:将文件或目录排除在倾倒操作之外,当dump程序执行时,该文件或目录不会被dump备份
      i:不得任意更动文件或目录。
      s:保密性删除文件或目录。
      S:即时更新文件或目录。
      u:预防意外删除。
      
      
      # 用chattr命令防止系统中某个关键文件被修改:
      
      [root@web_server01~]# touch mm.sh
      [root@web_server01~]# chattr +i mm.sh 
      
      #会显示如下属性
      [root@web_server01~]# lsattr mm.sh 
      ----i----------- mm.sh
      
      让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:
      [root@web_server01~]# chattr +a /var/log/messages
      
      
      # 创建一个连root 都无法删除的文件
      [root@web_server01~]# chattr -u mm.sh 
      [root@web_server01~]# rm -f mm.sh 
      rm: cannot remove ‘mm.sh’: Operation not permitted
      [root@web_server01~]# ll mm.sh 
      -rw-r--r-- 1 root root 0 Sep 13 17:08 mm.sh
      [root@web_server01~]# chmod 777 mm.sh 
      chmod: changing permissions of ‘mm.sh’: Operation not permitted
      [root@web_server01~]# rm -rf mm.sh 
      rm: cannot remove ‘mm.sh’: Operation not permitted
      
      # 解除 文件属性
      [root@web_server01~]# chattr -i mm.sh 
      [root@web_server01~]# 
      [root@web_server01~]# rm -rf mm.sh 
      
      
      # 影藏 chattr 命令
      [root@web_server01~]# mv /usr/bin/cha^C
      chacl   chage   chattr  
      [root@web_server01~]#mkdir /opt/chattr 
      [root@web_server01~]#mv /usr/bin/chattr /opt/chattr/  
      [root@web_server01~]#cd /opt/chattr/  
      [root@web_server01/opt/chattr]# ls 
       h 
      [root@web_server01/opt/chattr]# touch nidaye 
      [root@web_server01/opt/chattr]#h +i nidaye    -->更改命令,使用别名h隐藏身份
      [root@web_server01/opt/chattr]#/opt/chattr/h +i nidaye  -->利用h 行驶chattr命令
      
      # 查看加密信息
      ls nidaye    -->查看加密信息
      
      
      #恢复隐藏命令
      mv h /usr/bin/chattr
      chattr -i /opt/chattr/nidaye
      lsattr /opt/chattr/nidaye
      
      

    3 .修改主机名

    3.1 hostname 命令 —查看修改主机名称

    • 案例演示

      # 查看主机名
      [root@web_server01~]# hostname
      web_server01
      
      # 临时修改主机名,重启就恢复了
      [root@web_server01~]# hostname nginx-server
      [root@web_server01~]# bash
      [root@nginx-server~]# 
      

    3.2 hostnamectl — 直接修改主机名称(centos7)

    • 案例演示

      #示当前主机名称的配置信息:
      [root@nginx-server~]# hostnamectl status
         Static hostname: web_server01
      Transient hostname: nginx-server
               Icon name: computer-vm
                 Chassis: vm
              Machine ID: 6995341f51984532aa0222cddb7a2bd0
                 Boot ID: 416ee9b854804fa1aaa1bad439c5bb24
          Virtualization: vmware
        Operating System: CentOS Linux 7 (Core)
             CPE OS Name: cpe:/o:centos:centos:7
                  Kernel: Linux 3.10.0-957.el7.x86_64
            Architecture: x86-64
      
      # 使用set-hostname命令来设置或修改主机名称:
      [root@nginx-server~]# hostnamectl set-hostname web01-server
      

    4.linux 用户及权限管理

    4.1 useradd 命令 — 创建用户

    • 案列演示

      # 创建一个系统登录用户 nginx
      [root@nginx-server~]# useradd -M -s /sbin/nologin nginx
      
      # 新建hbs用户,并加入到root,itboy附属组
      [root@nginx-server~]# useradd -G root,itboy hbs
      
      #新建 hbs01 用户,并制定新的家兖,同时制定其登录的shell
      [root@nginx-server~]# useradd hbs01 -d /tmp/ -s /bin/bash
      
      

    4.2userdel 命令 —删除用户

    • 案例演示

      #保留用户的家目录
      [root@nginx-server~]# userdel  hbs01
      
      #删除用户及用户家目录,用户login系统无法删除
      [root@nginx-server~]# userdel -r hbs01
      
      #强制删除用户及该用户家目录,不论是否login系统
      [root@nginx-server~]# userdel -rf hbs01
      

    4.3 usermod命令 —修改用户及组的属性

    • 案例演示

      #将hbs用户属组修改为root,itboy附属组;
      [root@nginx-server~]#usermod -G root,itboy hbs
      
      #将hbs用户加入到itboy,root附属组,-a为添加新组,原组保留;
      [root@nginx-server~]# usermod -a -G itboy,root hbs
      
      #修改hbs用户,并指定新的家目录,同时指定其登陆的SHELL;
      [root@nginx-server~]# usermod -d /tmp/ -s /bin/sh hbs  
      
      #将hbs用户名修改为rivers;
      [root@nginx-server~]# usermod -l hbs rivers
      
      
      #锁定rivers用户及解锁rivers用户方法;
      [root@nginx-server~]# usermod -L rivers 
      [root@nginx-server~]# usermod -U rivers
      
      

    4.4 groupadd 命令 —创建用户组

    • 案例演示

      # 创建一个itboy 用户组
      [root@nginx-server~]# groupadd itboy
      
      # 新建一个teacher 组,并指定GID 1000
      [root@nginx-server~]# groupadd -g 1000 teacher
      
      # 新建一个system 组,组名为adminroot
      [root@nginx-server~]# groupadd -r system adminroot
      
      

    4.5 groupmod 命令 —修改组名

    • 案例演示

      # groupmod修改组GID号,将原eacher组gid改成gid 999;
      [root@nginx-server~]# groupmod -g 999 teacher
      
      # groupmod修改组名称,将teacher组名,改成student
      [root@nginx-server~]# groupmod -n student teacher
      

    4.6 chown 命令 --修改文件/目录属主、数组

    • 案例演示

      # 常用参数
      -R	对目前目录下的所有文件与子目录进行相同的拥有者变更
      -c	若该文件拥有者确实已经更改,才显示其更改动作
      -f	若该文件拥有者无法被更改也不要显示错误讯息
      -h	只对于连结(link)进行变更,而非该 link 真正指向的文件
      -v	显示拥有者变更的详细资料
      
      
      # 将rivers/ 目录属主数组 改成hbs
      [root@nginx-server~]# chown hbs.hbs rivers
      
      # 将laoni/ 属主改成 hbs
      [root@nginx-server~]# chown -R hbs laoni/
      
      # 将laoni/* 所有文件 属主改成 hbs
      [root@nginx-server~]# chown -R hbs laoni/*
      

    4.7 chmod 命令 —改变文件或目录权限

    • 案例演示

      # 常用参数
      -c	若该文件权限确实已经更改,才显示其更改动作
      -f	若该文件权限无法被更改也不显示错误讯息
      -v	显示权限变更的详细资料
      -R	对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
      
      
      #将档案 file1.txt 设为所有人皆可读取:
      [root@nginx-server~]# touch file1.txt
      [root@nginx-server~]#chmod a+r file.txt  
      
      #将目前目录下的所有文件与子目录皆设为任何人可读取 :
      [root@nginx-server~]# chmod -R a+r *   
      
      # 将 file.txt 设定为只有该文件拥有者可以执行:
      [root@nginx-server~]# chmod u+x file.txt
      
      # 授予 hbs用户 对 rivers 目录有用所有rwx权限
      [root@nginx-server~]# chmod -R u+rwx rivers/
      
      # 授予 hbs组对 rivers 目录有用所有rwx权限
      [root@nginx-server~]# chmod -R g+rwx rivers/
      
      # 授予 用户、组、其他人对 heihei 有rwx 权限
      [root@nginx-server~]# chmod -R u+rwx,g+rwx,o+rwx rivers/
      
      # 撤销用户对rivers 的w 权限
      [root@nginx-server~]# chmod u-w rivers/
      
      
      -------------------
      
      chomod 二进制权限设置
      Linux权限可以将rwx用二进制来表示,其中有权限用1表示,没有权限用0表示;
      Linux权限用二进制显示如下:
      rwx=111
      r-x=101
      rw-=110
      r--=100
      
      # 授予 hbs用户 对 rivers 目录有用所有rwx权限
      [root@nginx-server~]# chmod -R 755 rivers/
      

    4.8 passwd 命令 —修改用户密码

    • 案例演示

      # 常用参数
      d	删除密码
      -l	锁定用户密码,无法被用户自行修改
      -u	解开已锁定用户密码,允许用户自行修改
      -e	密码立即过期,下次登陆强制修改密码
      -k	保留即将过期的用户在期满后能仍能使用
      -S	查询密码状态
      
      
      # 交互式修改密码
      [root@nginx-server~]# passwd rivers
      
      # 免交互式修改密码
      [root@nginx-server~]# echo 123456|passwd --stdin hbs
      Changing password for user hbs.
      passwd: all authentication tokens updated successfully.
      
      # 锁定密码不允许用户修改
      [root@nginx-server~]# passwd -l rivers
      Locking password for user rivers.
      passwd: Success
      [root@nginx-server~]# 
      
      # 解除锁定密码,允许用户修改
      [root@nginx-server~]# passwd -u rivers 
      
      # 下次登录强制修改密码
      [root@nginx-server~]# passwd -e rivers
      Expiring password for user rivers.
      passwd: Success
      [root@nginx-server~]# 
      
      
      

    4.9 id /whoami 命令 —检查用户身份

    • 案例演示

      # 检查用户是否存在
      [root@web_server01~]# id hbs
      uid=1002(hbs) gid=1003(hbs) groups=1003(hbs)
      
      # 确认用户身份
      [root@web_server01~]# who
      root     pts/0        2021-09-12 09:39 (10.0.0.1)
      root     pts/1        2021-09-12 19:17 (10.0.0.1)
      [root@web_server01~]# whoami
      root
      
      

    4.10 su 命令 —切换用户命令

    • 案例演示

      # 切换用户身
      [hbs@web_server01/root]$ su hbs
      Password: 
      
      

    4.11 w 命令 —查看负载信息/查看系统用户登录信息

    • 案例演示

      [hbs@web_server01/root]$ w
       19:35:11 up  9:55,  2 users,  load average: 0.00, 0.01, 0.05
      USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
      root     pts/0    10.0.0.1         09:39    3:38m  1.15s  0.55s bash
      root     pts/1    10.0.0.1         19:17    7.00s  0.19s  0.00s w
      [hbs@web_server01/root]$ 
      
      

    5.软件包管理

    5.1 rpm 命令 —RPM 软件包管理器

    • 案例演示

      # rpm 管理软件程序包的
      # rpm -qa 软件名称   	查看软件大礼包是否安装成功
      # rpm -ql 软件名称   	查看软件大礼包中都有什么
      # rpm -qf 文件名称(绝对路径)   查看文件属于哪个软件大礼包
      
      
      #直接安装软件包:
      [root@nginx-server~]#  rpm -ivh packge.rpm 
      
      # 卸载rpm包:
      [root@nginx-server~]#  rpm -e package.rpm 
      
      #忽略报错,强制安装:
      [root@nginx-server~]#  rpm --force -ivh package.rpm
      
      #列出所有安装过的包:
      [root@nginx-server~]#  rpm -qa
      
      #查询rpm包中的文件安装的位置:
      [root@nginx-server~]#  rpm -ql httpd
      
      #升级软件包:
      [root@nginx-server~]# rpm -U file.rpm
      

    5.2 yum 命令 — 软件安装、卸载

    • 案例演示

       yum install -y 名称 			直接安装软件
      	yum groupinstall -y 包组名称   	直接安装软件包组
      	yum repolist        			查看yum源信息
      	yum list            			查看哪些软件可以安装/查看所有系统已安装的软件
      	yum grouplist       			查看哪些软件包组可以安装/查看所有系统已安装的软件包组
      	yum --help                      help参数可以只显示命令的参数帮助信息
      	yum provides locate             获取命令属于哪个软件大礼包
      

    5.3 wget 命令 —文件下载

    • 案例演示

      # 常用参数
      -V	–-version 显示wget的版本后退出
      -h	–-help 打印语法帮助
      -b,	–-background 启动后转入后台执行
      -e	–-execute=COMMAND
      
      
      wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。
      
      wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。
      
      语法格式: wget [参数]
      
      常用参数:
      
      -V	–-version 显示wget的版本后退出
      -h	–-help 打印语法帮助
      -b,	–-background 启动后转入后台执行
      -e	–-execute=COMMAND
      
      #使用wget下载单个文件:
      [root@nginx-server~]# wget https://downloads.mysql.com/archives/get/p/23/file/MySQL-5.7.3-m13-1.linux_glibc2.5.x86_64.rpm-bundle.tar
      
      #下载并以不同的文件名保存:
      [root@nginx-server~]#  wget -O mysql.tar.gz https://downloads.mysql.com/archives/get/p/23/file/MySQL-5.7.3-m13-1.linux_glibc2.5.x86_64.rpm-bundle.tar
      
      #wget限速下载:
      [root@nginx-server~]# wget --limit-rate=300k https://downloads.mysql.com/archives/get/p/23/file/MySQL-5.7.3-m13-1.linux_glibc2.5.x86_64.rpm-bundle.tar
      
      #使用wget后台下载:
      [root@nginx-server~]# wget -b https://downloads.mysql.com/archives/get/p/23/file/MySQL-5.7.3-m13-1.linux_glibc2.5.x86_64.rpm-bundle.tar
      
      

    5.4 which命令 — 显示命令文件所在路径位置

    • 案例演示

      # 查看命令安装路径
      [root@web_server01~]# which vim
      /usr/bin/vim
      [root@web_server01~]# 
      
      

    5.5 whereis 命令 —查看命令所在路径以及命令相关手册文件所在路径

    • 案例演示

      # 查看命令所在路径以及命令相关手册文件所在路径
      [root@web_server01~]# whereis vim
      vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz
      [root@web_server01~]# 
      
      

    5.6 alias/unalias 命令 —设置命令别名

    • 案例演示

      # 设置别名  alias 别名='命令信息'
      [root@web_server01~]# alias eth11='cat /etc/sysconfig/network-scripts/ifcfg-eth1'
      [root@web_server01~]# eth11
      TYPE=Ethernet
      PROXY_METHOD=none
      BROWSER_ONLY=no
      BOOTPROTO=none
      IPADDR=172.16.1.7
      PREFIX=24
      DEFROUTE=yes
      IPV4_FAILURE_FATAL=no
      IPV6INIT=yes
      IPV6_AUTOCONF=yes
      IPV6_DEFROUTE=yes
      IPV6_FAILURE_FATAL=no
      IPV6_ADDR_GEN_MODE=stable-privacy
      NAME=eth1
      DEVICE=eth1
      ONBOOT=yes
      AUTOCONNECT_PRIORITY=-999
      [root@web_server01~]# 
      
      # 取消别名
      #unalias 取消系统别名命令
      #unalias 别名 
      # [root@web_server01~]# unalias eth11
      

    6.磁盘管理

    6.1 df 命令 — 显示磁盘空间使用情况

    • 案例演示

      # 常用参数
      -a	显示所有系统文件
      -h 以容易阅读的方式显示
      
      # 以容易阅读的方式显示磁盘分区使用情况:
      [root@nginx-server~]# df -h
      Filesystem      Size  Used Avail Use% Mounted on
      /dev/sda3        99G  2.0G   97G   2% /
      devtmpfs        442M     0  442M   0% /dev
      tmpfs           453M     0  453M   0% /dev/shm
      tmpfs           453M  7.2M  446M   2% /run
      tmpfs           453M     0  453M   0% /sys/fs/cgroup
      /dev/sda1       197M  105M   93M  54% /boot
      tmpfs            91M     0   91M   0% /run/user/0
      
      # 显示指定文件所在分区的磁盘使用情况
      [root@nginx-server~]# df -h /opt/
      Filesystem      Size  Used Avail Use% Mounted on
      /dev/sda3        99G  2.0G   97G   2% /
      [root@nginx-server~]# 
      
      

    6.2 fdisk 命令 —磁盘分区

    • 案例演示

      [root@nginx-server~]# ls /dev/sd*
      /dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sdb
      
      # 查看所有分区情况
      [root@nginx-server~]# fdisk -l
      
      # 选择分区磁盘
      [root@nginx-server~]# fdisk /dev/sda2
      
      
    • linux磁盘分区

    6.3 lsblk 命令 —查看系统的磁盘

    • 案例演示

      #列出所有块设备 
      [root@nginx-server~]# lsblk 
      NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      sda      8:0    0  100G  0 disk 
      ├─sda1   8:1    0  200M  0 part /boot
      ├─sda2   8:2    0  1.5G  0 part [SWAP]
      └─sda3   8:3    0 98.3G  0 part /
      sdb      8:16   0   10G  0 disk 
      sr0     11:0    1  4.3G  0 rom  
      [root@nginx-server~]# 
      
      # 默认选项不会列出所有空设备
      [root@nginx-server~]# lsblk -a
      
    • linux 磁盘分区实战

    6.4 free 命令 — 显示系统内存情况

    • 案例演示

      # 显示内存使用情况:
      [root@nginx-server~]# free
                    total        used        free      shared  buff/cache   available
      Mem:         926264       96024      685304        7288      144936      671300
      Swap:       1572860           0     1572860
      
      # 用MB显示内存使用情况
      [root@nginx-server~]# free -m
                    total        used        free      shared  buff/cache   available
      Mem:            904          93         669           7         141         655
      Swap:          1535           0        1535
      [root@nginx-server~]# 
      
      # 用KB显示内存使用情况:
      [root@nginx-server~]# free -k
      
      # 以总和的形式显示内存的使用信息:
      [root@nginx-server~]# free -t
      
      # 周期性查询内存使用情况:
      [root@nginx-server~]# free -s 10
      
      

    6.5 du 命令 —查看空间

    • 案例演示

      # 常用参数
      -a	显示目录中所有文件大小
      -k	以KB为单位显示文件大小
      -m	以MB为单位显示文件大小
      -g	以GB为单位显示文件大小
      -h	以易读方式显示文件大小
      -s	仅显示总计
      
      # 常用命令
      [root@nginx-server~]#  du -sh /tmp/ 查看当前目录所有文件及文件及的大小
      
      #以易读方式显示文件夹内及子文件夹大小 :
      [root@nginx-server~]#  du -h scf/  
      
      #以易读方式显示文件夹内所有文件大小 :
      [root@nginx-server~]#  du -ah scf/   
      
      #输出当前目录下各个子目录所使用的空间 :
      [root@nginx-server~]# du -hc --max-depth=1 scf/ 
      
      #显示指定文件所占空间 :
      [root@nginx-server~]#  du log2021.log 
      

    7.设备管理

    7.1 mount 命令 —文件系统挂载

    • 案例演示

      #常用参数
      -t	指定挂载类型
      -l	显示已加载的文件系统列表
      -h	显示帮助信息并退出
      -V	显示程序版本
      -n	加载没有写入文件“/etc/mtab”中的文件系统
      -r	将文件系统加载为只读模式
      -a	加载文件“/etc/fstab”中描述的所有文件系统
      
      #查看版本:
      [root@nginx-server~]# mount -V
      
      #启动所有挂载:
      [root@nginx-server~]# mount -a
      
      #挂载 /dev/cdrom 到 /mnt:
      [root@nginx-server~]# mount /dev/cdrom /mnt
      
      # 挂载nfs格式文件系统:
      [root@nginx-server~]#mount -t nfs /123 /mnt  
      
      #挂载第一块盘的第一个分区到/etc目录 :
      [root@nginx-server~]#mount -t ext4 -o loop,default /dev/sda1 /etc
      

    7.2 umout 命令 —卸载挂载

    • 案例演示

      #mount 存储设备文件  挂载点
      umount      对存储设备进行卸载
      umount 挂载点
      
      # 卸载 /mnt 挂载点
      [root@web_server01~]# umount /mnt/
      

    7.3 lsusb 命令 — 显示usb 设备列表

    • 案例演示

      # 显示有关CPU架构的信息:
      [root@nginx-server~]# lscpu
      
      

    8. 网路通讯

    8.1 ssh命令 — 安全连接客户端

    • 案例演示

      #登录远程服务器:
      [root@linuxcool ~]# ssh 10.0.0.7
      
      #用hbs用户连接远程服务器:
      [root@nginx-server~]# ssh -l hbs 10.0.0.7
      
      #查看分区列表:
      [root@nginx-server~]# ssh root@10.0.0.7 /sbin/fdisk -l
      root@10.0.0.7's password: 
      
      

    8.2 netstat 命令 — 显示网络状态

    • 案例演示

      # 常用参数
      -a	显示所有连线中的Socket
      -p	显示正在使用Socket的程序识别码和程序名称
      -u	显示UDP传输协议的连线状况
      -i
      显示网络界面信息表单
      -n	直接使用IP地址,不通过域名服务器
      
      
      [root@nginx-server~]# netstat -lnutp|grep 22
      tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6837/sshd           
      tcp6       0      0 :::22                   :::*                    LISTEN      6837/sshd           
      
      
      # 同时还可以使用 ss -lant
      [root@nginx-server~]# ss -lant
      State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
      LISTEN      0      128             *:22                          *:*                  
      LISTEN      0      100     127.0.0.1:25                          *:*                  
      ESTAB       0      148      10.0.0.7:22                   10.0.0.1:58713              
      LISTEN      0      128            :::22                         :::*                  
      LISTEN      0      100           ::1:25                         :::* 
      

    8.3 ping 命令 —测试主机间网络连通性

    • 案例演示

      # 常用参数
      
      #检测与www.baidu.com网站的连通性:
      [root@nginx-server~]# ping www.baidu.com
      
      #连续ping4次:
      [root@nginx-server~]# ping -c 4 www.baidu.com 
      #设置次数为4,时间间隔为3秒:
      [root@nginx-server~]# ping -c 4 -i 3 www.baidu.com
      
      #利用ping命令获取指定网站的IP地址:
      [root@nginx-server~]# ping -c 1 baidu.com | grep from | cut -d " " -f 4
      220.181.38.251
      [root@nginx-server~]# 
      
      

    8.5 nslookup 命令 —解析IP地址

    • 案例演示

      # 常用参数
      exit	退出命令
      server	指定解析域名的服务器地址
      set type=soa	设置查询域名授权起始信息
      set type=a	设置查询域名A记录
      set type=mx	设置查询域名邮件交换记录
      
      
      # 安装nslookup工具
      [root@nginx-server~]# yum -y install bind-utils
      
      # 在非交互模式下查询域名基本信息
      [root@nginx-server~]# nslookup www.baiud.com
      Server:		8.8.8.8
      Address:	8.8.8.8#53
      
      Non-authoritative answer:
      Name:	www.baiud.com
      Address: 103.51.144.90
      
      
      

    8.6 route 命令 — 显示并设置路由

    • 案例演示

      # 常用参数
      - C	打印linux核心的路由缓存
      -n	不执行DNS反向查找,直接显示数字形式的ip地址
      -net	到一个网络的路由表
      -host	到一个主机的路由表
      Add	增加指定的路由记录
      Del	删除指定的路由记录
      gw	设置默认网关
      dev	路由记录所表示的网络接口
      
      
      # 显示当前路由
      [root@nginx-server~]# route
      Kernel IP routing table
      Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
      default         gateway         0.0.0.0         UG    100    0        0 eth0
      10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
      172.16.1.0      0.0.0.0         255.255.255.0   U     101    0        0 eth1
      
      root@nginx-server~]# route -n
      Kernel IP routing table
      Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
      0.0.0.0         10.0.0.2        0.0.0.0         UG    100    0        0 eth0
      10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
      172.16.1.0      0.0.0.0         255.255.255.0   U     101    0        0 eth1
      [root@nginx-server~]# 
      
      # 临时添加一条路由记录:
      [root@nginx-server~]# ip route add 192.168.10.100 via 172.16.1.254 dev eth1
      
      # 删除路由记录
      [root@nginx-server~]# ip route del 192.168.10.100 via 172.16.1.254 dev eth1
      
      
      # 永久配置
      在/etc/sysconfig/network-scripts/目录下创建route-eth*配置文件,其中eth*为对应的网卡编号,即静态路由的出口网卡,该配置文件中的路由出口信息,必须与此文件名编号一致,否者将造成网卡启动失败,导致断网。
      # cat /etc/sysconfig/network-scripts/route-eth1 
          192.168.10.0/24 via 172.16.1.254 dev eht1
      
      
      

    9.tar、zip命令 —压缩/解压缩

    • 案例演示

      # 常用几种格式
      .tar.gz (tar)
      .tar.bz2 (tar),需要安装bzip2安装包
      .tar.xz (tar)
      .zip (zip) 跨平台的
      压缩比:gz<bz<xz (xz压缩效果最好,推荐使用tar.xz)
      常用压缩文件选项
      -zcf 创建一个gz的文件压缩包
      -jcf 创建一个bz2的文件压缩包
      -Jcf 创建一个xz格式的文件压缩包
      -常用解压文件选项
      -xf 解压指定文件(gz、xz用)
      -xvf 解压指定文件并显示解压过程(gz、xz用)
      -xjf 解压bz2文件的
      查看压缩的文件
      -tvf 不解压查看一个文件
      -c      创建归档
      -z      压缩成gz格式
      -j      压缩成bz2格式
      -v      显示详细信息
      -t      不解压查看压缩包内容
      -f      指定要压缩或解压缩的文件
      -x      解压缩
      -C      将压缩文件解压到指定目录
      
      #查看bzip2安装包
      [root@localhost ~]# ls /mnt/Packages/bzip2-1.0.6-13.el7.x86_64.rpm 
      [root@localhost ~]# rpm -ivh /mnt/Packages/bzip2-1.0.6-13.el7.x86_64.rpm 安装bzip2安装包
      warning: /mnt/Packages/bzip2-1.0.6-13.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
      Preparing...                          ################################# [100%]
      	package bzip2-1.0.6-13.el7.x86_64 is already installed
      
      
      #将数字、大小写字母 压缩为hehe.tar.bz2包
      [root@localhost ~]# tar -jcf hehe.tar.bz2 [[:alnum:]]  
      
      
      #将所有文件压缩成 tar.xz格式
      [root@localhost ~]# tar -Jcf big.tar.xz *  
      
      #不解压查看big.tar.xz 压缩包
      [root@localhost ~]# tar -tvf big.tar.xz 
      
      # 解压digit(单个数字)压缩包
      [root@localhost opt]# tar xf digit.tar.gz 
      [root@localhost opt]# ls
      1  2  3  4  8  alnum.tar.bz2  big.tar.xz  digit.tar.gz  hehe.tar.bz2
      
      
      # 删除数字
      [root@localhost opt]# rm -f [[:digit:]] 
      [root@localhost opt]# ls
      alnum.tar.bz2  big.tar.xz  digit.tar.gz  hehe.tar.bz2
      [root@localhost opt]# tar -xvf digit.tar.gz 
      
      # 解压到家目录
      [root@localhost opt]# tar -xvf digit.tar.gz -C ~
      
      # zip 命令
      和gz2一样,也需要单独安装zip和unzip(看情况)
       zip xx.zip 压缩
       unzip xx.zip 解压缩
      #查看有没有zip 命令
      [root@localhost opt]# which zip    
      /usr/bin/which: no zip in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
      [root@localhost opt]# ls /mnt/Packages/zip-3.0-11.el7.x86_64.rpm 
      /mnt/Packages/zip-3.0-11.el7.x86_64.rpm
      [root@localhost opt]# rpm -ivh /mnt/Packages/zip-3.0-11.el7.x86_64.rpm 安装zip命令
      warning: /mnt/Packages/zip-3.0-11.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
      Preparing...                          ################################# [100%]
      Updating / installing...
         1:zip-3.0-11.el7                   ################################# [100%]
      [root@localhost opt]# 
      
      # 将数字压缩zip格式
      [root@localhost ~]# zip liuaoni.zip [[:digit:]] 
        adding: 1 (stored 0%)
        adding: 2 (stored 0%)
        adding: 3 (stored 0%)
        adding: 4 (stored 0%)
        adding: 8 (stored 0%)
        
       # 解压zip文件
      [root@localhost ~]# unzip liuaoni.zip 
      
      
      

    10. 文件传输

    10.1 curl 命令 —文件传输工具

    • 案例演示

      # 常用参数
      -u	通过服务端配置的用户名和密码授权访问
      -o  指定下载到目录
      -i 显示 http response 的头信息
      -v  显示通讯请求过程
      
      # 将阿里云镜像源下载到 本地 /etc/yum.repo.d/,名字为CentOS-Base.repo
      [root@localhost ~]#curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-6.repo
      
      # 可以查看页面代码
      [root@nginx-server~]# curl www.dy.com
      
      # 显示 http response 的头信息,连同网页代码一起
      [root@nginx-server~]#  curl -i www.sina.com
      
      # 显示一次 http 通信的整个过程,包括端口连接和 http request 头信息
      [root@nginx-server~]#  curl -v www.sina.com
      

    10.2 scp — 远程拷贝文件

    • 案例演示

    • # 常用参数
      - cp是 secure copy的缩写.
      - scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
      - linux的scp命令可以在linux服务器之间复制文件和目录。
      - scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。
        当你服务器硬盘变为只读read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。
      - 虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。
      
      
      #从远程复制文件到本地目录:
      [root@web_server01~]# scp root@192.168.10.10:/opt/soft/rhel-server-7.3-x86_64.tar.gz /opt/soft/
      
      #从远程复制目录到本地:
      [root@web_server01~]# scp  -r root@10.10.10.10:/opt/soft/mysql /opt/soft/
      
      #上传本地文件到远程机器指定目录:
      [root@web_server01~]# scp /opt/soft/rhel-server-7.3-x86_64.tar.gz root@192.168.10.10:/opt/soft/scptest
      
      #上传本地目录到远程机器指定目录:
      [root@web_server01~]# scp -r /opt/soft/mysql root@192.168.10.10:/opt/soft/scptest
      
      #保留文件的最后修改时间,最后访问时间和权限模式:
      [root@web_server01~]# scp -p /root/install.log root@192.168.10.10:/tmp  
      

    11 关机/重启相关命令

    11.1 shutdown 命令

    • 案例演示

      [root@nginx-server~]# shutdown -h 5          指定关机时间 (推荐)
      [root@nginx-server~]# shutdown -r 5          重启主机时间 (推荐)
      [root@nginx-server~]# shutdown -c            取消关机或重启计划
      [root@nginx-server~]# shutdown -h now/0      立即关机
      [root@nginx-server~]# shutdown -r now/0      立即重启	
      

    11.2 init 命令

    • 案例演示

      [root@nginx-server~]# init 0   #关机
      [root@nginx-server~]# init 3   #进入3级别字符界面
      [root@nginx-server~]# init 5   #进入5级别图形界面
      
      [root@nginx-server~]# systemctl get-default 查兰当前默认启动级别
      multi-user.target
      [root@nginx-server~]# 
      

    11.3 reboot 命令

    • 案例演示

      # 重启
      [root@nginx-server~]#reboot
      

    11.4 poeroff 命令

    • 案例演示

      # 关机
      [root@nginx-server~]# poweroff
      

    11.5 halt 命令 —直接关机

    • 案例演示

      # 参数解释
      w	并不是真正的重启或关机,只是写wtmp(/var/log/wtmp)纪录
      -d	不写wtmp纪录(已包含在选项[-n])
      -f	没有调用shutdown而强制关机或重启
      -i	关机(或重启)前关掉所有的网络接口
      -p	该选项为缺省选项,就是关机时调用poweroff
      
      # 使用-p参数关闭操作系统,等同于poweroff 命令,并关闭了操作系统的电源
      [root@web_server01~]# halt -p 
      
      #使用-f参数强制关机,操作系统电源未关闭:
      [root@web_server01~]# halt -f
      

    11.6 exit 命令— 注销

    • 案例演示

      # 注销,退出登录
      [root@nginx-server~]# exit
      

    12 操作系统正则符号

    12.1 系统特殊符号(路径、重定向、逻辑、引号)

    • 案例演示

      # 常见的系统符号
      1.系统常用符号 # $ ! |  
      2.路径系统符号 ~ - .. .
      3.重定向符号 >  >>  2> 2>>  < <<
      4.逻辑符号  &&  || 
      5.引号符号  “” , '' , ``
      
      # 井号符号:#
      	表示文件内容注释符号
      	表示用户命令提示符号
      	超级用户为 #
      	普通用户为 $
      
      #引号符号系列:
      	美元括号: $()  表示命令执行结果留下,用于其他命令调用
      	单号符号:‘’    表示输入内容,就是输出内容(所见即所得)
      	双引号:“”      表示输入内容,就是输出内容,但是部分信息会被解析
      	反引号:``      表示命令执行结果留下,用于其他命令调用
      
      # 重定向符号系列 
      	小于符号:单个小于符号<  标准输入重定向符号
      					
      	两个小于符号:  <<  标准输入追加重定向符号
      				
      	大于符号: 单个大于符号  > 标准输出重定向符号 
          					/2> 错误输出重定向符号
      							
      	两个大于符号: >> 标准输出追加重定向符号  
      	            /2>> 错误输出追加重定向符号
      
      # 路径信息系列
      		单点符号: .   表示当前目录
      			
      				
      		双点符号: ..   表示上级目录
      			
      				
      		波浪符号 :~  表示用户家目录信息	
      			超级用户:/root
      			/home/用户名称
      # 逻辑符号系列
      		并且符号:&&   表示前面的名称执行成功,再执行后面的命令
              
      		或者符号:||  表示前面的名称执行失败,再执行后面的命令
      						
      

    12.2 通配符号(* 、{})

    • 案例演示

      # 通配符号 * {}   根据文件名称进行匹配信息
      
      * 表示匹配所有内容信息
      
      {} 表示生成序列信息
      

    12.3 系统正则符号()

    • 案例演示

      # 基础正则符号
       基础正则符号: 
       	1.尖角符号:^  表示以什么字符开头的一行信息
       	2. 美元符号: $ 表示以什么字符结尾的一行信息
       	3.空行符号 :^$  表示过滤空行信息
       	4.点号符号:. 表示匹配任意一个且只有一个字符
       	5. *号符号:*  表示前一个字符连续出现了1次或0次以上
       	6. 点* 符号:  .* 表示匹配文件中所有信息(包含空行)
       				  ^.* xx 表示从开头到什么字符为止的内容(贪婪匹配)
       				  ^.* xx$ 表示以什么开头,并且以什么结尾的信息进行匹配出来
       				  
       	7.转义符号: \   \.$ 表示查询以点 结尾的行信息
       					\ r 或者\ n  表示陪陪一个换行符号
       					\ t 表示匹配一个制表符号
       	
       	8.括号符号:[]   表示包含括号中的信息 
       							[abc]  表示匹配包含a或b或c信息的字符
       							^[abc] 表示匹配包含a或b或c信息的字符开头的信息
       							[a-zA-Z0-9]  找出所有以小写字母大写字母和数字信息的字符
       							[a-Z]找出所有以小写字母或大写字母组成字符(只能grep/egrep使用)
       							^[a-z].*[.!]$  表示以小写字母开头并且以点或叹号结尾的信息过滤出来
       							
       	9.排除符号:[^] 表示排除括号中信息的
       				[^abc]   表示排除包含a或b或c信息的字符
       				^[^abc]  表示排除包含a或b或c信息的字符开头的行(不包含空行)
       				[a-z0-9_]+\@[a-z0-9_]+\.[a-z]{2,4}  匹配一个邮箱地址
                      [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}  匹配IP地址
       				
       			
      
      
       # 扩展正则表达式
        	1.加号符号:+ 表示前一个字符连续出现了1次或多次以上
        	2.竖线符号:| 表示匹配多个满足条件的信息(或者)
        	3.括号符号:() 表示匹配一个整体信息
        	4.括号符号:{}  表示定义前面字符出现次数
        	5.问号符号:?   表示定义前面字符出现0次或1次
      

    13 shell 常用命令

    13.1 find 命令 —查找和搜索文件

    • 案例演示

      # find命令可以根据给定的路径和表达式查找的文件或目录。find参数选项很多,并且支持正则,功能强大。和管道结合使用可以实现复杂的功能,是系统管理者和普通用户必须掌握的命令。
      
      # 常用参数
      -name	按名称查找
      -size	按大小查找
      -user	按属性查找
      -type	按类型查找
      -iname	忽略大小写
      
      处理动作:默认为显示到屏幕上
      -print      显示
      -ls         类似ls -l的形式显示每一个文件的详细信息
      -delete     删除查找到的文件
      -fls /path/to/somefile      查找到的所有文件的长格式信息保存至指定文件中
      -ok COMMAND {} \;   对查找到的每个文件执行COMMAND,每次操作都需要用户确认
      -exec COMMAND {} \; 对查找到的每个文件执行COMMAND,操作不需要确认
      
      #找名字是 abc的
      [root@localhost ~]# find / -name abc 
      /root/abc
      /opt/abc
      
      #忽略大小写的
      [root@localhost ~]# find / -iname abc  
      /root/abc
      /opt/abc
      /opt/ABC
      
      #找没有user的
      [root@localhost ~]# find / -nouser tom 
      
      #找目录
      [root@localhost ~]# find -type d 
      .
      ./a
      ./a/b
      ./a/b/e
      
      #小于1m的文件
      [root@localhost ~]# find -size -1M 小于1m的文件
      
      ./00:00:00
      ./2021
      
      # 大于1k的文件
      [root@localhost ~]# find -size +1k  
      .
      ./.bash_history
      ./anaconda-ks.cfg
      
      #一分钟前改变的
      [root@localhost ~]# find -mmin +1  一分钟前改变的
      ./.bash_logout
      ./.bash_profile
      ./.bashrc
      
      # 必须是目录,名字是 5的目录
      [root@localhost ~]# find -type d  -name 5 
      ./5
      # 必须是文件,名字是5 的文件
      [root@localhost ~]# find -type f  -name 5
      [root@localhost ~]# 
      
      #组合命令
      [root@localhost ~]# find -type d  -name 5 -ls 组合命令
      33576693    0 drwxr-xr-x   2 root     root            6 Apr  8 10:25 ./5
      [root@localhost ~]# 
      
      #查找 名字为he.txt的文件,并且打印出来
      [root@localhost ~]# find -type f -name he.txt -print 
      ./he.txt
      [root@localhost ~]# 
      
      #查找名字是 5的文件,并删除
      [root@localhost ~]# find -type f  -name 5 -delete 
      
      # 将当前文件 名为 .sh 的文件移动到 /OPT下
      [root@localhost opt]# find ./ -type f -name *.sh -exec mv {} /opt/ \;  
      
      
      #查找最近30分钟修改的当前目录下的.php文件
      
      [root@web_server01~]# find . -name '*.php' -mmin -30 -ls
      134398238    4 -rw-r--r--   1 root     root           27 Sep 13 09:12 ./index.php
      [root@web_server01~]
      
      #查找最近24小时修改的当前目录下的.php文件
      
      [root@web_server01~]# find . -name '*.php' -mmin -0
      
      #查找当前目录下,最近24-48小时修改过的常规文件。
      [root@web_server01~]# find . -type f -mtime 1
      
      #查找当前目录下,最近1天前修改过的常规文件。
      [root@web_server01~]# find . -type f -mtime +1
      
      

    13.2 grep 命令 —文本过滤

    • 实战演示

      # 常用选项:
      -e的作用是匹配多个表达式;
      -R递归,-n表示匹配的行号,-o只输出匹配内容,-E支持扩展正则表达式;
      -c统计匹配次数,-v取反;
      -l显示匹配的文件名,-L显示不匹配的文件名;
      -A显示匹配行后的行数、-B显示匹配行前的行数。
      
      grep -B n       显示指定信息前几行内容
      grep -A n       显示指定信息后几行内容
      grep -C n       显示指定信息前后几行内容
      grep -c         显示指定信息在文件中有多少行出现
      grep -v         进行取反或者排除
      grep -E/egrep   识别扩展正则符号
      grep -o         显示过滤过程信息
      grep -n         过滤信息并显示信息行号
      grep -i         过滤信息忽略大小写
      
       
       #查看系统内存、缓存、交换分区-e的作用是匹配多个表达式
      [root@web_server01~]# cat /proc/meminfo |grep Men -e Cache -e Swap
      grep: Men: No such file or directory
      [root@web_server01~]# cat /proc/meminfo |grep  -e Mem -e Cache -e Swap
      MemTotal:         926264 kB
      MemFree:          205068 kB
      MemAvailable:     645276 kB
      Cached:           554564 kB
      SwapCached:            0 kB
      SwapTotal:       1572860 kB
      SwapFree:        1572860 kB
      
      #查找/etc目录下的所有文件中的邮件地址;-R递归,-n表示匹配的行号,-o只输出匹配内容,-E支持扩展正则表达式,
      [root@web_server01~]# grep -R -o -n -E   '[a-z0-9_]+\@[a-z0-9_]+\.[a-z]{2,4}' /etc/
      /etc/grub.d/00_tuned:6:jskarvad@redhat.com
      /etc/libreport/events.d/abrt_event.conf:102:password@server.name
      /etc/libreport/plugins/ureport.conf:8:foo@example.com
      Binary file /etc/alternatives/libnssckbi.so.x86_64 matches
      Binary file /etc/alternatives/nmap matches
      /etc/alternatives/jre/THIRD_PARTY_README:429:policy@w3.org
      /etc/alternatives/jre/THIRD_PARTY_README:1112:team@lists.sour
      /etc/alternatives/jre/THIRD_PARTY_README:1146:team@lists.sour
      
      
      #查找/etc/目录下文件中包含“HOSTNAME”的次数,-c统计匹配次数,-v取反
      [root@ns ~]# grep -R -c 'HOSTNAME' /etc/ |grep -v "0$"  
      
      #查找包含“HOSTNAME”的文件名,-l显示匹配的文件名,-L显示不匹配的文件名
      [root@web_server01~]# grep -R -l 'HOSTNAME' /etc/
      [root@web_server01~]# dmesg | grep -n --color=auto 'eth'  
       
      
      #查找内核日志中eth的行,显示颜色及行号
      [root@web_server01~]# dmesg | grep -n -A3 -B2 --color=auto 'eth'
      #用 dmesg 列出核心信息,再以 grep 找出内含 eth 那行,在关键字所在行的前两行与后三行也一起找出出来显示
      
      #统计系统中能登录的用户的个数
      [root@web_server01~]# cat /etc/passwd |grep -c bash$  
      [root@web_server01~]# cd /tmp 
      [root@web_server01~]# touch /tmp/{123,123123,456,1234567}.txt  
      [root@web_server01~]# ls |grep -E '(123)+' 
      [root@web_server01~]# ls |grep '\(123\)\+'
      [root@web_server01~]# ls |egrep  '(123)+'
      
      #统计httpd进程数量
      [root@web_server01~]# ps -ef |grep -c httpd 
      
      #显示games匹配的“-C”前后4行
      [root@web_server01~]# grep -C 4 'games' --color /etc/passwd 
      
      #查看adm组的信息
      [root@web_server01~]#grep ^adm /etc/group  
      
       #获取网卡名称
      [root@web_server01~]# ip a |grep -E '^[0-9]' |awk -F : '{print $2}' \
      
      #截取ip地址,[^ ]*表示以非空字符作为结束符,[0-9.]*表示数字和点的组合
      [root@ns ~]# ifconfig eth0 |grep -E -o 'inet addr:[^ ]*' |grep  -o '[0-9.]*' 
      
      #截取MAC地址
      [root@web_server01~]# ifconfig eth0 |grep -i hwaddr |awk '{print $5}'  
      
      

    13.3 sed 命令 —流编辑器,实现对文本的增删改查

    • 案例演示

      # sed流编辑器:实现对文本的增删改查
      1.改(替换):语法sed -i '/s/#/#/g'  文件名
      
      # 将网卡配置文件的 dhcp 替换成 static 的
       [root@web_server01~]# sed -i 's/dhcp/static/g' /etc/sysconfig/network-scripts/ifcfg-eth1  
      
      # 准备测试内容
      [root@web_server01~]# vim ip  ##编写测试文件 
      IP1=dhcp
      IP2=dhcp
      IP=dhcp
      :wq
      
      #将所有的dhcp替换为static
      [root@web_server01~]# sed -i 's/dhcp/static/g' ip   
      
      #将IP1开头的行替换
      [root@web_server01~]# sed -i '/^IP1/s/static/dhcp/g' ip  
      
       #指定特定行号2行替换
      [root@web_server01~]# sed -i '2s/static/dhcp/g' ip 
      
      #查看并显示行号
      [root@web_server01~]# cat -n /etc/selinux/config 
      
      #开启selinux
      [root@web_server01~]# sed -i '7s/disabled/enforcing/g' /etc/selinux/config   
      
      # 关闭selinux 
      
      [root@web_server01~]# sed -i 's/enforcing/disabled/g' /etc/selinux/config
      
      
      
      
      2.删:sed  '/表达式/d'  文件
      
      #添加空行
      [root@web_server01~]# vim  ip  
      
      #删除空行并显示在屏幕上
      [root@web_server01~]# sed '/^$/d' ip 
      
      #删除包含IP1的行
      [root@web_server01~]# sed -i '/IP1/d' ip   
      
      #删除以IP2开头的行
      [root@web_server01~]# sed -i '/^IP2/d' ip 
      
      #删除第二行
      [root@web_server01~]# sed -i '2d' ip  
      
      
      
      
      3.增:sed '  /表达式/a "需要添加的文字"'   文件
      #每一行后都加上IP3=static
      [root@ns ~]# sed 'a IP3=static' ip  
      
      #只在第3行后加上IP3=static,并显示不修改
      [root@ns ~]# sed '3a IP3=static' ip  
      
       #只在第3行前加上IP3=static,显示不修改
      [root@ns ~]# sed '3i IP3=static' ip 
      
      #修改,不显示
      [root@ns ~]# sed -i '3a IP3=static' ip  
      
      #在以IP3开头的行后添加
      [root@ns ~]# sed -i '/^IP3/a "test add"' ip 
      
      
      
      4.查:sed  -n  '/表达式/p'   文件
      #查看第二行
      [root@web_server01~]# sed -n '2p' /etc/hosts  
      
      #查看包含www的解析记录
      [root@web_server01~]# sed -n '/www/p' /var/named/chroot/var/named/linuxfan.cn.zone 
      
      #查看以.100结尾的行
      [root@web_server01~]# sed -n '/.100$/p' /var/named/chroot/var/named/linuxfan.cn.zone 
      
      #从第二行,每隔两行显示
      [root@web_server01~]#sed -n '2~2p' ip 
      
      # sed 取出IP地址
      [root@web_server01~]# ip add show eth0|sed -n '3p'
          inet 10.0.0.7/24 brd 10.0.0.255 scope global noprefixroute eth0
      
      
      [root@web_server01~]# ip a s eth0|sed -n '3p'|sed -nr 's#^.*et (.*)/24.*eth0$#\1#gp'
      10.0.0.7
      
      
      

    13.4 awk 命令 — 指定分隔符,提取行

    • 演示案例

      # AWK 介绍
      awk的作用是将文件格式化(根据你的要求排版,注意区别于分区的格式化)后显示信息。
      
      #语法:
      	awk  [选项]  '模式{  动作(action) }'  文件1  文件2  ...
      	最常见的动作:print,printf,BEGIN(开始处理第一行文本之前的操作),END(处理完最后一行文本之后的操作)
      	
      #AWK 变量
      	FS:列分隔符,默认位空白
      	RS:行分隔符,默认位换行符
      	OFS:输出列分隔符
      	ORS :输出行分隔符
      
      awk内置变量
      	NR:处理中行数
      	FNR:单个文件的行数
      	NF:列的个数
      
      	
      #awk的基本原理特征:
      1)每一次取一行
      2)根据指定的分隔符(不指定为空白字符)将该行切割为列,使用$0(整行),$1,$2,$3...(第一列,第二列,...)
      3)可以指定行号,列号,切割符,操作后分隔符
      
      
      # 常用参数
      -F	指定输入时用到的字段分隔符
      -v	自定义变量
      -f	从脚本中读取awk命令
      -m	对val值设置内在限制
      
      
      #打印每一行的第二和第三个字段:
      [root@web_server01~]# awk '{print $2,$3}' hh.txt 
      hello world
      10.0.0.1 
       
      
      #以截取eth1 的IP 地址:
      [root@web_server01~]# ifconfig eth1|grep netmask|awk '{print $2}'
      172.16.1.7
        
      
      # 截取eht0 的IP 地址
      [root@web_server01~]# ip address show eth0 |awk 'NR==3'
          inet 10.0.0.7/24 brd 10.0.0.255 scope global noprefixroute eth0
      [root@web_server01~]# ip address show eth0 |awk 'NR==3' |awk '{print $2}'
      10.0.0.7/24
      [root@web_server01~]# 
      
      
      
      正则表达式(regexp),格式为:/regular expression/
      [root@web_server01~]# awk -F : '/^h/{print $1}' /etc/passwd
      halt
      hbs
      [root@web_server01~]# 
      
      
      表达式(expression),值为非0或为非空是满足条件,如$1 ~ /foo/或 $1 == "root"
      
      #打印普通用户
      [root@web_server01~]# awk -F : '$3>=500{print $1,$3,$7}' /etc/passwd 
      polkitd 999 /sbin/nologin
      nginx 1001 /sbin/nologin
      hbs 1002 /bin/bash
      rivers 1003 /bin/bash
      
      
      #UID在10-100之间的用户
      [root@web_server01~]# awk -F : '$3+1<=100&&$3+1>=10{print $1,$3,$7}' /etc/passwd
      operator 11 /sbin/nologin
      games 12 /sbin/nologin
      ftp 14 /sbin/nologin
      nobody 99 /sbin/nologin
      dbus 81 /sbin/nologin
      tss 59 /sbin/nologin
      sshd 74 /sbin/nologin
      postfix 89 /sbin/nologin
      ntp 38 /sbin/nologin
      named 25 /sbin/nologin
      [root@web_server01~]# 
      
      
      #检查未初始化密码的用户
      [root@web_server01~]# awk -F : '$2=="!!"{print $1,$2}' /etc/shadow  
      systemd-network !!
      dbus !!
      polkitd !!
      tss !!
      abrt !!
      sshd !!
      postfix !!
      ntp !!
      nginx !!
      rivers !!
      named !!
      
      #打印密码为空的用户
      [root@web_server01~]#awk -F : '$2==""{print $1}' /etc/shadow  
      
      

    14 系统资源/进程先关命令

    14.1 ps 命令 — 查看系统进程信息

    • 案例演示

      # 常用参数
      ps                  查看系统进程信息
      ps -ef              查看所有详细的进程信息
      
      # 查看httpd 进程
      [root@web_server01~]# ps -ef |grep httpd
      root      11176      1  0 15:03 ?        00:00:01 /usr/sbin/httpd -DFOREGROUND
      apache    11177  11176  0 15:03 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
      apache    11178  11176  0 15:03 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
      apache    11179  11176  0 15:03 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
      apache    11180  11176  0 15:03 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
      apache    11181  11176  0 15:03 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
      root      12336  11691  0 21:26 pts/0    00:00:00 grep --color=auto httpd
      
      

    14.2 kill命令 — 删除指定进程

    • 案例演示

      kill pid            删除指定pid号码的进程
      kill -9 pid         强制删除指定pid号码的进程
      
      [root@web_server01~]# kill -9 11177
      

    14.3 systemctl命令 —管理服务程序的运行状态

    • 案例演示

      # 常用参数
      systemctl start 	  服务名称  	--- 启动服务
      systemctl stop 		  服务名称  	--- 停止服务
      systemctl restart 	  服务名称 	    --- 重启服务
      systemctl status 	  服务名称  	--- 查看服务详细的运行状态
      systemctl disable     服务名称  	--- 让服务开机不要运行
      systemctl enable   	  服务名称  	--- 让服务开机运行
      systemctl is-active   服务名称 	    --- 检查确认服务是否运行
      systemctl is-enabled  服务名称 	    --- 检查确认服务是否开机运行
      
      
      # 一个命令关闭 开机自启动/关闭防火墙
      [root@web_server01~]# systemctl disable firewalld --now
      [root@web_server01~]#
      

    14.4 uptime 命令 — 查看系统负载

    • 案例演示

      [root@web_server01~]# uptime
       04:15:24 up 2 days, 13:05,  1 user,  load average: 0.01, 0.02, 0.05
      [root@web_server01~]#
      现在时间、系统已经运行了多长时间、目前有多少登录用户、load average:系统在过去的1分钟、5分钟和15分钟内的平均负载。
      load average:这三个值的大小一般不能大于系统CPU的个数,例如,本输出中系统有8个CPU,如果load average的三个值长期大于8时,说明CPU很繁忙,负载很高,可能会影响系统性能,但是偶尔大于8时,倒不用担心,一般不会影响系统性能。
      
      [root@web_server01~]# uptime -p   #以漂亮的格式显示机器正常运行的时间          
      up 2 days, 13 hours, 9 minutes          
      [root@web_server01~]#uptime -s   #系统自开始运行时间 年-月-日 小时-分钟-秒
      2021-06-08 15:09:34
      [root@web_server01~]# uptime -h   #显示帮助信息
      
      
      服务器1: load average: 0.15, 0.08, 0.01 1核
      服务器2: load average: 4**.15,** 6**.08,** 6**.01** 1核
      服务器3: load average: 10**.15,** 10**.08,** 10**.01** 4核
      答案:服务器2
      

    14.5 vmstat 命令 —监控CPU

    • 案例演示

      [root@web_server01~]#vmstat 
      procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
       r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
       1  0      0 3059368   2104 230268    0    0     0     0   28   26  0  0 100  0  0
      r列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU不足,需要增加CPU。
      
      b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
      
      us列显示了用户进程消耗的CPU 时间百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,就需要考虑优化程序或算法。
      
      sy列显示了内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源很多。
      根据经验,us+sy的参考值为80%,如果us+sy大于 80%说明可能存在CPU资源不足。
      

    14.6 top命令 —实时监控系统CPU

    • 案例演示

      [root@web_server01~]# top
      top - 04:50:43 up 2 days, 13:41,  1 user,  load average: 0.10, 0.06, 0.06
      Tasks: 102 total,   1 running, 101 sleeping,   0 stopped,   0 zombie
      %Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
      KiB Mem :  3865308 total,  2912528 free,   573852 used,   378928 buff/cache
      KiB Swap:   524284 total,   524284 free,        0 used.  3028580 avail Mem 
      
         PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND            
       38151 root      20   0       0      0      0 S   0.3  0.0   0:01.93 kworker/0:0        
           1 root      20   0  125332   3828   2496 S   0.0  0.1   0:04.48 systemd            
           2 root      20   0       0      0      0 S   0.0  0.0   0:00.33 kthreadd
           
           
       top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析。
      
      第一行数据相当于uptime命令输出。11:00:54是当前时间,up 54 days,23:55 是系统已经运行的时间,6 users表示当前有6个用户在登录,load average:16.32,18.75,21.04分别表示系统一分钟平均负载,5分钟平均负载,15分钟平均负载。
      
      平均负载
      平均负载表示的平均活跃进程数,包括正在running的进程数,准备running(就绪态)的进程数,和处于不可中断睡眠状态的进程数。如果平均负载数刚好等于CPU核数,那证明每个核都能得到很好的利用,如果平均负载数大于核数证明系统处于过载的状态,通常认为是超过核数的70%认为是严重过载,需要关注。还需结合1分钟平均负载,5分钟平均负载,15分钟平均负载看负载的趋势,如果1分钟负载比较高,5分钟和15分钟的平均负载都比较低,则说明是瞬间升高,需要观察。如果三个值都很高则需要关注下是否某个进程在疯狂消耗CPU或者有频繁的IO操作,也有可能是系统运行的进程太多,频繁的进程切换导致。比如说上面的演示环境是一台8核的centos机器,证明系统是长期处于过载状态在运行。
      
      第二行的Tasks信息展示的系统运行的整体进程数量和状态信息。102 total 表示系统现在一共有102个用户进程,1 running 1个进程正在处于running状态,101 sleeping 表示101 个进程正处于sleeping状态,0 stopped 表示 0 个进程正处于stopped状态,0 zombie表示 有0个僵尸进程。
      
      第3行的%Cpu(s)表示的是总体CPU使用情况。
      us user 表示用户态的CPU时间比例
      sy system 表示内核态的CPU时间比例
      ni nice 表示运行低优先级进程的CPU时间比例
      id idle 表示空闲CPU时间比例
      wa iowait 表示处于IO等待的CPU时间比例
      hi hard interrupt 表示处理硬中断的CPU时间比例
      si soft interrupt 表示处理软中断的CPU时间比例
      st steal 表示当前系统运行在虚拟机中的时候,被其他虚拟机占用的CPU时间比例。
      
      第4,5行显示的是系统内存使用情况。单位是KiB。totol 表示总内存,free 表示没使用过的内容,used是已经使用的内存。buff表示用于读写磁盘缓存的内存,cache表示用于读写文件缓存的内存。avail表示可用的应用内存。
      
      第6行开始往后表示的是具体的每个进程状态:
      
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 
      PID 进程ID
      USER 进程所有者的用户名,例如root
      PR 进程调度优先级
      NI 进程nice值(优先级),越小的值代表越高的优先级
      VIRT 进程使用的虚拟内存
      RES 进程使用的物理内存(不包括共享内存)
      SHR 进程使用的共享内存
      CPU 进程使用的CPU占比
      MEM 进程使用的内存占比
      TIME 进程启动后到现在所用的全部CPU时间
      COMMAND 进程的启动命令(默认只显示二进制,top -c能够显示命令行和启动参数)
      

    14.7 iostat命令 —磁盘I/O性能评估

    • 案例演示

      iostat被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。
      [root@web_server01~]# iostat
      -bash: iostat: command not found
      [root@web_server01~]# yum -y install sysstat
      [root@web_server01~]#iostat -d 1 10              #没隔1秒,持续10次
      Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     06/11/2021      _x86_64_        (2 CPU)
      
      Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
      sda               0.08         1.36         0.66     304530     146757
      scd0              0.00         0.00         0.00       1028          0
      dm-0              0.00         0.01         0.00       2228          0
      
      对上面每项的输出解释如下:
      kB_read/s表示每秒读取的数据块数。
      kB_wrtn/s表示每秒写入的数据块数。
      kB_read表示读取的所有块数。
      kB_wrtn表示写入的所有块数。
      可以通过kB_read/s和kB_wrtn/s的值对磁盘的读写性能有一个基本的了解,如果kB_wrtn/s值很大,表示磁盘的写操作很频繁,可以考虑优化磁盘或者优化程序,如果kB_read/s值很大,表示磁盘直接读取操作很多,可以将读取的数据放入内存中进行操作。
      
      

    14.8 netstat/ss — 显示网络端口状态

    • 案例演示

      # 常用参数
      -a	显示所有连线中的Socket
      -p	显示正在使用Socket的程序识别码和程序名称
      -u	显示UDP传输协议的连线状况
      -i
      显示网络界面信息表单
      -n	直接使用IP地址,不通过域名服务器
      
      # 查看httpd 服务端口状态
      [root@web_server01/etc/yum.repos.d]# netstat -lntup|grep httpd
      tcp6       0      0 :::80                   :::*                    LISTEN      11176/httpd         
      
      # 显示端口 
      [root@web_server01/etc/yum.repos.d]# ss -lant
      State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
      LISTEN      0      128             *:22                          *:*                  
      LISTEN      0      100     127.0.0.1:25                          *:*                  
      ESTAB       0      0        10.0.0.7:22                   10.0.0.1:53220              
      ESTAB       0      52       10.0.0.7:22                   10.0.0.1:55483              
      LISTEN      0      128            :::80                         :::*                  
      LISTEN      0      128            :::22                         :::*                  
      LISTEN      0      100           ::1:25                         :::*                  
      [root@web_server01/etc/yum.repos.d]# 
      
      

    14.9 firewall-cmd 命令 — 防火墙相关命令

    • 案例演示

      # 开启/关闭防火墙 
      systemctl start|stop firewalld.service
      
      # 查看防火墙转态
      [root@web_server01~]# firewall-cmd --state
      running
      [root@web_server01~]# 、
      
      # 查看防火墙配置端口
      [root@web_server01~]# firewall-cmd --list-all
      
      # 放行防火8080 端口
      [root@web_server01~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
      success
      [root@web_server01~]# firewall-cmd --reload
      success
      
      # 查看现有规则
      [root@web_server01~]# firewall-cmd --zone=public --list-ports
      8080/tcp
      
      #添加多个端口
      [root@web_server01~]# firewall-cmd --permanent --zone=public --add-port=8080-8083/tcp
      
      
      #删除某个端口
      [root@web_server01~]#-cmd --permanent --zone=public --remove-port=81/tcp
      
      
      # 针对某个 IP开放端口
      [root@web_server01~]#firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.7" port protocol="tcp" port="6379" accept"
      
      # 删除某个IP
      [root@web_server01~]#firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="10.0.0.7" accept"
      
      # 针对一个ip段访问
      [root@web_server01~]#firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept"
      
      [root@web_server01~]#firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9200" accept"
      

    15.其它命令

    • 案例演示

       #设置日期
       date                查看时间信息和修改时间信息
       date "+%F_%T"
       date -s             设置系统时间 
       date -d             显示未来或过去的时间信息
      
      
      # apt 常用命令
      
      #列出所有可更新的软件清单命令:sudo apt update
      
      #升级软件包:sudo apt upgrade
      #列出可更新的软件包及版本信息:
      apt list --upgradeable
      
      #升级软件包,升级前先删除需要更新软件包:
      sudo apt full-upgrade
      
      #安装指定的软件命令:
      sudo apt install <package_name>
      
      #安装多个软件包:
      sudo apt install <package_1> <package_2> <package_3>
      
      #删除软件包命令:
      sudo apt remove <package_name>
      
      #清理不再使用的依赖和库文件: 
      sudo apt autoremove
      
      #查找软件包命令: 
      sudo apt search <keyword>
      
      #列出所有已安装的包:
      apt list --installed
      
      #列出所有已安装的包的版本信息:
      apt list --all-versions
      

    常用快捷方式

    • 案例演示

      # 快捷方式:
      01. ctrl+c             	中断命令执行操作过程
      02. ctrl+l             	清屏操作
      03. ctrl+d             	注销功能
      04. tab               	补全快捷键 补全目录路径或文件名称信息/命令   
      05. 方向键上下         	调取之前输入过的历史命令
      06. ctrl+a              快速将光标移动到行首 a b c d
      07. ctrl+e              快速将光标移动到行尾
      08. ctrl+左右方向键    	按照一个英文单词进行移动光标
      09. esc+.               将上一个命令最后一个信息进行调取
      10. ctrl+u     			将光标所在位置到行首内容进行删除(剪切)
      11. ctrl+k     			将光标所在位置到行尾内容进行删除(剪切)
      12. ctrl+y     			粘贴剪切的内容
      13. ctrl+s     			xshell进入到了锁定状态 suo锁
      14. ctrl+q     			解除锁定状态           quit推出锁定状态
      15. ctrl+r              快速搜索历史命令						
      

    总结

    坚持很难,但最后一定会有所收获。linux 学习的过程是一个很枯燥的事情,对于很多刚入门的人来说,命令太多,参数太多,根本记不住的 困惑,其实作为 过来人,学习方式就是四个字熟能生巧

    我们可以找一个好的教材,然后找一份质量好的视频,看一遍,然后对着教材在学习一遍。形成自己的笔记,建议第一遍纸质的笔记,第二遍可以是电子档的。每一遍都要重复的去实验,做到理论+实践。相信进过1年,你会有质的飞跃。以上的命令总结是平时用的较多,整理的,想起来了的命令,就会慢慢积累,如果你觉得有用,就收藏起来吧!

    以梦为马,不负韶华,流年笑掷,未来可期

    展开全文
  • Linux命令大全

    万次阅读 多人点赞 2016-08-05 09:09:35
    Linux命令大全,详细解说
    1.添加执行权限:chmod 777     chmod u+x 文件名(可执行权限)

    2.创建与删除目录:mkdir  目录名   (只能建一个目录)          
                                   mkdir -p  test1/test2/test3   (-p表示可以建多级目录)
                                   mkdir -m  777  test  (-m表示建立目录时直接加上权限)
                 删除目录:rmdir  目录名   (删除一个空目录)
                                   rmdir  -p  目录名  (-p连同上层空目录一起删除)
                                   rmdir  -r   目录名  (-r删除目录下所有内容)

    3.重启命令:1、reboot

                2、shutdown -r now 立刻重启(root用户使用)

                3、shutdown -r 10 过10分钟自动重启(root用户使用)

                4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用)

    4.关机命令:1、halt   立刻关机

                2、poweroff  立刻关机

                3、shutdown -h now 立刻关机(root用户使用)

                4、shutdown -h 10 10分钟后自动关机


    5.查看IP:ifconfig

    6.切换用户:su 用户名

    7.复制:cp 原文件名 新文件名   (复制并重命名)
                 cp  -p  文件名   (-p连同档案的属性一起复制)
                 cp  -d  文件名   (-d表示若来源文件为链接文件属性,则复制链接文件属性,而不是源文件本身)
                 cp  -r   文件名   (-r表示递归持续复制,用于目录的复制行为)
                 cp  -a  文件名   (-a表示-pdr)
                 cp  -i   文件名   (-i表示若目标文件存在时,在覆盖时会先询问动作的进行)

    8.查看目录下所有文件: ls -l  目录  (-l显示档案的属性和权限,相当于 ll)
                                           ls  -a  目录 (-a显示所有档案,包含隐藏的)
                                           ls  --full-time  目录  (显示完整的时间)
                                           ls  --color=alway  目录  (显示颜色  可选alway  never  auto)
                                           ls  -R  目录   (连同子目录内容一起显示,相当于显示目录下所有内容)
                                           ls  -t  目录   (按时间排列显示)
                                           ls  -S  目录  (按档案容量大小显示)i

    9.删除文件:rm -rf 文件名
                        rm  -r  文件名  (-r 表示递归删除,最常用在目录删除)
                        rm  -f  文件名  (-f 表示忽略不存在的档案,不会出现警告信息)
                        rm  -i  文件名  (-i 表示互动模式,删除之前会询问是否动作

    10.移动文件:mv 文件名          mv 旧文件名 新文件名(修改文件名)
                          mv  -f  文件名   (如果目标档案已存在,不询问,强制覆盖)
                          mv  -i  文件名   (如果目标档案已存在,就会询问是否覆盖)
                          mv  -u 文件名   (如果目标档案已存在且source比较新才会更新)

    11.启动tomcat: ./startup.sh(bin目录下)

    12.输出命令:echo

    13.查看文件内容:tail -f 文件名    
                                 cat  由第一行开始显示档案内容 
                                          cat  -b  可列出行号,仅针对非空白行
                                          cat  -n  连同空白行一起列出行号
                                          cat  -A  可列出一些特殊字符,而不是空白
                                 tac  由最后一行开始显示档案内容
                                 nl  显示的时候顺着显示行号
                                 more  一页一页的显示档案内容
                                           more程序运行时可有几个按键:
                                                         space:向下翻一页
                                                         enter:向下翻一行
                                                          /字符串:在显示的内容中查找【字符串】这个关键字
                                                          :f    立刻显示文件名及当前显示的行数
                                                          q:代表立刻离开more,不在显示该档案内容
                                                          b:代表往回翻页
                                 less  和more相似,不同的是,可以往前翻页
                                                         可以使用pageup和pagedown 两个按键前后翻页
                                 head 只看头几行
                                                         head  -n  20  表示显示前20行数据
                                                         head  -n  -20  表示除了后20行全部显示
                                  tail    只看尾巴几行
                                                         tail  -n  20  表示显示后20行数据
                                                         tail  -f   表示持续显示后面所接数据(动态显示)
                                 od  以二进制的方式读取文件内容
                                                        od  -t  【type】输出类型
                                                    type可为a(默认)、c(ACSll码)、d(十进制)、f(浮点)、o(八进制)、x(十六进制)
                                 

    14.查看当前所在目录:pwd

    15.格式化hadoop: hadoop namenode -format

    16.查看服务进程: ps -ef | grep  进程名    (mysqld:mysql进程名)(Bootstrap:tomcat进程名)

    17.查看Tomcat实时日志:tail -f catalina.out  (进入tomcat日志目录)

    18.启动mysql:/ect/init.d/mysql start (前面为mysql的安装路径)     service mysqld start

    19.重启mysql:mysqladmin restart

    20.关闭mysql:mysqladmin shutdown

    21.修改mysql用户密码:mysqladmin -u用户名 -p旧密码 password 新密码


    22.nginx的启动: . /nginx   (进入相应目录/usr/local/openresty/nginx/sbin)

    23.nginx的停止: nginx  -s  stop  


    24.创建用户组:groupadd  用户组名

    25.创建用户:useradd  用户名 

    26.将用户添加到用户组:gpasswd  -a  用户名  用户组名

    27.Linux启动时进入的模式(图形界面、命令界面)调整:cd/etc/inittab     (3命令界面、5图形界面)

    28.启动mongodb:(root权限) /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend  --port=27017 --fork
    (设置开机自启动: vi /etc/rc.local加入以下内容)
    /usr/local/mongodb/bin/mongod -dbpath=/usr/local/mongodb/data --fork --port 27017 --logpath=/usr/local/mongodb/logs --logappend --auth

    29.进入mongodb数据库的CLI管理界面:cd到mongodb目录下的bin文件夹,执行命令./mongo

    30.执行wordcount:hadoop jar /home/hadoop/hadoop-2.3.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.3.0.jar wordcount /data/* /output

    31.杀死进程:kill -s 9 进程id

    32.查看目录下所有文件大小:ls  -lht     或者用ll

    33.查看目录下所有文件大小:du -sh 文件目录(也可以du -sh文件名查看单一一个文件大小)

    34.显示当前时间:date

    35.显示当前语系:echo $LANG

    36.修改语系:LANG=en_US(英文)

    37.显示日历:cal(显示当月日历)  
                        cal 2015 (显示2015年整年日历) 
                        cal 2 2015(显示2015年2月份日历)  

    38.显示计算器:bc

    39.显示格式化时间:date +%Y/%m/%d/%H/%M   (年 月 日 时 分 秒)

    40.修改档案群组:chgrp  群组名  档案或目录

    41.修改档案拥有者:chown  [-R] 账号名称  档案或目录
                                  chown  [-R] 账号名称:组名   档案或目录 
                                  (-R可选,表示连同次目录下的所有档案都变更)

    42.修改档案权限
                  (方法一):chomd  777 档案名或目录
                               ( rwx分别代表数字:421)
                               (-rwxrwxrwx代表777   所有用户可读可写可执行)
           (三个身份权限,分别代表 自己权限user、同群组用户权限group、其他用户权限other)
                  (方法二):chomd  u=rwx,g=rwx,o=rwx 档案名   (可读可写可执行  -rwxrwxrwx)
                                     chomd  a+w 档案名      (为所有身份加上可读权限  a代表所有身份) 
                                             (u:自己、 g:同群组 、 o:其他、   =设定 、  +加入、   -除掉)  

    43.当前目录:./       上一层目录:../      前一个工作目录:-         目前用户家目录:~

    44.修改档案时间或建制新档:  touch  档案名    (建立空档)
                                                   touch  [acdmt]  档案名
                                                   touch  -a   仅修订档案内容读取时间
                                                   touch  -c   仅修改档案的时间,若档案不存在不建立新档
                                                   touch  -d   后面可以接欲修订的日期,也可使用--date=a"日期或时间"
                                                   touch  -m  仅修改档案内容改变时的时间
                                                   touch   -t   后面可以接欲修订的日期,格式为[YYMMDDhhmm]

    45.查看当前目录或档案的权限:umask  (以数字显示,看后三位)、umask  -S  (以字母形式显示)

    46.配置文件隐藏属性:chattr   [+-=]  [ASacdistu]  档案或目录名称
                  
                  

    47.显示档案隐藏属性:lsattr  [-adR]  档案或目录
                                        lsattr  -a  (将隐藏文件的属性也秀出来)
                                        lsattr  -d (如果连接的是目录,仅显示目录本身的属性,而非目录内的文件名)
                                        lsattr  -R (连同子目录的数据也一并列出来)

    48.寻找执行档:which  [-a]  命令  (将所有由path目录中可以找到的指令列出,而不止第一个被找到的指令)

    49.寻找特定档案:whereis  [-bmsu]  档案或目录名
                                 whereis  -b   (只找binary格式的档案)
                                 whereis  -m  (只找在说明文档manual路径下的档案)
                                 whereis  -s    (只找source来源档案)
                                 whereis  -u   (搜寻不在上述三个项目当中的特殊档案)

                                 locate  [-ir]  keyword    (keyword代表档案名的部分字符)
                                 locate  -i   (忽略大小写差异)
                                 locate  -r   (后面可接正规显示法的显示方式)

                                 find  [PATH]  [option] [action] 
                                     
                                     
                                     
                                     
                                     
                                  

              注:whereis和locate是查询linux内置数据库的,所以查询效率高,默认数据库每天更新一次,所以新
                     建 的档案是查不到的,必须手动更新数据库,更新数据库的方法:updatedb

    50.命令别名设定与取消:alias 
                              在命令行输入alias可以查看所有的命令别名
                              设置别名:alias  别名='命令'         例如:alias  lm ='ls -al'
                              unalias  别名    (取消别名)         例如:unalias  lm

    51.查看命令的类型(外部指令或内建指令):type  [-tpa]  指令名称
                                                不加任何参数时,type会显示命令是内建命令还是外部命令
                                                -p:如果后边接的命令是外部指令,才会显示完整文件名
                                                -a:会由path变量定义的路径中,将所含的name的指令都显示出来,包含alias
                                                 -t:当加入-t时,type会将name以底下这些字眼显示出他的含义:
                                                                file:表示为外部指令
                                                                alias:表示为命令别名的指令
                                                                builtin:表示为base内建的指令

    52.查看当前所有的环境变量:env  或  export

    53.查看当前所有的环境变量和变量:set
         清除变量:unset  变量名

    54.查看Linux支持多少种语系:locale  -a

    55.接收键盘输入的变量:read  [-pt]  变量名
                                         -p:后边可以接提示字符
                                         -t :后边可以接等待的秒数

    56.宣告变量的类型:declare  或  typeset 
                                    declare  [-aixr]  变量名
                                     -a:将后边的变量名定义为数组类型
                                     -i:将后边的变量名定义为整数类型
                                     -x:与export用法一样,将后边的变量变成环境变量
                                     -r:将变量设为readonly类型,该变量不可被更改内容,也不可unset

    57.变量内容的删除与取代:#   (代表从前向后删除)
                                                #:删除符合取代文字最短的那个
                                                ##:删除 符合取代文字最长的那个
                                                %   (代表从后向前删除)
                                                %: 删除符合取代文字最短的那个
                                                %%:删除符合取代文字最长的那个
                                                /    (代表取代)
                                                / : 一条斜线,仅第一个旧字符串会被取代
                                                //: 两条斜线,全部就字符串都会被新字符串取代


    58.变量的测试与内容替换:“-”(减号)
                                例如:测试变量username是否存在:username=${username-root}
                                当username存在时,显示username的实际值,否则,为username赋值为root
                                如果要使username为空值时也将username赋值为root,则需要在大括号内加上“:”
                                即:username=${username:-root}

    59.历史命令:history
                       history   n  :n为数字,意识为要列出最近n笔命令的列表,不加n表示全部
                        history   -c :将目前shell中所有的history全部清除掉
                       history   -a :将目前新增的history指令新增入histfile中,如没有加入histfile中,则预设写入                             
                                              ~/.bash_history
                       history   -r :将histfile的内容读到目前这个shell的history记忆中
                       history   -w :将目前的history记忆内容写入histfile中
                       history的相关功能:!number  :number为数字,执行第几笔指令的意思
                                                !command  :由最近指令向前搜寻指令串以command开头的那个指令并执行
                                                 !!:执行上一个指令

    60.组合按键功能:
            

    61.通配符:
            

    62.特殊符号:
           
            

    63.撷取命令:cut 、grep
                         cut:这个指令可以将一短讯息的一段给他切出来(截取)
                        
                        grep:分析一短讯息,若当中有我们需要的就拿出来
                        

    64.远程文件复制:scp  文件名   目标用户名@目标IP:目标路径

    65.解压缩命令:tar命令

                       解包:tar zxvf FileName.tar

                       打包:tar czvf FileName.tar DirName

                   gz命令

                   解压1:gunzip FileName.gz

                   解压2:gzip -d FileName.gz

                   压缩:gzip FileName

                         .tar.gz 和 .tgz

                   解压:tar zxvf FileName.tar.gz

                   压缩:tar zcvf FileName.tar.gz DirName

                       压缩多个文件:tar zcvf FileName.tar.gz DirName1 DirName2 DirName3 ...

                  bz2命令

                   解压1:bzip2 -d FileName.bz2

                   解压2:bunzip2 FileName.bz2

                   压缩: bzip2 -z FileName

                          .tar.bz2

                   解压:tar jxvf FileName.tar.bz2

                   压缩:tar jcvf FileName.tar.bz2 DirName

                  bz命令

                  解压1:bzip2 -d FileName.bz

                  解压2:bunzip2 FileName.bz

                  压缩:未知

                        .tar.bz

                  解压:tar jxvf FileName.tar.bz
          
                 Z命令

                  解压:uncompress FileName.Z

                  压缩:compress FileName

                        .tar.Z

                  解压:tar Zxvf FileName.tar.Z

                  压缩:tar Zcvf FileName.tar.Z DirName

                 zip命令

                  解压:unzip FileName.zip

                  压缩:zip FileName.zip DirName

    展开全文
  • Linux基础-文字处理命令汇总.docx
  • linux系列之常用运维命令整理笔录

    万次阅读 多人点赞 2019-10-28 17:33:21
    本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些...

    系列博客专栏:

    本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新,本博客命令基于Centos系统

    在这里插入图片描述

    一、系统监控

    1、free命令使用

    • free命令简介
      free 命令能够显示系统中物理上的空闲和已用内存,还有交换内存,同时,也能显示被内核使用的缓冲和缓存

    • free命令语法

    语法:free [param]
    

    param可以为:

    • -b:以Byte为单位显示内存使用情况;

    • -k:以KB为单位显示内存使用情况;

    • -m:以MB为单位显示内存使用情况;

    • -o:不显示缓冲区调节列;

    • -s<间隔秒数>:持续观察内存使用状况;

    • -t:显示内存总和列;

    • -V:显示版本信息。

    • free命令使用
      在这里插入图片描述
      Mem:表示物理内存统计

    • total:表示物理内存总数(total=used+free)

    • used:表示系统分配给缓存使用的数量(这里的缓存包括buffer和cache)

    • free:表示未分配的物理内存总数

    • shared:表示共享内存

    • buffers:系统分配但未被使用的buffers 数量。

    • cached:系统分配但未被使用的cache 数量。

    -/+ buffers/cache:表示物理内存的缓存统计

    • (-buffers/cache) 内存数: (指的第一部分Mem行中的used – buffers – cached)
    • (+buffers/cache) 内存数: (指的第一部分Mem行中的free + buffers + cached)

    (-buffers/cache)表示真正使用的内存数, (+buffers/cache) 表示真正未使用的内存数

    Swap:表示硬盘上交换分区的使用情况

    2、ulimit命令使用

    ulimit用于显示系统资源限制的信息
    语法:ulimit [param]
    param参数可以为:

    • -a  显示目前资源限制的设定。
    • -c <core文件上限>  设定core文件的最大值,单位为区块。
    • -d <数据节区大小>  程序数据节区的最大值,单位为KB。
    • -f <文件大小>  shell所能建立的最大文件,单位为区块。
    • -H  设定资源的硬性限制,也就是管理员所设下的限制。
    • -m <内存大小>  指定可使用内存的上限,单位为KB。
    • -n <文件数目>  指定同一时间最多可开启的文件数。
    • -p <缓冲区大小>  指定管道缓冲区的大小,单位512字节。
    • -s <堆叠大小>  指定堆叠的上限,单位为KB。
    • -S  设定资源的弹性限制。
    • -t <CPU时间>  指定CPU使用时间的上限,单位为秒。
    • -u <程序数目>  用户最多可开启的程序数目。
    • -v <虚拟内存大小>  指定可使用的虚拟内存上限,单位为KB

    在这里插入图片描述

    3、top命令使用

    top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具,TOP命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,有点像window系统的任务管理器

    语法:top [param]
    

    param为:

    • -b:以批处理模式操作;
    • -c:显示完整的治命令;
    • -d:屏幕刷新间隔时间;
    • -I:忽略失效过程;
    • -s:保密模式;
    • -S:累积模式;
    • -u [用户名]:指定用户名;
    • -p [进程号]:指定进程;
    • -n [次数]:循环显示的次数。

    top命令分为上下两个部分:

    • 系统统计信息
    • 系统进程信息
      在这里插入图片描述
      系统统计信息
    top - 11:38:01 up 231 days,  2:06,  1 user,  load average: 0.88, 0.22, 0.18
    Tasks: 170 total,   1 running, 169 sleeping,   0 stopped,   0 zombie
    %Cpu(s): 38.7 us,  3.5 sy,  0.0 ni, 42.0 id, 15.5 wa,  0.0 hi,  0.3 si,  0.0 st
    KiB Mem :  8010580 total,   927820 free,  2411572 used,  4671188 buff/cache
    KiB Swap:  4063228 total,  2933688 free,  1129540 used.  5153128 avail Mem 
    
    • row1:任务队列信息,同 uptime 命令的执行结果
      top - 11:38:01 up 231 days, 2:06, 1 user, load average: 0.88, 0.22, 0.18

      • 11:38:01 (当前系统时间)
      • up 231 days, 2:06(系统运行时间)
      • 1 user (当前登录用户数)
      • load average: 0.88, 0.22, 0.18 (系统的平均负载数,表示 1分钟、5分钟、15分钟到现在的平均数)
    • row2:进程统计信息
      Tasks: 170 total, 1 running, 169 sleeping, 0 stopped, 0 zombie

      • 170 total(系统当前总进程总数)
      • 1 running (正在运行的进程数)
      • 169 sleeping(睡眠进程数)
      • 0 stopped (停止进程数)
      • 0 zombie (僵尸进程数)
    • row3:CPU 统计信息
      %Cpu(s): 38.7 us, 3.5 sy, 0.0 ni, 42.0 id, 15.5 wa, 0.0 hi, 0.3 si, 0.0 st

      • 38.7 us, (用户空间CPU占用率)
      • 3.5 sy (内核空间CPU占用率)
      • 0.0 ni (用户进程空间改变过优先级的进程CPU的占用率)
      • 42.0 id(空闲CPU占有率)
      • 15.5 wa (等待输入输出的CPU时间百分比)
      • 0.0%hi (硬件中断请求)
      • 0.3%si (软件中断请求)
      • 0.0%st (分配给运行在其它虚拟机上的任务的实际 CPU时间)
    • row4:内存状态
      KiB Mem : 8010580 4671188 , 927820 free, 2411572 used, 4671188 buff/cache

      • 4671188 total (物理内存总量 )
      • 2411572 used (已使用的内存 )
      • 927820 free (空闲内存 )
      • 4671188 buffers (内核缓存使用)
        ps:以k为单位
    • row5:swap交换分区信息
      KiB Swap: 4063228 total, 2933688 free, 1129540 used. 5153128 avail Mem

      • 4063228 total (交换分区总量 )
      • 1129540 used (已使用交换分区内存 )
      • 2933688 free (空闲交换分区 )
      • 5153128 cached (缓冲交换区 )

    在这里插入图片描述

    系统进程信息

    • PID :进程id
    • USER :进程所有者的用户名
    • PR :进程优先级
    • NI :nice值。负值表示高优先级,正值表示低优先级
    • VIRT :进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    • RES :进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    • SHR :共享内存大小,单位kb
    • S :进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
    • %CPU :上次更新到现在的CPU时间占用百分比
    • %MEM :进程使用的物理内存百分比
    • TIME+ :进程使用的CPU时间总计,单位1/100秒
    • COMMAND :进程名称[命令名/命令行]

    在这里插入图片描述

    按“1”键,可打开或关闭显示详细CPU统计信息:
    在这里插入图片描述
    按字母“B”键,可打开或关闭当前进程的显示效果
    在这里插入图片描述

    4、df命令使用

    df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

    语法:df(选项)(参数)

    选项:

    -a或–all:包含全部的文件系统;
    –block-size=<区块大小>:以指定的区块大小来显示区块数目;
    -h或–human-readable:以可读性较高的方式来显示信息;
    -H或–si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
    -i或–inodes:显示inode的信息;
    -k或–kilobytes:指定区块大小为1024字节;
    -l或–local:仅显示本地端的文件系统;
    -m或–megabytes:指定区块大小为1048576字节;
    –no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;
    -P或–portability:使用POSIX的输出格式;
    –sync:在取得磁盘使用信息前,先执行sync指令;
    -t<文件系统类型>或–type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;
    -T或–print-type:显示文件系统的类型;
    -x<文件系统类型>或–exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;
    –help:显示帮助;
    –version:显示版本信息。

    参数:

    文件:指定文件系统上的文件。

    比较常用的有:

    • df -a 查看全部的文件系统
    • df -h查看磁盘使用情况
    • df -i 查看inode使用情况

    在这里插入图片描述

    5、ps命令使用

    ps命令用于查看进程统计信息

    常用参数:

    • a:显示当前终端下的所有进程信息,包括其他用户的进程。
    • u:使用以用户为主的格式输出进程信息。
    • x:显示当前用户在所有终端下的进程。
    • -e:显示系统内的所有进程信息。
    • -l:使用长(long)格式显示进程信息。
    • -f:使用完整的(full)格式显示进程信息。

    在使用中可以加上grep命令一起使用,也可以单独使用

    # ps命令单独使用的情况
    ps -elf tomcat
    #结合管道操作和grep命令进行过滤,用于查询某一个进程的信息
    ps -elf | grep tomcat
    

    6、crontab 命令

    crontab 命令,用于定时程序的命令
    -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
    -r : 删除目前的时程表
    -l : 列出目前的时程表

    二、文件操作

    1、tail查看文件

    tail 命令可用于查看文件的内容,语法为

    tail [param] [filename]
    

    其中param可为:

    • -f :循环读取
    • -q :不显示处理信息
    • -v :显示详细的处理信息
    • -c [数目]: 显示的字节数
    • -n [行数]: 显示文件的尾部 n 行内容
    • –pid=PID :与-f合用,表示在进程ID,PID死掉之后结束
    • -q, --quiet, --silent :从不输出给出文件名的首部
    • -s, --sleep-interval=S :与-f合用,表示在每次反复的间隔休眠S秒

    2、查看文件情况

    ll -ah命令,可以用于查看文件情况

    ll -ah
    

    3、文件权限设置

    Linux的文件基本权限有9个,分别是owenr、group、others三种身份各自有自己的r、w和x,比如“rwxrwxrwx”,就表示owener具有r(read 读)、w(write 写)、x(execute 访问)权限,同样group和others同样具有r、w、x权限,可以用xftp查看文件权限

    在这里插入图片描述

    可以使用数字表示权限:

    r->4

    w->2

    x->1

    当文件权限为“rwxrwxrwx”时,分数是:

    owner->4+2+1=7

    group->4+2+1=7

    others->4+2+1=7

    此时文件的权限数字就是777

    然后要给文件file赋权的话,就可以使用Linux命令:

    chmod 777 file
    

    owner、group和others三种身份各自的三个权限,用u、g、o代表三种身份,用a(all)代表所有身份,所以还有下面的Linux命令

    chmod u|g|o|a  =(设置权限)|+(添加权限)|-(减少权限)  r|w|x  文件或者目录
    

    eg:给文件file赋值权限

        chmod u=rwx file
    

    4、文件上传下载

    在不使用xftp等linux工具的情况,可以通过linux命令,sz命令是利用ZModem协议来从Linux服务器传送文件到本地,一次可以传送一个或多个文件。

    • 下载文件
      sz命令发送文件到本地:
    sz filename
    

    在这里插入图片描述
    敲命令之后,直接弹出下载保存窗口页面

    • 上传文件
    rz
    

    敲命令之后,直接弹出上传窗口页面
    在这里插入图片描述

    rz、sz命令需要有如下条件:

    • linux系统
    • root权限
    • lrzsz安装包

    lrzsz安装步骤:

    // 编译安装
    //root 账号登陆后,依次执行以下命令:
    tar zxvf lrzsz-0.12.20.tar.gz
    cd lrzsz-0.12.20
    ./configure
    make
    make install
    //上面安装过程默认把lsz和lrz安装到了/usr/local/bin/目录下,现在我们并不能直接使用,下面创建软链接,并命名为rz/sz:
    cd /usr/bin
    ln -s /usr/local/bin/lrz rz
    ln -s /usr/local/bin/lsz sz
    

    Centos可以直接这样安装

    yum install lrzsz -y
    

    5、压缩文件解压

    linux解压zip压缩文件可以用unzip命令,如果没安装,可以先安装

    yum install -y unzip zip
    

    语法一般为:unzip [选项] [压缩文件名]

    • -c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
    • -f 更新现有的文件。
    • -l 显示压缩文件内所包含的文件。
    • -p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
    • -t 检查压缩文件是否正确。
    • -u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
    • -v 执行是时显示详细的信息。
    • -z 仅显示压缩文件的备注文字。
    • -a 对文本文件进行必要的字符转换。
    • -b 不要对文本文件进行字符转换。
    • -C 压缩文件中的文件名称区分大小写。
    • -j 不处理压缩文件中原有的目录路径。
    • -L 将压缩文件中的全部文件名改为小写。
    • -M 将输出结果送到more程序处理。
    • -n 解压缩时不要覆盖原有的文件。
    • -o 不必先询问用户,unzip执行后覆盖原有文件。
    • -P<密码> 使用zip的密码选项。
    • -q 执行时不显示任何信息。
    • -s 将文件名中的空白字符转换为底线字符。
    • -V 保留VMS的文件版本信息。
    • -X 解压缩时同时回存文件原来的UID/GID。
    • [.zip文件] 指定.zip压缩文件。
    • [文件] 指定要处理.zip压缩文件中的哪些文件。
    • -d<目录> 指定文件解压缩后所要存储的目录。
    • -x<文件> 指定不要处理.zip压缩文件中的哪些文件。
    • -Z unzip -Z等于执行zipinfo指令。

    6、查看文件夹大小

    du [选项][文件]
    

    -a或-all 显示目录中个别文件的大小。
    -b或-bytes 显示目录或文件大小时,以byte为单位。
    -c或–total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
    -k或–kilobytes 以KB(1024bytes)为单位输出。
    -m或–megabytes 以MB为单位输出。
    -s或–summarize 仅显示总计,只列出最后加总的值。
    -h或–human-readable 以K,M,G为单位,提高信息的可读性。
    -x或–one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
    -L<符号链接>或–dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
    -S或–separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
    -X<文件>或–exclude-from=<文件> 在<文件>指定目录或文件。
    –exclude=<目录或文件> 略过指定的目录或文件。
    -D或–dereference-args 显示指定符号链接的源文件大小。
    -H或–si 与-h参数相同,但是K,M,G是以1000为换算单位。
    -l或–count-links 重复计算硬件链接的文件。

    常用命令:

    du -sh /opt
    

    7、文件数据排序

    sort命令可以用于文件数据排序,然后将排序结果打印出来。

    语法:

    sort [选项] [文件]
    

    常用选项:

    选项含义
    -b忽略每行前面开始出的空格字符
    -c检查文件是否已经按照顺序排序
    -d排序时,处理英文字母、数字及空格字符外,忽略其他的字符
    -f排序时,将小写字母视为大写字母
    -i排序时,除了040至176之间的ASCII字符外,忽略其他的字符
    -m将几个排序号的文件进行合并
    -M将前面3个字母依照月份的缩写进行排序
    -n依照数值的大小排序
    -o<输出文件> 将排序后的结果存入制定的文件
    -r以相反的顺序来排序
    -t<分隔字符> 指定排序时所用的栏位分隔字符
    -k指定需要排序的栏位

    8、去除文件重复行

    使用uniq这个命令只能去除连续的的重复行。所以需要结合sort命令使用,先sort排序,然后uniq去除重复的

    语法:

    uniq [选项] [文件]
    
    选项含义
    -c打印每行在文本中重复出现的次数
    -d只显示有重复的纪录,每个重复纪录只出现一次
    -u只显示没有重复的纪录

    三、网络通信

    1、netstat监控命令

    netstat命令是用于监控进出网络的包和网络接口统计的命令行工具

    语法:netstat [param]
    

    param参数可以为:

    • -h : 查看帮助
    • -r : 显示路由表
    • -i : 查看网络接口

    2、linux重启网络

    设置了linux网络,需要重启网络,可以用命令:

    service network restart 
    

    3、SELinux简介

    SELinux全称是 Security-Enhanced Linux,它是由美国国家安全局(NSA)贡献的,它为 Linux 内核子系统引入了一个健壮的强制控制访问Mandatory Access Control架构。详情可以参考SELinux 入门SELINUX工作原理

    其实SELinux的功能也就是类似于防火墙的功能,不过安全相对比较好,ok,所以本博客介绍一下SELinux的使用命令

    查看selinux状态

    getenforce
    

    临时禁用SELINUX(学习用的linux才可以禁用,生产的不建议禁用SELINUX)

    setenforce
    

    永久禁用SELINUX(学习用的linux才可以禁用,生产的不建议禁用SELINUX)

     # 将SELINUX=enforce改成SELINUX=disabled
     vi /etc/selinux/config
    

    4、防火墙设置

    查询linux系统防火墙开启状态

    firewall-cmd --state
    

    临时关闭防火墙(学习用的linux才可以禁用,生产的不建议禁用SELINUX)

    systemctl stop firewalld.service
    

    永久关闭防火墙(学习用的linux才可以禁用,生产的不建议禁用SELINUX)

    systemctl disable firewalld.service
    

    5、CURL命令使用

    curl命令是一个利用URL规则在shell终端命令行下工作的文件传输工具;curl命令作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征;
    在这里插入图片描述
    语法:语法格式:curl [参数] [网址]

    5.1 查看curl帮助

    • 查看命令参数
      curl的参数很多,可以用命令curl --help查看:
    [root@localhost ~]# curl --help
    

    国内翻译过来的curl文档:curl参数介绍

    5.2 查看curl手册

    • 查看详细使用
      也可以使用curl --manual查看基本用法例子:
      在这里插入图片描述

    5.3 提取指定网页

    • 查看网页源码
      语法:curl uri
    [root@localhost ~]# curl www.baidu.com
    <!DOCTYPE html>
    <!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn"></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a> <a href=http://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>视频</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登录</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登录</a>');</script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">更多产品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使用百度前必读</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意见反馈</a>&nbsp;京ICP证030173号&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>
    
    
    • 显示头信息
    curl -i https://www.baidu.com
    

    打印信息:

    [root@localhost ~]# curl -i https://www.baiud.com
    curl: (7) Failed connect to www.baiud.com:443; Connection refused
    [root@localhost ~]# curl -i https://www.baidu.com
    HTTP/1.1 200 OK
    Accept-Ranges: bytes
    Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
    Connection: keep-alive
    Content-Length: 2443
    Content-Type: text/html
    Date: Mon, 13 Jul 2020 07:22:02 GMT
    Etag: "588603eb-98b"
    Last-Modified: Mon, 23 Jan 2017 13:23:55 GMT
    Pragma: no-cache
    Server: bfe/1.0.8.18
    Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
    ...	
    
    • 显示通信过程
    curl -v www.baidu.com
    
    curl -v www.baidu.com
    * About to connect() to www.baidu.com port 80 (#0)
    *   Trying 182.61.200.7...
    * Connected to www.baidu.com (182.61.200.7) port 80 (#0)
    > GET / HTTP/1.1
    > User-Agent: curl/7.29.0
    > Host: www.baidu.com
    > Accept: */*
    > 
    < HTTP/1.1 200 OK
    < Accept-Ranges: bytes
    < Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
    < Connection: keep-alive
    < Content-Length: 2381
    < Content-Type: text/html
    < Date: Mon, 13 Jul 2020 07:24:46 GMT
    < Etag: "588604c8-94d"
    < Last-Modified: Mon, 23 Jan 2017 13:27:36 GMT
    < Pragma: no-cache
    < Server: bfe/1.0.8.18
    < Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
    < 
    <!DOCTYPE html>
    ...
    
    • 查看议定书
    [root@localhost ~]# curl --trace-ascii output.txt https://www.baidu.com
    
    

    在这里插入图片描述

    在这里插入图片描述

    • 查看时间
    curl --trace-ascii output.txt --trace-time https://www.baidu.com
    

    在这里插入图片描述

    5.4 用curl进行认证

    • referer设置
      referer参数描述了一个网页的来源,可以按F12调试模式,查看:
      在这里插入图片描述
      访问百度时候,加上referer为csdn:
    [root@localhost ~]# curl --referer https://blog.csdn.net https://www.baidu.com
    
    • 用户代理设置
      用户代理常被用于兼容ie,有时,您会看到获取带有curl的页面不会返回与使用浏览器获取页面时看到的页面相同的页面,这时候可以设置用户代理:
    curl www.baidu.com --user-agent "Mozilla/5.0"
    curl www.baidu.com -A "Mozilla/5.0"
    

    5.5 curl文件操作

    • 保存文件
      语法:curl -o filename uri
    [root@localhost ~]# curl -o baidu.html www.baidu.com
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  2381  100  2381    0     0  22761      0 --:--:-- --:--:-- --:--:-- 22894
    
    

    在这里插入图片描述

    • 文件下载
      语法:curl uri filename --silent|progress
      • –silent:不显示进度条
      • –progress:显示进度条
    [root@localhost ~]# curl https://avatar.csdnimg.cn/3/5/E/1_meituantech_1564971608.jpg -omeituan.jpg --progress
    ######################################################################## 100.0%
    
    

    在这里插入图片描述

    • 上传文件
      语法:$ curl --form upload=@localfilename --form press=OK [URL]
    [root@localhost ~]# curl --form upload=@baidu.html --form press=OK url
    
    

    5.6 设置cookie

    设置cookie,可以用命令--cookie

    -c cookie-file可以保存服务器返回的cookie到文件,-b cookie-file可以使用这个文件作为cookie信息,进行后续的请求。

    $ curl -c cookies http://example.com
    $ curl -b cookies http://example.com
    
    [root@localhost ~]# curl -c "name=cookiename" www.baidu.com
    
    

    在这里插入图片描述

    也可以用–cookie-jar指定cookie文件

    [root@localhost ~]# curl www.baidu.com --cookie-jar cookie_file
    
    

    在这里插入图片描述
    指定可下载的最大文件大小,可以用命令–limit-rate

    [root@localhost ~]# curl www.baidu.com --limit-rate 50k
    
    

    5.7 RESTFul API

    ps:-H指定请求header,-d指定参数

    • CURL POST:
    [root@localhost ~]# curl -H "Content-Type:application/json" -X POST localhost:9200/company/employees/1 -d '{"id" :1,"name":"admin","password":"123"}'
    
    
    • CURL GET:
    [root@localhost ~]# curl -X GET localhost:9200/company/employees/1?pretty=true
    
    • CURL DELETE:
    [root@localhost ~]# curl -X DELETE localhost:9200/company/employees/1
    
    • CURL PUT:
    curl -H "Content-Type:application/json" -X PUT localhost:9200/company/employees/1 -d '{"id" :1,"name":"admin","password":"111"}'
    

    curl默认是GET方式请求url的,要调POST等接口,必须加上-X参数指定

    比较详细的可以参考:

    四、系统管理

    1、查看内核版本

    uname命令用于查看内核版本
    在这里插入图片描述

    2、查看linux系统ip

    查看linux的ip地址:可以用命令

     ip addr
    

    3、查看ip是否被占用

    lsof -i:8080
    

    4、uptime命令使用

    uptime命令能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

    用help参数参数

    [shared@localhost~]$ uptime --help
    
    Usage:
     uptime [options]
    
    Options:
     -p, --pretty   show uptime in pretty format 
     -h, --help     display this help and exit 
     -s, --since    system up since 
     -V, --version  output version information and exit
    
    For more details see uptime(1).
    [shared@localhost~]$ uptime -V
    uptime from procps-ng 3.3.10
    
    

    Options:

    • -p, --pretty show uptime in pretty format //比较美观的打印
    • -h, --help display this help and exit // 查看参数帮助
    • -s, --since system up since // 查看系统当前时间
    • -V, --version output version information and exit // 查看版本

    在这里插入图片描述

    5、telnet命令使用

    不管在window还是linux系统要校验某台服务器是否可以ping通,都可以使用命令,如果要加上断口的,linux可以使用telnet命令
    语法:telnet ip port

    telnet 127.0.0.1 8080
    

    6、查看系统当前登录用户

    可以使用w命令:

    [root@localhost ~]# w 
    

    下面列举主要的

    选项含义
    -h不显示输出信息的标题
    -l用长格式输出
    -s用短格式输出,不显示登陆时间,JCPU 和 PCPU 时间
    -V显示版本信息

    只显示某个用户的信息

    [root@localhost ~]# w [选项] [用户名]
    

    ps:切换用户可以使用命令su root进行系统用户切换

    附录:

    微信打赏
    在这里插入图片描述
    技术博客公众号
    在这里插入图片描述
    QQ群:1129337987

    展开全文
  • Linux 命令格式

    千次阅读 2016-09-12 15:00:52
    简述Linux 中的命令很多,但一般在使用的时候会遵守一定的格式。为了便于使用命令,我们对命令格式及帮助进行详细的说明。简述 一般格式 详细说明一般格式命令的一般格式: command [options] [arguments]command ...
  • linux查询日志命令tail grep

    千次阅读 2020-08-26 23:13:01
    man命令的使用 man grep more命令 //more命令主要是用来分页 | 管道符 //前面的命令的输入作为后面命令的输入 tail命令的使用 tail -f 100 server.log //从后面100行开始动态输出 tail -n 100 server.log //查询...
  • Linux 命令手册/命令大全 记涵盖了linux的各种命令知识,在这我以代码示例及文字叙述来帮助想学好了linux知识的读者和广大学者;个人知识浅薄不胜余力,若有读者发现冗余知识缺陷请联系我,期待与您携手共进学好了...
  • 我使用过的Linux命令之hwclock - 查询和设置硬件时钟 用途说明 hwclock命令,与clock命令是同一个命令,主要用来查询和设置硬件时钟(query and set the hardware clock (RTC))。RTC=Real Time Clock,也就是...
  • 不是扫描的,文字是可以复制的,Linux_常用命令全集[文字版]
  • Linux命令——useradd

    千次阅读 2015-11-04 19:54:14
    Linux命令查询网站 命令列表 adduser alias awk cat cd chkconfig cp diff echo egrep exec find getenforce grep head history hostname init ll locate ls lsof man mkdir mv
  • Linux 命令面试题

    万次阅读 多人点赞 2019-07-24 09:40:04
    1.Linux常用系统安全命令 sudo // 超级用户 su // 用于切换当前用户身份到其他身份,变更时需输入所要变更的用户账号与密码。 chmod // 用来变更文件或目录的权限 setfacl // 设置文件访问控制列表 2.Linux常用进程...
  • [Linux命令详解词典]

    2019-01-18 10:43:37
    [Linux命令详解词典].施威铭研究室.扫描版,linux中文命令词典,pdf,带目录。
  • linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案内容。...
  • Linux命令之hwclock - 查询和设置硬件时钟 本文链接:http://codingstandards.iteye.com/blog/804830  (转载请注明出处)   用途说明 hwclock命令,与clock命令是同一个命令,主要用来查询和设置硬件时钟...
  • 软件测试常用的Linux命令

    万次阅读 多人点赞 2019-01-13 20:01:54
    linux常用shell命令=命令+选项+参数 find 查找文件/目录 cd (change directory)切换目录 cd #root根目录 cd / #系统根目录 cd ../../ #返回上上一层目录 ls/dir (list)列出目录下文件 ls -a (--all)...
  • Linux常用命令大全

    万次阅读 多人点赞 2018-06-01 16:16:10
    Linux常用命令大全1.Linux管理文件和目录的命令命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容 cd 改变所在目录 cat 显示文件的内容 grep 在文件中查找某字符 cp 复制文件 touch 创建文件 mv 移动文件 ...
  • Linux系统编程常用命令总结

    万次阅读 多人点赞 2019-08-14 23:08:29
    一、Linux常用命令 1、常用工具 2、目录和文件命令 3、安装和卸载软件命令 4、压缩包管理 5、文件属性、用户用户组及查找与检索命令 6、网络管理命令 7、其他命令 二、Linux vi/vim常用命令 三、Linux下...
  • Linux命令之echo命令

    千次阅读 2019-05-27 11:32:55
    linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。 语法 echo(选项)(参数) 选项...
  • linux中systemctl详细理解及常用命令

    万次阅读 多人点赞 2019-06-28 16:16:52
    Linux 服务管理两种方式service和systemctl systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。 systemd对应的进程管理命令是systemctl 1. ...
  • python中执行linux命令(调用linux命令)

    万次阅读 2013-04-16 23:30:20
    转自:... python中执行linux命令 python中执行linux命令: os.system(cmd) 如果要把返回信息置入变量中: textlist = os.popen(cmd) 例: cmd = 'ps -ef ' textli
  • linux 命令

    千次阅读 2016-04-25 13:42:03
    查询IP地址:ifconfig 关闭防火墙:iptables -F 查看防火墙:iptables -L 关闭安全机制:setneforce 0 终止本层程序:Ctrl+C 清屏:Ctrl+L 查看配置:setup 打开之后可以别人可以查看你的信息 service sshd ...
  • Linux命令整理

    千次阅读 2012-06-21 13:12:17
    Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限...要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系
  • linux常用命令

    千次阅读 多人点赞 2016-12-22 11:24:58
    linux常用命令
  • 这绝对是整理的最全面最详细最认真最适合用来当笔记的Linux终端命令汇总的文章了
  • SecureCRT萌新常用命令及Linux命令大全整理

    万次阅读 多人点赞 2016-12-30 13:37:49
    SecureCRT常用命令Linux常用命令
  • 常用linux命令记录

    千次阅读 2020-02-01 13:45:57
    常用linux命令记录 1.常用linux命令基本使用列表 序号 命令 英文 作用 01 ls list 查看当前文件夹的内容 02 pwd print work directory 查看当前所在文件夹 03 cd[目录名] change directory 切换文件夹 ...
  • Linux命令简介

    千次阅读 2013-12-05 13:25:51
    1 Linux命令简介 1.1 命令格式 [python] view plaincopy [root@test root]# command [-options] parameter1 parameter2 ... 指令 选项 参数(1) 参数(2)  说明: 1. 提示符:root账户...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 109,717
精华内容 43,886
关键字:

linux命令查询文字

linux 订阅