Linux使用详解(进阶篇)

Posted summary-2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux使用详解(进阶篇)相关的知识,希望对你有一定的参考价值。

欢迎前往CSND查看,我的博客原文https://blog.csdn.net/smilehappiness/article/details/105184233

@

Linux使用详解(进阶篇)

firewall-cmd --get-active-zones

1.Linux目录说明

技术图片

  • bin -> usr/bin 这个目录存放的是,最经常使用的命令
  • boot 这个目录存放启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
  • dev 设备Device的缩写, 该目录下存放Linux的外部设备,Linux中的设备也是以文件的形式存在
  • etc 这个目录存放所有的系统管理所需要的配置文件
  • home 用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名以用户的账号命名
  • lib -> usr/lib 该目录存放着系统最基本的动态连接共享库,其作用类似于windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库。
  • lib64 -> usr/lib64 64位的系统动态连接共享库
  • media Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下
  • mnt 系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容
  • opt 该目录是给linux额外安装软件所存放的目录,比如安装一个mysql数据库则就可以放到这个目录下,默认该目录是空的(装软件常用目录:/usr/local/opt/srv
  • root 该目录为系统管理员目录,root是具有超级权限的用户,是Linux默认创建好的用户
  • sbin -> usr/sbin s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序
  • srv 该目录存放一些服务启动之后需要提取的数据
  • tmp 这个目录是用来存放一些临时文件的
  • usr 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的Program Files目录
  • var 这个目录存放着在不断扩充着的东西,我们习惯将那些经常被修改的文件存放在该目录下,比如运行的各种日志文件
  • proc 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息
    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  • run 程序或服务启动后,运行的PID存放在该目录下
  • sys 内核中的文件系统 sysfs

2.操作防火墙

为了网络安全,服务器一般都会开启防火墙,防火墙firewalld服务通过一种信任机制来管理访问系统的连接。这里详细介绍下CentOS 7版本Linux的防火墙操作命令:

  • 防火墙firewalld命令
    Linux中,这三个命令都是可以的
    systemctl status firewalld 查看防火墙状态
    systemctl status firewalld.service 查看防火墙状态
    service firewalld status 查看防火墙状态

    systemctl anable firewalld 让防火墙可用
    systemctl disable firewalld 让防火墙禁用
    systemctl start firewalld 启动防火墙
    systemctl stop firewalld 关闭防火墙
    systemctl restart firewalld 重启防火墙
    在实际公司里面不会这么做,一般都是开启了防火墙,需要时,开放需要的端口,从而提高安全性

  • firewall-cmd命令
    man firewall-cmd 查看firewall-cmd命令的帮助文档
    firewall-cmd -V
    firewall-cmd --get-default-zone 默认级别为public
    firewall-cmd --get-active-zones 获取活动的区域
    firewall-cmd --get-zones 获取防火墙信任级别列表(共9个)
    防火墙 firewalld 将不同的网络连接,归类到不同的信任级别,Zone 提供了以下几个级别:
    技术图片

    • block: 拒绝所有外部发起的连接,允许内部发起的连接
    • dmz: 允许受限制的进入连接
    • drop: 丢弃所有进入的包,而不给出任何响应
    • external: 同上,对伪装的进入连接,一般用于路由转发
    • home: 允许受信任的计算机被限制的进入连接
    • internal: 同上,范围针对所有互联网用户
    • public: 允许指定的进入连接
    • trusted: 信任所有连接
    • work: 允许受信任的计算机被限制的进入连接
  • 开启单个防火墙端口命令:
    firewall-cmd --zone=public --add-port=3306/tcp --permanent

    命令参数含义:
    --zone #作用域:使用firewall-cmd --get-default-zone命令,可以查看当前系统默认的作用区域
    --add-port=8080/tcp  #添加端口,格式为:端口/通讯协议
    --permanent   #永久生效,如果不设置此参数,重启服务后失效
    
  • 开启多个防火墙端口
    firewall-cmd --zone=public --add-port=8080-8088/tcp --permanent

  • 重新加载防火墙配置
    firewall-cmd --reload

  • 取消删除端口开放
    firewall-cmd --zone=public --remove-port=3306/tcp --permanent

  • 查询端口号3306是否开启
    firewall-cmd --query-port=3306/tcp

  • 列出当前开启的端口列表
    firewall-cmd --list-port

  • 列出当前开启的服务列表
    firewall-cmd --list-services

  • 查询服务的启动状态
    firewall-cmd --query-service tcp技术图片

  • 查询所有开启的服务和端口
    firewall-cmd --list-all
    技术图片

3.ulimit命令和history命令

  • ulimit命令
    ulimit 用于显示系统资源限制的信息,如:ulimit -a
    技术图片
    语法: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

  • history 命令
    history 该命令可以查看操作Linux使用了那些历史命令
    history -c 清空历史命令
    bash中默认命令记忆可达1000个,这些命令保存在主文件夹内的 .bash_history
    ~/.bash_history 记录的是前一次登录以前所执行过的命令,至于本次登录的命令暂时存储在内存中,注销成功后会写入文件中

    注意:这个情况并不会清空 ~/.bash_history 中的记录,只是清空内存中的记录
    退出终端时,内存中的命令记录会存储到~/.bash_history 中,但是必须通过logout登出
    强制关闭终端时,内存中的历史记录,也不会记录在~/.bash_history中,即使记录了也会有丢失

    增加历史记录最大条数
    history默认记录最大1000条,可通过修改环境变量来增加条数。将HISTSIZE=1000修改为5000

    [root@localhost /]# vim /etc/profile
    HOSTNAME=/bin/hostname 2>/dev/null
    HISTSIZE=5000
    source /etc/profile 执行该命令加载source,使得配置即时生效

    history中增加操作时间记录

    [root@localhost /]# vim /etc/profile
    HOSTNAME=/bin/hostname 2>/dev/null
    HISTSIZE=5000
    HISTTIMEFORMAT="%Y/%m%d %H:%M:%S"
    [root@localhost /]# source /etc/profile

    history命令使用,参考资料链接

4.RPM和Yum的使用

Linux安装软件包的几种方式:

  • 使用rpm安装
    RPMRed-Hat Package Manager(RPM软件包管理器)的缩写,是由Red Hat公司开发的一种软件包管理方式,使用rpm我们可以方便的进行软件的安装、查询、卸载等工作。但是使用rpm命令安装rpm软件包也有一些致命的缺点,它不能自己解决软件包之间的依赖性问题,需要自己一个一个去安装依赖的软件包。
    rpm只能安装一个指定的软件包,如果该软件包存在依赖性关系,比如安装A软件包的时候,需要先安装B软件包,采用rpm安装方式,就要先安装B,再安装A。

  • 使用yum安装
    Yum(全称为 Yellow dog Updater, Modified)是一个在RedHat、Fedora以及CentOS中的一种软件包管理器,它基于RPM包管理,能够从指定的服务器自动下载RPM包并且进行安装,可以自动处理软件包之间的依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
    yum能自动检测软件包之间的依赖关系,可以直接yum安装A包,yum能检测到A与B的依赖关系,自动安装B包。

  • 通过源码编译安装
    Linux安装软件第三种方式:就是通过源码编译安装(GCC),一般就是下载tar.gz安装包,自己解压源码到指定路径,进行安装。这种安装方式与yum相比的好处是,可以安装在指定的位置,yum安装,会导致安装文件不受控制,比较乱。

  • 直接解压
    Linux安装软件第四种方式:有些软件直接解压即可使用,(如:tomcat、zookeeper等)

Linux安装软件时,业内约定成俗,一般安装在三个地方,其他地方当然也能安装
1、/usr/local
2、/opt
3、/srv

rpm常用命令
rpm参数说明:
-i 安装应用程序(install)
-e 卸载应用程序(erase)
-vh 显示安装进度;(verbose hash)
-U 升级软件包;(update)
-qa 显示所有已安装软件包(query all)

rpm -ivh jdk1.8.101.rpm 安装rpm包的软件
rpm -qa | grep xxx 查看是否安装了某个rpm包
rpm -e jdk1.8.101.rpm 删除某个rpm安装包

rpm安装软件,安装后的文件到处都有,散落一地,不好归档

yum常用命令
yum search <keyword> 查找软件包命令,有些软件没有rpm包
yum install <package_name> 安装指定的软件命令
比如:telnet,使用该命令会提示:
-bash: telnet: command not found
yum install telnet -y 安装telnet软件包,就可以使用telnet命令了
telnet www.baidu.com

yum remove <package_name> 删除软件包命令
yum list installed 列出所有已安装的软件包命令
yum list installed | grep java 列出已安装的指定软件包命令

清理yum安装已下载的包命令,一般安装后可以清空缓存,释放资源,不影响使用
yum clean all (yum install 后的rpm包存放在/var/cache/yum/下)

5.设置系统字符集

系统字符集,有时候可能需要修改,这里也介绍下,如:设置中文man手册,可能需要把系统字符集设置为中文字符集

  • 查看当前的字符集
    echo $LANG
    locale

  • 临时修改系统字符集
    export LANG="zh_CN.UTF-8" 设置为中文字符集
    export LANG="en_US.UTF-8" 设置为英文字符集

  • 永久修改系统字符集
    需要写入/etc/profile配置文件
    vim /etc/profile
    添加内容 export LANG="en_US.UTF-8" 添加内容后,在命令模式下 :wq 保存并退出
    source /etc/profile 让修改配置生效

6.vi & vim编辑器

vi是linux下标配的一个纯字符界面的文本编辑器,由于不是图形界面,相关的操作都要通过键盘输入命令来完成,需要记住一些常用的操作命令
vim是vi的升级版本,完全兼容vi,vim也可以完全当成vi使用,vim是在vi的基础上增加一些功能,比如语法着色等

vi和vim使用是比较简单的,记住几个常用的命令,即可
vi(vim) filename 可以打开并修改文件
如果参数中的filename文件存在,则打开该文件,如果参数中的文件不存在,则会新建该文件(不是立即创建,而是在保存的时候创建)

vi(vim)有几种操作模式:

  • 命令模式
    Esc键,进入命令模式,命令模式下无法编辑
    编辑好内容后,在命令模式下,按 :wq 保存编辑内容退出,按 :q! 不保存修改部分并退出

  • 编辑模式
    a 或者 i 字母键,进入编辑模式(此时,底部会出现insert

  • 为了快速使用vi(vim)命令编辑文本内容,整理了一些常用的快捷键 (在命令模式下执行)
    dd 删除光标所在行
    yy 复制光标所在行到缓冲区
    p 粘贴缓冲区中的内容
    gg 光标回到文件第一行
    GG 光标回到文件最后一行
    ^ 光标移动至当前行的行首
    $ 光标移动至当前行的行尾
    /关键字 按斜杠/键,可以输入想搜索的字符,然后确定进行搜索,如果第一次查找的关键字不是想要的,可以一直按n键往后查找到想要的关键字为止

7.文件同步、复制

更新中...

8.利用SCP命令进行文件传输

scp基础介绍:

  • Linux scp 命令用于 Linux 之间复制文件和目录。scp是secure copy的缩写,scp是Linux 系统下基于ssh登陆,进行安全的远程文件拷贝命令,和ssh 使用相同的认证方式,提供相同的安全保证 。
  • scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。
  • scp不需要安装额外的软件,使用起来简单方便,安全可靠且支持限速参数,但是它不支持排除目录。

scp使用语法:

scp [可选参数] file_source file_target
这里的可选参数有很多,我列几个常用的:
-p 保留原文件的修改时间,访问时间和访问权限
-q 不显示传输进度条
-r 递归复制整个目录,常用于传输文件夹
-v 展示传输详情,scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-P port:注意是大写的P,port是指定数据传输用到的端口号
scp使用示例:

  • 从本地复制到远程
    命令格式:
    scp local_file remote_username@remote_ip:remote_folder
    或者
    scp local_file remote_username@remote_ip:remote_file
    或者
    scp local_file remote_ip:remote_folder
    或者
    scp local_file remote_ip:remote_file
    第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;
    第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;

    scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music 
    scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3 
    scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music 
    scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music/001.mp3 
    

    如果需要复制目录,使用命令格式:
    scp -r local_folder remote_username@remote_ip:remote_folder
    或者
    scp -r local_folder remote_ip:remote_folder
    第1个指定了用户名,命令执行后需要再输入密码;
    第2个没有指定用户名,命令执行后需要输入用户名和密码;
    应用实例:

    scp -r /home/space/music/ root@www.runoob.com:/home/root/others/ 
    scp -r /home/space/music/ www.runoob.com:/home/root/others/ 
    

    上面命令将本地 music 目录复制到远程 others 目录下。

  • 从远程复制到本地
    从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可,如下应用实例:

    scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3 
    scp -r www.runoob.com:/home/root/others/ /home/space/music/
    

    注意:
    如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号,命令格式如下:

    #scp 命令使用端口号 4588
    scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator
    

    使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的。
    该scp使用这部分,参考菜鸟教程

写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,希望尽自己的努力,做到更好,大家一起努力进步!

如果有什么问题,欢迎大家一起探讨,代码如有问题,欢迎各位大神指正!

以上是关于Linux使用详解(进阶篇)的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin基础从入门到进阶系列讲解(基础教程篇)详解build.gradle文件

Web应用的组件化进阶篇

Flutter进阶篇(4)-- Flutter的Future异步详解

(进阶篇)Cookie与 Session使用详解

Linux基础之bash脚本进阶篇-函数

Android进阶笔记:AIDL内部实现详解