Linux总结

文章目录

  • Linux
    • 1. 认识Linux
      • 1.1. Linux的发展历史
      • 1.2. Linux的版本
        • 1.2.1. 内核版
        • 1.2.2. 发行版
      • 1.3. 开源软件简介
        • 1.3.1. 最伟大的开源项目
        • 1.3.2. 更多开源项目举例
      • 1.4. Linux的应用领域
      • 1.5. 给Linux初学者的提示
    • 2. Linux的安装和使用
      • 2.1. VMware虚拟机
        • 2.1.1. VMware虚拟机安装
        • 2.1.2. VMware虚拟机设置
        • 2.1.3. VMware使用
      • 2.2. Linux安装
      • 修改主机名
      • 2.3. Linux的树型目录结构
      • 2.4. 远程登录管理工具
        • 2.4.1. 虚拟机网卡适配器
        • 2.4.2. 远程登录管理工具
    • 3. Linux常用命令
      • 3.1. 目录相关命令
        • 3.1.1. 显示目录文件
        • 3.1.2. 创建新目录
        • 3.1.3. 切换目录
        • 3.1.4. 显示当前目录
        • ~~3.1.5. 删除空目录~~
        • 3.1.6. 删除文件或目录
        • 3.1.7. 复制
        • 3.1.8. 剪切文件、改名
      • 3.2. 文件相关命令
        • ~~3.2.1. 创建空文件~~
        • ~~3.2.2. 显示文件内容~~
        • 3.2.3. 分页显示文件内容(向后)
        • 3.2.4. 分页显示文件内容(可向前也可向后)
        • ~~3.2.5. 显示文件前面几行的内容~~
        • ~~3.2.6. 显示文件后面几行的内容~~
        • ~~3.2.7. 生成链接文件~~
      • 3.3. 搜索相关命令
        • 3.3.1. 根据字符串进行文本搜索,并输出匹配的行
        • 3.3.2. 文件搜索
        • ~~3.3.3. 搜索命令所在目录~~
      • 3.4. 权限相关命令
        • 3.4.1. 改变文件或目录的权限
        • 3.4.2. 改变文件或目录的所有者
        • 3.4.3. 改变文件或目录的所属组
      • 3.5. 用户相关命令
        • 3.5.1. 添加新用户
        • 3.5.2. 设置、修改用户密码
        • 3.5.3 查看登录用户信息
        • 3.5.4. 切换用户登录
        • 3.5.5. 注销
        • 3.5.6. 关机命令
        • 3.5.7. 重启命令
        • 3.5.8. 关于系统的运行级别
        • ~~3.5.9. 给指定在线用户发信息~~
        • ~~3.5.10. 给所有在线用户发信息~~
        • ~~3.5.11. 用户之间通信的邮件系统~~
      • 3.6. 网络相关命令
        • 3.6.1. 查看和设置网卡信息
        • 3.6.2. 测试网络连接
        • 3.6.3. 永久设置网络ip
        • ~~3.6.4. 显示数据包到主机间的路径~~
        • 3.6.5. 显示端口占用信息
      • 3.7. 压缩与解压缩相关命令
        • ~~3.7.1. 压缩解压命令一:*.gz~~
        • 3.7.2. 压缩解压命令二:*.tar.gz
        • ~~3.7.3. 压缩解压命令三:*.zip~~
        • ~~3.7.4. 压缩解压命令四:*.tar.bz2~~
      • 3.8. 挂载设备
      • 3.9. 其它常用命令
    • 4. 文本编辑器Vim
      • 4.1. Vim编辑器简介
      • 4.2. Vim编辑器常用操作
    • 5. 软件包管理
      • 5.1. 软件包管理简介
      • 5.2. RPM包管理
        • 5.2.1. RPM包命名原则
        • 5.2.2. RPM包的依赖
        • 5.2.3. rpm命令管理(手工处理依赖性)
        • 5.2.4. yum在线管理(自动处理依赖性)
        • 5.2.5. 使用yum安装apache
      • 5.3. 源码包管理
        • 5.3.1. 源码包与RPM包安装的位置不同
        • 5.3.2. 源码包与RPM包安装的启动方式不同
        • 5.3.3. 源码安装方式
    • 6. 相关软件的安装与配置
      • 6.1. 安装JDK
      • 6.2. 安装Tomcat
      • 6.3. 安装MySQL
      • 6.4. 安装Apache
    • 7. 用户和用户组管理
      • 7.1用户的管理
      • 7.2组管理:
      • 7.3 id,su命令
    • 8. 权限管理
      • 8.1文件权限
      • 8.2 Linux三种文件类型:
      • 8.3文件类型标识
      • 8.4 文件权限管理:
    • 9. 文件系统管理
    • 10. Linux服务管理
    • 11. Linux系统管理
    • 12. 日志管理
    • 13. 启动管理
    • 14. 备份与恢复
    • 15. Shell编程
    • 附录
      • 1. 相关面试题

Linux

1. 认识Linux

1.1. Linux的发展历史

  • Linux是由Unix演变而来

  • UNIX操作系统,是一个强大的 多用户多任务高安全性 操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由Ken Thompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。

  • 1971年,Dennis Ritchie发明了C语言,1973年,Unix系统的绝大部分源代码用C语言重写,提高了Unix系统的可移植性。

  • Linux是一套 免费使用自由传播 的类Unix操作系统。它诞生于1991年,由芬兰大学生李纳斯(Linus Torvalds)和后来陆续加入的众多爱好者共同开发完成。

Linux总结_第1张图片

1.2. Linux的版本

1.2.1. 内核版

Linux内核官网:www.kernel.org,目前最新稳定版本为4.17.8

如果想在已装的系统上查询系统内核,可使用uname -a命令

1.2.2. 发行版

Linux总结_第2张图片

主要发行版本介绍:http://www.cnblogs.com/lcword/p/5865533.html

1.3. 开源软件简介

1.3.1. 最伟大的开源项目

Linux是开源免费的,它Github上的托管地址:https://github.com/torvalds/linux

1.3.2. 更多开源项目举例

Linux总结_第3张图片
Linux总结_第4张图片

开源项目特点:

  • 使用的自由,绝大多数开源软件免费
  • 研究的自由,可以获得软件源代码
  • 散布及改良的自由,可以自由传播、改良甚至销售

1.4. Linux的应用领域

  • 服务器应用领域: http://www.netcraft.com/
  • 嵌入式应用领域:智能手机、智能家居、智能卡系统、取款机、电梯…
  • 桌面应用领域

1.5. 给Linux初学者的提示

  • Linux更推荐使用命令行
  • 忘掉Windows的思维
  • 良好的学习方式和习惯
  • 不怕害怕英文带来的困惑
    • Command not found
    • No Such file or directory

2. Linux的安装和使用

2.1. VMware虚拟机

  • VMware是一个虚拟PC的软件,可以在现有的操作系统上虚拟出一个新的硬件环境,相当于模拟出一台新的PC,以此来实现在一台机器上真正同时运行两个独立的操作系统。
  • 下载VMware并安装:http://www.vmware.com

除了VMware,Oracle的 VitrualBox也是较常用的虚拟机!

2.1.1. VMware虚拟机安装

第1步,创建虚拟机

第2步,选择典型安装;

第3步,选择稍后安装操作系统

第4步,选择客户机操作系统与版本

第5步,给创建的虚拟机命名,并选择要存储的位置

第6步,在指定磁盘容量处,直接点击下一步

第7步,单击完成创建虚拟机

2.1.2. VMware虚拟机设置

  • 设置内存
  • 设置处理器
  • 其它设置

2.1.3. VMware使用

  • 快照生成

  • 系统克隆

    • 链接克隆
      • 依赖于源虚拟机(称为父虚拟机)。由于链接克隆是通过父虚拟机的快照创建而成,因此节省了磁盘空间,而且克隆速度非常快,但是克隆后的虚拟机性能能会有所下降。
      • 对父虚拟机的虚拟磁盘进行的更改不会影响链接克隆,对链接克隆磁盘所做的更改也不会影响父虚拟机。但是如果父虚拟机损坏或快照点删除,链接克隆的虚拟机也不能使用;如果父虚拟机移动位置,需要重新指定父虚拟机的位置,再启动链接克隆虚拟机。
    • 完整克隆
      • 完全克隆的虚拟机不依赖源虚拟机,是完全独立的虚拟机,它的性能与被克隆虚拟机相同。
      • 由于完整克隆不与父虚拟机共享虚拟磁盘,所以创建完整克隆所需的时间比链接克隆更长。如果涉及的文件较大,完整克隆可能需要数分钟才能创建完成。完整克隆只复制克隆操作时的虚拟机状态,因此无法访问父虚拟机的快照。

    注:以上两种方式克隆出来的系统,网卡都变成eth1,因此需要将eth1修改成eth0:

    https://www.cnblogs.com/zhangjxblog/p/6479740.html

  • 点击虚拟机屏幕可操作虚拟机,按CTRL+ALT可退出操作虚拟机

  • 如果虚拟机有更改,在重新导入并启动时,可能会有弹出提示”我已移动该虚拟机”或“我已复制该虚拟机”:

    • 移动:网络配置不发生变化。要使用图片服务器,需要保证网络配置不变。
      复制:重新生成一块网卡MAC地址是新地址,原来的网络配置信息会丢失。

2.2. Linux安装

百度上偷了3篇文章:

CentOS 7安装:https://jingyan.baidu.com/article/20095761d65c67cb0721b4a8.html

CentOS 7与6的不同:http://blog.51cto.com/liuqun/2044542

CentOS7网络连接配置:https://jingyan.baidu.com/article/6b1823098a4d9eba58e159ea.html

CentOS7防火墙配置:https://www.cnblogs.com/moxiaoan/p/5683743.html
第1步,打开虚拟机设置,点击cd/dvd,选择使用iso映像,并确定

第2步,开启虚拟机准备安装

如果在这一步有VMware 报错“Intel VT-x处于禁止状态”, 需要开启进入本机的bios开启虚拟化支持

第3步,在安装选项界面选择“Install or upgrade an existing system”

第4步,接下来选择skip

第5步,在接下来显示屏幕的右下角,点击next进行安装

第6步,选择English,然后点击next

第7步,选择美国英文式键盘,然后点击next

第8步,选择基本存储设备,然后点击next

第9步,在弹出框中选择“是,忽略所有数据”

第10步,设置主机名,然后点击next

第11步,默认时区,然后点击next

第12步,设置根帐号(root)的密码,然后点击next

第13步,点击创建自定义布局,然后点击next

第14步,设置分区,然后点击next,基本分区规则如下:

  • 推荐分区

    /boot(启动分区,200MB以上) 我的是20G

  • 必须分区

    • swap分区(交换分区,在内存不足时可当作虚拟内存,不超过2GB)4096
    • /(根分区,使用全部可用空间)

第15步,在弹出框中选择格式化

第16步,在弹出框中选择将修改写入磁盘

第17步,点击next

第18步,选择Basic Server,然后点击next

第19步,等安装完成…,安装完成后点击重新引导

第20步,等启动完成,便可使用Linux。

root登录默认进入/root,普通用户登录将进入/home

修改主机名

//永久性的修改主机名称,重启后能保持修改后的。
hostnamectl set-hostname xxx	

//删除hostname
hostnamectl set-hostname ""
hostnamectl set-hostname "" --static
hostnamectl set-hostname "" --pretty

reboot 重启生效
还有一种方法是直接修改主机名文件,vi /etc/hostname,这种方法修改也是永久是生效的:
在这里插入图片描述

2.3. Linux的树型目录结构

Linux总结_第5张图片

  • 重要目录介绍:

    • /boot,系统引导程序
    • /root,根用户目录,root用户登录默认进入此目录
    • /home,普通用户目录,普通用户登录默认进入此目录
    • /bin,普通用户命令
    • /sbin,管理员命令
    • /etc,系统配置目录
    • /tmp,临时目录,系统重启后tmp目录会清空
    • /dev,设备目录,配合mnt目录挂载外部设备
    • /mnt,挂载目录
    • /lib,程序运行时使用的共享库
    • /var,程序运行时要改变的数据
    • /usr,系统级的程序目录,类似Windows的c://windows,另外还有几个重要的子目录:
      • /usr/lib,类似Windows的c://sytem32;
      • /usr/local,用户级的程序目录,类似Windows的c://Program Files;
      • /usr/src,系统级的源码目录;
      • /usr/local/src:用户级的源码目录;
    • /opt,存放可选的三方程序,如尝新或临时使用的软件等
  • 重要配置文件介绍:

    • /etc/profile,全局环境变量配置文件

    • /etc/inittab,运行等级配置文件

    • /etc/rc.d/init.d/,系统现有的服务目录

    • /etc/sysconfig/network,查看网络和机器名的配置文件

    • /etc/sysconfig/network-scripts/ifcfg-eth0,IP地址配置文件

    • /etc/sysconfig/iptables,防火墙配置文件

    • /etc/hosts,hosts配置文件
      设置用户名:vi /etc/hostname

      如果上线的项目运行时有“java.net.UnknownHostException: xxx: 未知的名称或服务”异常,可参考修改hosts文件解决:https://blog.csdn.net/yuxuan_08/article/details/52925993?locationNum=6&fps=1

2.4. 远程登录管理工具

2.4.1. 虚拟机网卡适配器

  • 仅主机模式:虚拟机只能和本机通信,使用VMnet1虚拟网卡通信。

    优点:适合于电脑没插网线时,当前系统与虚拟机里的Linux连接。

    缺点:虚拟机只能和本机通信,并且不能配置虚拟机上网。

  • NAT 模式:虚拟机可以和本机通信,还可以配置连接上网,使用VMnet8虚拟网卡通信。

    推荐使用静态IP配置连接上网,这样可以做到网络变化时,虚拟机IP仍然保持不变,具体实现步骤:

    • 第1步,使用NAT模式
      Linux总结_第6张图片

    • 第2步,找到NAT模式下的网关地址

    Linux总结_第7张图片

    • 第3步,进入网络配置文件
    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    

    并配置网络信息(我修改的地方都有注释标注):

    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    # 把默认的自动分配IP(dhcp)改成手动指定IP(static)
    BOOTPROTO=static
    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=ens33
    UUID=100cb451-54f9-4b74-80d8-d8d9b098b926
    DEVICE=ens33
    # 把ONBOOT参数改成随系统启动(yes)
    ONBOOT=yes
    # 指定IP,需要在刚才查看的网关地址段
    IPADDR=192.168.26.26
    # 指定子网掩码
    NETMASK=255.255.255.0
    # 指定刚才查看的网关地址
    GATEWAY=192.168.26.2
    # 指定一个DNS服务器地址,这里是用的Google的,你也可以改成其它的。
    # 注:DNS1的1千万不能少,少了就配置无效,之前我掉这个坑了。
    DNS1=8.8.8.8
    ZONE=public
    

    Linux总结_第8张图片

    • 第4步,指定虚拟机所在主机的VMnet8虚拟网卡

    Linux总结_第9张图片

    • 第5步,全部配置完成后,测试主机是否能够ping通虚拟机,虚拟机是否又能够ping通百度。
  • 桥接模式:虚拟机只要与本机同在一个网段就会使用真实网卡与本机进行通信。

    优点:配置连接上网简单,只要在同一个网段即可。

    缺点:此方式会占用本机所在网段的IP。

  • 虚拟机VMware3种网络模式(桥接、NAT、Host-only)的工作原理

    https://www.cnblogs.com/hehexiaoxia/p/4042583.html

注意:

  • 临时设置IP的命令:ifconfig eth0 192.168.1.2
  • 只有先保证与本机同在一个IP段,才能进一步实现远程登录。

2.4.2. 远程登录管理工具

  • putty:一个Linux连接客户端

Linux总结_第10张图片

相关设置:

第1步,解决Putty中文显示乱码问题,Category->Window->Translation -> UTF-8;

第2步,解决Putty3分钟不动需要重登的问题,putty->Connection->Seconds between keepalives ( 0 to turn off ), 默认为0, 改为60

第3步,save 此 session,保存此设置。

  • flashfxp:文件上传工具

Linux总结_第11张图片

  • Xshell + Xftp(推荐)

    • 命令终端和文件传输功能绑定

    • 方便管理多个会话

    • 界面美观
      Linux总结_第12张图片

  • SecureCRT

3. Linux常用命令

命令格式说明: 命令 [-选项] [参数],如ls -la /etc

  • 个别命令使用不遵循此格式
  • 当有多个选项时,可以写在一起
  • 简化选项和完整选项,-a等于 --all
  • 当遇到不熟悉的命令要常用帮助命令,如ls --help
  • 想获取shell内置命令的帮助信息可使用help,如help|man cd
  • root命令:/sbin或者/usr/sbin, 普通用户:/bin或者/usr/bin
  • Linux命令大全:http://man.linuxde.net/

3.1. 目录相关命令

3.1.1. 显示目录文件

  • 命令:ls,原意list -

  • 语法:ls [-alhi] [文件或目录]

    -rw-r–r--. 1 root root 27K 9月 8 22:52 install.log

    drwxr-xr-x. 2 root root 4.0K 9月 8 23:38 test

    • rwx(所有者,可读可行可执行)
    • r-x(所属组,可读可执行)
    • r-x(其他人,可读可执行)

3.1.2. 创建新目录

  • 命令:mkdir,原意make directory
  • 语法:mkdir [-p] 目录…

在Linux中除了 / 不可以用作文件名外,其它都可以但是最好不要以一些怪异符号。另外Linux下以.开关的文件都是隐藏文件!

3.1.3. 切换目录

  • 命令:cd,原意change directory
  • 语法:cd [目录|…|~]

3.1.4. 显示当前目录

  • 命令:pwd,原意print working directory
  • 语法:pwd

3.1.5. 删除空目录

  • 命令:rmdir,原意remove empty directory
  • 语法:rmdir [-p] 目录…

3.1.6. 删除文件或目录

  • 命令:rm,原意remove

  • 语法:rm [-rf] 文件或目录…

    • 如果使用rm -rf还可以递归删除带有文件的目录!
    • 删除还支持模糊匹配模式,如:rm -rf *、rm -rf *b*

3.1.7. 复制

  • 命令:cp,原意copy

  • 语法:cp [-rfp] 原文件或目录… 目标目录

    复制时-f强制覆盖的命令无效的解决方法是\cp -f …

3.1.8. 剪切文件、改名

  • 命令:mv,原意move
  • 语法:mv 原文件或目录… 目标目录

3.2. 文件相关命令

3.2.1. 创建空文件

  • 命令:touch

  • 语法:touch 文件…

    可以使用echo “内容” >|>> 文件位置,给文件添加内容。

3.2.2. 显示文件内容

  • 命令:cat

  • 语法:cat [-n] 文件

    如果需要反向显示文件内容,请用tac,如tac /etc/issue

3.2.3. 分页显示文件内容(向后)

  • 命令:more

  • 语法:more 文件

    空格向后翻页、回车向后换行、q退出

3.2.4. 分页显示文件内容(可向前也可向后)

  • 命令:less

  • 语法:less 文件

    • PageUp向上一页,PageDown向下一页;
    • 先按[ESC],再按[ > ],显示最后一行;
    • 先按[ESC],再按[ < ],显示第一行;
    • 上下键换行;
    • q退出。

3.2.5. 显示文件前面几行的内容

  • 命令:head
  • 语法:head -n 行数 /etc/services

3.2.6. 显示文件后面几行的内容

  • 命令:tail
  • 语法:tail -n 行数 /etc/services

3.2.7. 生成链接文件

  • 命令:ln,原意link

  • 语法:ln [-s] 原文件 目标文件

    • 在创建链接时,原文件一定要指定完全路径,如/root/a;
    • 软链接lrwxrwxrwx. 1 root root 1 9月 9 00:57 a->/root/a;
    • 硬链接cp -p + 同步更新,可通过i节点识别。

3.3. 搜索相关命令

3.3.1. 根据字符串进行文本搜索,并输出匹配的行

  • 命令:grep

  • 语法:grep [-i] 指定字符串 文件 --color

    • 在搜索结果中过滤:ls -al /etc | grep sys
    • 查询tomcat所占的进程:ps -ef | grep tomcat
    • 查看占用8080端口的程序:netstat -ant | grep 8080

3.3.2. 文件搜索

  • 命令:find

  • 语法:find [搜索范围] [匹配条件]

    • find /etc -name “init”
    • find /home -user “hsu”
    • find /etc -name “init*”
    • find /etc -type l|d|f

    更多用法:http://blog.csdn.net/u012408083/article/details/51754616

3.3.3. 搜索命令所在目录

  • 命令:whereis|which
  • 语法:whereis|which 命令名称

3.4. 权限相关命令

3.4.1. 改变文件或目录的权限

  • 命令:chmod,原意change the permissions mode of a file

  • 语法:chmod [-R] 权限数字 文件或目录

    权限数字表示:r-4,w-2,x-1,因此rwxrw-r–的权限数字为764

3.4.2. 改变文件或目录的所有者

  • 命令:chown,原意change file ownership
  • 语法:chown 用户名 文件或目录

3.4.3. 改变文件或目录的所属组

  • 命令:chgrp,原意change file group ownership
  • 语法:chgrp 所属组名 文件或目录

3.5. 用户相关命令

3.5.1. 添加新用户

  • 命令:useradd
  • 语法:useradd 用户名

3.5.2. 设置、修改用户密码

  • 命令:passwd
  • 语法:passwd 用户名

3.5.3 查看登录用户信息

  • 命令:who|w

  • 语法:who|w

    如果想列出登录过的用户信息可使用last或lastlog -u 用户名

3.5.4. 切换用户登录

  • 命令:su, 原意switch user

  • 语法:su 用户名

    如果用su切换了用户,可以使用exit命令退出当前用户,返回原来用户。

3.5.5. 注销

logout

3.5.6. 关机命令

  • shutdown -h|-r|-c 时间
  • halt
  • poweroff
  • init 0

3.5.7. 重启命令

  • shutdown -h|-r|-c 时间
  • reboot
  • init 6

3.5.8. 关于系统的运行级别

  • 共0~6个级别
    • 0,关机;
    • 1,单用户(root权限,用于系统维护,禁止远程登陆);
    • 2,不完全多用户状态(没有NFS);
    • 3,完全多用户状态(有NFS),登陆后进入控制台命令行模式;
    • 4,未分配;
    • 5,图形界面;
    • 6,重启
  • 系统默认运行级别配置:/etc/inittab
  • 通过命令查看系统运行级别:runlevel

3.5.9. 给指定在线用户发信息

  • 命令:write
  • 语法:write 其它用户名,并按回车进入信息编辑,按ctrl+d保存结束

3.5.10. 给所有在线用户发信息

  • 命令:wall,原意write all

  • 语法:wall 信息内容

    如果发送的内容比较长,可以事先将内容保存在文件中,然后使用读取文件命令:wall msgfile

3.5.11. 用户之间通信的邮件系统

  • 发送:

    第一步,在控制台输入mail 其它用户名;

    第二步,在控制台输入标题和内容信息;

    第三步,按ctrl + d执行发送。

  • 接收:

    在控制台直接输入mail查看信息:

    • 输入邮件编号可以查看邮件,然后输入h就可以重回邮件列表。
    • 输入n邮件编号可删除邮件。
    • 输入q退出

3.6. 网络相关命令

3.6.1. 查看和设置网卡信息

  • 命令:ifconfig,原意interface configure CentOS7 用 ip addr

  • 语法:ifconfig 网卡名称 IP地址,如ifconfig eth0 ip

    可以使用ifconfig -a查看有哪些网卡。

3.6.2. 测试网络连接

  • 命令:ping

  • 语法:ping [-c] 对方ip或域名

    如果目标地址为外网,需要使用桥接模式或NAT模式并配置网络!

3.6.3. 永久设置网络ip

第1步,输入setup命令进入更改;

第2步,然后输入vim /etc/sysconfig/network-scripts/ifcfg-eth0, 将ONBOOT改为yes,再重启网络;

第3步,重启网络服务service network restart。

Linux总结_第13张图片

3.6.4. 显示数据包到主机间的路径

  • 命令:traceroute
  • 语法:traceroute 对方ip或域名

3.6.5. 显示端口占用信息

  • 命令:netstat
  • 语法:netstat [-antup]

3.7. 压缩与解压缩相关命令

3.7.1. 压缩解压命令一:*.gz

  • 压缩语法:gzip 文件

    • gzip只能压缩文件(并且只能压缩一个文件),不能压缩目录
    • 压缩后不保留原文件
  • 解压语法:gunzip 压缩文件

3.7.2. 压缩解压命令二:*.tar.gz

  • 压缩语法:tar -zcf 压缩后的文件名 文件或目录…

    相关参数介绍:

    • z 打包时同时压缩;
    • c 打包;
    • f 指定文件名
  • 解压语法:tar -zxvf 压缩文件 [-C 其它目录]

    相关参数介绍:

    • z 解压缩;
    • x 解包;
    • v 显示详细信息;
    • f 指定压缩文件

*.tar.gz是使用最多的一种压缩格式,tar为打包,gz为压缩!

3.7.3. 压缩解压命令三:*.zip

  • 压缩语法:zip [-r] 压缩后的文件名 文件或目录…

    r 表示递归压缩目录文件

    zip的相关特点:

    • 压缩后能保留原文件
    • 能压缩目录
    • 能与windows上的zip文件通用
    • zip的压缩比比较差
  • 解压语法:unzip 压缩后的文件名

3.7.4. 压缩解压命令四:*.tar.bz2

  • 压缩语法:tar -jcf 压缩后的文件名 文件或目录…
  • 解压语法:tar -jxvf 压缩文件 [-C 其它目录]

3.8. 挂载设备

  • 挂载

    mount [-t 文件系统] 设备文件名 挂载点

    以iso镜像文件挂载到Linux为例:

    第1步,在虚拟机设置 -> CD/DVD -> 选择指定的iso镜像文件

    第2步,在mnt目录下创建cdrom目录

    第3步,执行mount -t iso9660 /dev/cdrom /mnt/cdrom进行挂载

    第4步,挂载完成后就可以到/mnt/cdrom浏览器光盘中的文件

    可以直接mount命令查看系统上所有的挂载情况!

  • 取消挂载

    umount /dev/cdrom

    不要在正在挂载的目录下执行取消挂载命令!

3.9. 其它常用命令

  • clear
  • history
  • df -h
  • du -sh 文件或目录
  • wget 网址
  • curl 网址
  • ps -ef | grep 软件名
  • kill -9 pid
  • time
  • date
  • cal
  • free
  • hostname

4. 文本编辑器Vim

4.1. Vim编辑器简介

Vim是一个功能强大、Linux/Unix上最常用的文本编辑器,它的作用是建立、编辑、显示文本文件,整个操作过程全是由命令完成!

Linux总结_第14张图片

4.2. Vim编辑器常用操作

  • 插入命令

    Linux总结_第15张图片

  • 定位命令

    Linux总结_第16张图片

  • 删除命令

    Linux总结_第17张图片

  • 剪切和复制命令

    Linux总结_第18张图片

  • 替换和撤消命令

    Linux总结_第19张图片

  • 搜索和搜索替换命令

    Linux总结_第20张图片

  • 保存和退出命令

    Linux总结_第21张图片

5. 软件包管理

5.1. 软件包管理简介

软件包分类:

  • 二进制包(RPM包、系统默认包)

    Redhat系列和Debian系列的最明显的区别就是在软件包格式上,Redhat默认为*.rpm,Debian默认为*.deb

    windows上的软件包不可以在linux上运行!

  • 源码包

    • 优点是可以查看源代码并且可以在不同发行版的Linux上安装;
    • 缺点是安装麻烦、安装时间长。

5.2. RPM包管理

5.2.1. RPM包命名原则

mysql-connector-odbc-5.1.5r1144-7.el6.x86_64.rpm

参数组成:

mysql-connector-odbc 软件名

5.1.5r1144 软件版本

7 软件的发布次数

el6 适合的Linux平台

x86_64 适合的硬件平台

rpm 包扩展名

5.2.2. RPM包的依赖

  • 依赖:a -> b -> c
  • 依赖模块查询:www.rpmfind.net

依赖安装测试:

第1步,先挂载CentOS-6.5-x86_64-bin-DVD1

第2步,cd /mnt/cdrom/Packages

第3步,rpm -ivh mysql-connector-odbc-5.1.5r1144-7.el6.x86_64.rpm

注:rpm包安装不需要指定目录,安装后将默认生成到相关目录!

5.2.3. rpm命令管理(手工处理依赖性)

  • 安装:rpm -ivh 包名
  • 升级:rpm -Uvh 包名
  • 卸载:rpm -e 包名
  • 查询软件是否已安装:rpm -ql 软件名
  • 查询与软件名相关的软件包:rpm -qa | grep 软件名
  • 查询未安装包的依赖性:rpm -qpR 包名

测试使用CentOS 6.5里自带的rpm包,手工处理依赖安装Apache!

5.2.4. yum在线管理(自动处理依赖性)

  • 查询所有可用软件包列表:yum list
  • 搜索服务器上所有和关键字相关的包:yum search 关键字
  • 安装:yum -y install 包名
  • 升级:yum -y update 包名,别忘了包名,否则将会误升级Linux内核
  • 卸载:yum -y remove 包名,尽量少用,可能会误删除系统文件

5.2.5. 使用yum安装apache

第1步,yum -y install httpd;

第2步,service httpd start|restart|stop;

第3步,开启服务器后,测试服务器是否开启成功。

测试方式有:

  • 本地:curl http://localhost

  • 外部:在浏览器上输入服务器的ip测试

    需要注意的是,如果在外部无法访问,需要设置防火墙开启80端口:

    第1步,打开防火墙配置:vi /etc/sysconfig/iptables

    第2步,开启80端口:-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEP

    第3步,重启防火墙,配置生效:service iptables restart

    当然也可以直接关闭防火墙service iptables stop,这在生产环境中是不允许的!

    另外,也可以在Windows上使用telnet命令查看80端口是否开启:telnet 192.168.0.24 80

安装完成后,输入httpd -v可查看apche的安装版本!

5.3. 源码包管理

5.3.1. 源码包与RPM包安装的位置不同

  • RPM包为默认安装位置,可通过rpm -ql 软件名查看相关路径
    Linux总结_第22张图片

  • 源码包的安装位置,一般是源码存放在/usr/local/src目录,最终安装在/usr/local目录

5.3.2. 源码包与RPM包安装的启动方式不同

  • RPM包安装的服务可通过系统服务命令来启动

    • service httpd start|restart|stop

    • /etc/rc.d/init.d/httpd start|restart|stop

      可通过/etc/rc.d/init.d和setup查看系统安装了哪些服务!

  • 源码包安装的服务,没有安装到默认路径中,只能由绝对路径启动

    • /usr/local/apache/bin/apachectl start|restart|stop

5.3.3. 源码安装方式

  • Makefile方式

    以Makefile方式安装Apache为例(大致步骤):http://www.cnblogs.com/zhuque/archive/2012/11/03/2763352.htmlhttp://blog.csdn.net/u011214505/article/details/48130533

    第1步,安装C语言编译器yum -y install gcc (实际安装时可能还需要三方依赖)

    第2步,下载httpd-2.4.27.tar.gz,并传至linux的/usr/local/src下,再解压

    第3步,进入解压目录,然后vi INSTALL,根据INSTALL提示进行安装

    $ ./configure --prefix=/usr/local/apache,生成Makefile文件

    $ make,编译

    $ make install,安装

    $ /usr/local/apache/bin/apachectl start,启动

  • 脚本安装包方式

    脚本安装包是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。如webmin、mysql等软件

  • 绿色版方式安装

    解压即安装完成。如jdk、tomcat等软件

6. 相关软件的安装与配置

6.1. 安装JDK

第1步,卸载CentOS自带的Java环境

先查看安装rpm -qa | grep java,再做对应卸载yum -y remove java

第2步,下载jdk-8u144-linux-x64.tar.gz,并传至linux的/usr/local/src下

第3步,解压tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/local

第4步,配置环境变量

vim /etc/profile,在最后加入以下几行,并保存退出:

export JAVA_HOME=/usr/local/jdk1.8.0_144

export PATH=$PATH:/usr/local/jdk1.8.0_144/bin
需要刷新配置环境变量;source /etc/profile
第5步,source /etc/profile,并在控制台输入javac测试安装是否完成

6.2. 安装Tomcat

第1步,在安装前要安装JDK,并一定要配置环境变量JAVA_HOME!

第2步,下载apache-tomcat-8.0.46.tar.gz,并传至linux的/usr/local/src下

第3步,解压tar -zxvf apache-tomcat-8.0.46.tar.gz -C /usr/local

第4步,转至/usr/local/apache-tomcat-8.0.46/bin目录

第5步,启动Tomcat:./startup.sh

Tomcat的两种启动方式:

  • ./startup.sh,默认为后台启动

    查看控制台的输出:more /usr/local/apache-tomcat-8.0.46/logs/catalina.out

  • ./catalina.sh run,默认为前台启动(可以看到控制台)
    不能访问这可能是没有开启端口,可关闭防火墙或者开启相关的端口

6.3. 安装MySQL

第1步,MySQL数据库安装(CentOS操作系统/tar.gz方式)

具体安装步骤:http://www.cnblogs.com/sybblogs/p/5633956.html

第2步,配置环境变量

vim /etc/profile,在PATH后追加MySQL的bin目录路径:

export PATH=$PATH:/usr/local/jdk1.8.0_144/bin:/usr/local/mysql/bin

第3步,source /etc/profile

第4步,连接数据库,mysql -u用户名 -p密码

  • 登录成功后可查询MySQL的字符集:show variables like ‘character%’;

  • 允许MySQL的远程访问:GRANT ALL PRIVILEGES ON *.* TO root@’%’ IDENTIFIED BY ‘root’ WITH GRANT OPTION;

    操作完后切记执行以下命令刷新权限:FLUSH PRIVILEGES;

第5步,停止服务,/usr/local/mysql/support-files/mysql.server stop

6.4. 安装Apache

参考5.2.5. 使用yum安装apache

7. 用户和用户组管理

7.1用户的管理

useradd 添加一个用户

useradd test 添加test用户

useradd test -d /home/t1 指定用户home目录

passwd 设置、修改密码

passwd test 为test用户设置密码

切换登录:

ssh -l test -p 22 192.168.19.128

su – 用户名

userdel 删除一个用户

userdel test 删除test用户(不会删除home目录)

userdel –r test 删除用户以及home目录

7.2组管理:

当在创建一个新用户user时,若没有指定他所属于的组,就建立一个和该用户同名的私有组

创建用户时也可以指定所在组

groupadd 创建组

groupadd public 创建一个名为public的组

useradd u1 –g public 创建用户指定组

groupdel 删除组,如果该组有用户成员,必须先删除用户才能删除组。

groupdel public

7.3 id,su命令

【id命令】

功能:查看一个用户的UID和GID

用法:id [选项]… [用户名]

直接使用id

直接使用id 用户名

【su命令】

功能:切换用户。

用法:su [选项]… [-] [用户 [参数]… ]

示例:

su u1 切换到u1用户

su - u1 切换到u1用户,并且将环境也切换到u1用户的环境(推荐使用)

【账户文件】

/etc/passwd 用户文件

/etc/shadow 密码文件

/etc/group 组信息文件

【用户文件】

root❌0:0:root:/root:/bin/bash

账号名称: 在系统中是唯一的

用户密码: 此字段存放加密口令

用户标识码(User ID): 系统内部用它来标示用户

组标识码(Group ID): 系统内部用它来标识用户属性

用户相关信息: 例如用户全名等

用户目录: 用户登录系统后所进入的目录

用户环境: 用户工作的环境

【密码文件】

shadow文件中每条记录用冒号间隔的9个字段组成.

用户名:用户登录到系统时使用的名字,而且是惟一的

口令: 存放加密的口令

最后一次修改时间: 标识从某一时刻起到用户最后一次修改时间

最大时间间隔: 口令保持有效的最大天数,即多少天后必须修改口令

最小时间间隔: 再次修改口令之间的最小天数

警告时间:从系统开始警告到口令正式失效的天数

不活动时间: 口令过期少天后,该账号被禁用

失效时间:指示口令失效的绝对天数(从1970年1月1日开始计算)

标志:未使用

【组文件】

root❌0:

组名:用户所属组

组口令:一般不用

GID:组ID

用户列表:属于该组的所有用户

8. 权限管理

8.1文件权限

Linux总结_第23张图片

属主(user) 属组(group) 其他用户
r w x r w x r w x
4 2 1 4 2 1 4 2 1

8.2 Linux三种文件类型:

普通文件: 包括文本文件、数据文件、可执行的二进制程序文件等。

目录文件: Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。

设备文件: Linux系统把每一个设备都看成是一个文件

8.3文件类型标识

普通文件(-)

目录(d)

符号链接(l)

* 进入etc可以查看,相当于快捷方式

字符设备文件(c)

块设备文件(s)

套接字(s)

命名管道(p)

8.4 文件权限管理:

chmod 变更文件或目录的权限。

chmod 755 a.txt

chmod u=rwx,g=rx,o=rx a.txt

chmod 000 a.txt / chmod 777 a.txt

chown 变更文件或目录改文件所属用户和组

chown u1:public a.txt :变更当前的目录或文件的所属用户和组

chown -R u1:public dir :变更目录中的所有的子目录及文件的所属用户和组

9. 文件系统管理

10. Linux服务管理

11. Linux系统管理

12. 日志管理

13. 启动管理

14. 备份与恢复

15. Shell编程

附录

1. 相关面试题

  • 熟悉Linux吗?它主要的应用领域是什么?
  • 说说Linux中的10个常用命令?
  • Linux与Windows有什么不同?为什么都推荐使用Linux做为服务器?
  • Linux的软件安装方式有哪些?各有什么区别?
  • 在Linux中部署项目的流程?

你可能感兴趣的:(Linux)