Linux常用命令

目录结构介绍

文件系统

文件系统就是操作管理存储设备或分区上的文件的方法和数据结构;即存储设备上组织文件的方式。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。

  • fat16(MS-DOS 6.x),每个分区只能值2GB
  • fat32(windows 95),不能存放大于4GB的单个文件,性能较弱,容易产生碎片
  • ntfs(windows NT,2000/XP/Vista/Win7),提升了fat的稳定性
  • ext4(linux),扩展文件系统,是linux下的日志型文件系统
  • hfs[+](mac),苹果电脑的文件系统
  • exfat(mac/win),可以支持4GB以上的文件,适合于闪存

目录结构

  • linux和windows的文件系统差别很大,没有C/D/E等盘符,他是从’/’开始的,只有它没有上一级目录,是处于最顶层的目录,倒过来看目结构像一棵树,’/’就相当于树根,因此通常称为根目录。

  • 根目录文件及目录说明

目录说明
/根目录,源头;没有上级目录
/bin大多数的操作命令
/boot启动文件
/dev设备文件(一切设备皆文件)
/etc配置信息
/home用户的家目录,每个用户对应/home下的一个文件夹
/root超级管理员用户root的家目录
/lib库文件
/lib6464位的库文件
/lost+found通常是空的,出现异常(非法关机)时保存信息
/media自动识别一些设备,会挂在到该目录
/mnt专门用于挂载的目录
/opt安装系统之外的非必须软件的地方
/proc虚拟文件系统目录,会映射硬件信息
/sbin超级用户执行的命令
/selinuxselinux软件目录,用于保证系统安全
/srv存储本机或本机服务器提供的数据或服务
/sys类似于/proc的特殊文件系统,存放内核数据信息
/tmp保存随时可能销毁的文件
/usr存放应用程序
/var系统产生的不可自动销毁的文件,缓存文件,日志文件,mail、database、log

VIM编辑器

  • 简介:是一款终端编辑器vi,后来有了vi的增强版本vim。被誉为终端编辑器之神。

  • 安装:yum install -y vim

  • 使用:通过不同的模式切换,完成特定的功能

    1. 正常模式(命令模式),打开文件时的默认模式
    命令/操作功能说明
    vim filename打开或新建(需要修改才会真的创建)文件
    esc从其它模式回到正常模式
    ZZ(shift + zz)保存退出
    定位光标
    vim filename +10打开文件,将光标定位到第10行
    vim filename +打开文件,将光标定位到末尾
    gg定位到首行
    G定位到尾行
    ngg定位到第n行,n为行号
    0 (数字)行首
    ^第一个非空字符
    $行尾
    k
    j
    h
    l
    ctrl + f向下翻一页
    ctrl + b向上翻一页
    ctrl + u向上翻半页
    ctrl + d向下翻半页
    删除/复制/粘贴/撤销
    yy复制整行
    y^复制光标到行首
    y$复制光标到行尾
    yw复制一个word
    yG复制光标到文档尾部
    ynG/nyG复制到第n行
    x向右删一个字符
    X向左删一个字符
    nx向右删n个字符
    nX向左删n个字符
    dd删除光标所在行
    ndd删除光标开始的n行
    d0删除光标之前的内容,单行
    d$删除光标之后的内容,单行
    dG删除光标至文件末尾的内容
    d1G删除光标至文件开头的内容
    p粘贴剪切板中的内容
    u撤销刚才的操作
    ctrl + r反撤销
    1. 插入模式(输入模式),从键盘获取内容进行文件内容的编辑会修改,正常模式下输入以下命令即可进入
    命令/操作功能描述
    i在光标位置插入
    I在一行的第一个非空字符处插入
    a在光标下一个字符插入
    A在行尾插入
    o在光标下一行插入空行
    O在光标上一行插入空行
    s删除光标所在字符
    S删除光标行
    1. 编辑模式(尾行模式),在命令模式下输入’:’即可进入,末尾会出现一个’:’
    命令/操作功能说明
    :w保存,但是不退出vim
    :q退出vim
    :wq保存并退出
    :w newfile将内容保存到newfile中
    :w!强制保存
    :q!强制退出
    :x保存退出,等价于 :wq,等价于 ZZ
    :e!放弃修改,重新恢复到修改之前的文本
    :n跳转到第n行
    :set nu[mber]显示行号
    :set nonu[mber]隐藏行号
    :set tabstop=4tab的空白字符数
    :set fileencodings=utf-8,gbk文件字符集
    :set mouse=a启用鼠标
    :set syntax on/off语法高亮开/关
    [:]/内容查找内容,n下翻,N上翻,可以不带冒号
    [:]?内容查找内容,N下翻,n上翻,可以不带冒号
    :%s/原内容/新内容全文使用新内容替换原内容
    :m,ns/原内容/新内容使用新内容替换m到n行内的原内容
  • 使用配置

    • 上面的设置都是单次的,关闭vim就失效了
    • 永久配置:在用户的家目录创建.vimrc文件,将配置的内容写入该文件即可
    • 配置生效:重启电脑,或使用命令source ~/.vimrc

man命令

  • 安装:yum install -y man

  • 简介:man是manual(手册)的简写,提供了标准的帮助文档的查询

  • 使用

操作说明
man name查询特定的命令/函数等的帮助文档
q退出查询
空格向下翻页
pageup向上翻页
pagedown向下翻页
向上一行
向下一行
enter向下一行
?内容搜索内容

help

  • 查看命令的帮助文档
  • 格式:ls –help

使用命令

  • 命令格式

    命令 [选项] [参数]
    说明:[]代表可选,可以省略不写
    例如:ls -a /etc
  • 常见命令

命令说明
ls显示指定目录的内容,默认不指定目录显示当前目录的内容
pwd查看工作目录
cd切换工作目录
history查看所有历史命令,保存在~/.bash_history文件中
alias给命令起别名,例如:alias ll=’ls -l –color=auto’
unalias取消别名,例如:unalias ll
which查看具体的命令

- 目录相关符号

符号说明
.当前目录
..上级目录
~用户家目录
-刚才切换过来的目录

- ls命令选项

选项说明
-a显示所有,包括隐藏文件(以.开头的文件)
-l列表展示详细信息
-h人性化的显示文件(K/M/G)

- ls -l结果说明

类型权限 | 引用数 | 用户 | 用户组 | 大小 | 月份 | 日 | 时间/年份 | 名称

  • 颜色与类型对应

    -:(默认)表示普通文件
    d:(蓝色)表示目录文件
    b:(黄色)块设备文件
    c:(棕色)字符设备文件
    l:(青色)软链接文件
    s:(粉红)套接字文件
    p:(青黄)管道文件

扩展

  • 修改yum源

    进入目录:cd /etc/yum.repos.d/
    备份文件:mv CentOS-Base.repo CentOS-Base.repo.bak
    下载文件:curl -O http://mirrors.163.com/.help/CentOS6-Base-163.repo这里只是举个例子,源地址不一定可用)
    清空缓存:yum clean all
    生成缓存:yum makecache

文件操作

文件及目录

  • 相关命令
命令说明
touch创建文件,可以一次性创建多个文件
rm删除文件或目录(需要加-r选项)
cp拷贝文件或目录(需要加-r选项)
mv移动文件或目录
mkdir创建目录
rmdir删除目录,只能是空目录

- 选项说明

  • -f:表示强制,默认删除操作是给予提示,添加此选项就不再提示
  • *:表示模糊匹配任意
  • -r:删除或拷贝目录时的递归操作
  • -p:创建目录时,需要创建中间目录,例:mkdir -p 1/2/3

文件流操作(sed)

  • 格式

    sed [选项/参数] 指令 文件
    -n:结合p一起使用
    -i:修改原文件,默认只会将内容显示到缓冲区
  • 指令

    a:新增
    d:删除
    p:结合-n一起使用,用来显示一行
    c:取代
    s:替换指定的内容
  • 实例

    sed '1a 曾志伟' 1.txt                #在第1行的下面添加内容‘曾志伟’,不会改变原文件
    sed -i '1a 曾志伟' 1.txt         #在第1行的下面添加内容‘曾志伟’,直接改变原文件
    sed '1,3a 潘玮柏' 1.txt          #在第1行到第3行的下面添加内容‘曾志伟’,不会改变原文件
    sed -i '2d' 1.txt                   #删除第2行的内容
    sed '2,$d' 1.txt               #删除从第2行到末尾的所有内容
    sed -n '2p' 1.txt               #显示第2行的内容
    sed -n '2,$p' 1.txt                #显示从第2行到末尾的内容
    sed '1c XXX' 1.txt                  #用XXX取代第一行的内容
    sed '1,3c XXX' 1.txt            #用XXX整体取代1-3行的内容
    sed 's/潘玮柏/pwb/g' 1.txt           #用'pwb'全局替换‘潘玮柏’
    sed '4,5s/潘玮柏/pwb/g' 1.txt        #用'pwb'替换4-5行的‘潘玮柏’

查看文件

  • 相关命令
命令说明
cat从上到下,顺序显示全部内容
tac从下到上,逆序显示全部内容
head显示开头的几行,默认10行,使用‘-n’,n表示要显示的行数,例:head -3 1.txt
tail显示末尾的几行,用法同head
nl功能同cat,额外显示行号
wc统计显示,行数 | 单词数 | 字节数 | 文件名
more一点一点显示内容
less一点一点显示内容

- more和less使用说明

  • 显示一屏就会停止
  • q退出查看
  • 空格下翻一页
  • 回车下翻一行
  • more查看完毕时会自动退出,而less不会
  • less比more多了上下按键单行的查看
  • 通常更多的情况是结合管道,如:ls -l /etc | more,将输出的结果作为more的参数

用户和用户组

  • 相关命令
命令说明
whoami查看当前登录用户
useradd添加用户,会在/home目录创建一个与用户名相同的文件夹
userdel删除用户,添加’-rf’可以同时删除用户家目录和邮件目录
su [-]切换到指定用户,默认root。带’-‘会将shell环境也进行切换
sudo以指定用户(默认root)执行命令,但是并不会切换用户,如:sudo 命令
passwd设置指定用户密码,默认设置root用户,只有root用户才有权限
groupadd添加用户组
groupdel删除用户组
gpasswd向群组添加/删除指定用户,如:gpasswd -a/-d test hello
chown修改文件拥有者[及所属组],如:chown test[:test] 1.txt
chgrp修改文件所属组,如:chgrp root 1.txt
chsh修改用户的shell,chsh test -s /sbin/nologin不能登录,chsh test -s /bin/bash可以登录

- 特殊文件

  • /etc/passwd,改文件存放了系统中所有的用户信息,一行表示一个用户,具体解释:

    用户名:密码:用户ID:用户组ID:描述:家目录:shell
  • /etc/group,改文件存放了系统中所有的用户组信息,一行表示一个用户组,具体解释:

    群组名:口令:组ID:组员               #口令处的x或空白都表示没有密码
  • /etc/shadow,用户密码文件,依附于/etc/passwd,但是并不是由该文件生成。

    • 使用说明
  • 用户以及用户组ID通常要大于500,小于500的系统已占用

  • 创建用户时
    • 禁止登陆:useradd test -s /sbin/nologin
    • 指定UID:useradd test -u 600
    • 指定家目录:useradd test -d /xxx/yyy
    • 指定用户组:useradd test -g group
  • 修改用户shell,chsh test -s /sbin/nologin
  • 用户身份标识:普通用户$,超级用户#
  • 修改所有者时加’-R’,会进行递归操作
  • 在使用用户名和用户组的地方通常可以使用UID和GID替代

文件权限

  • 说明:linux的权限有所有者、所属组、其它的概念

  • 权限:所有文件都涉及,可读(r)、可写(w)、可执行(x),-表示没有对应权限

  • 原理:在ls -l查看的结果集中,第一项表示权限,分为3组,分别对应所有者、所属组、其它

  • 修改文件权限,使用命令chmod,格式:chmod [身份] [修改] [权限]

选项说明
身份
u用有者
g所属组
o其它
a所有
修改
+添加
-去掉
=设置
权限
r可读
w可写
x可执行

- chmod使用说明:-R表示递归操作

  • 本质:使用一组(3位)八进制的数来表示权限,如:0755,详解如下:

    转换为二进制:0755 => 111        101     101
    对应三个身份:          拥有者    所属组   其它
    每一组都有权限:  可读、可写、可执行
    权限描述:拥有者可读可写可执行,所属组可读可执行,其它可读可执行
  • 简写:chmod 0755 1.txt

掩码(umask)

  • 作用:限定了新建文件的默认权限,实际的权限与掩码相反(普通文件减去可执行权限)

  • 命令:umask [value],查看或设置掩码,不加value表示查看

  • 实例分析

    掩码为:0022 => 000 010 010
    新建目录权限:   111 101 101
    新建文件权限:  110 100 100,因为文件没有必要默认就有可执行的权限
  • 命令的修改是临时的,修改配置文件才能永久生效

    全局配置:/etc/profile 
    单个用户:~/.profile 或者 ~/.bash_profile,优先级高于全局配置

特殊属性

  • 有时候root都无法修改一个文件,多半是添加了特殊权限,可以使用lsattr查看,使用chattr修改,其中最重要的一个权限是保护权限,就是不能更改(immutable),方式误删除

  • 使用实例

    lsattr:查看特殊属性
    chattr:修改特殊属性,+表示添加,-表示去掉,i表示不可更改
    chattr -i file
    chattr +i file

链接文件

  • 命令:ln

  • 作用:创建一个文件或目录的链接

  • 格式:ln [-s] 原文件 新名称

  • 说明:使用ls -l查看时,文件类型为’l’的就是软链接

    硬链接:创建链接时不加-s参数,相当于一个文件有几个名字,极少用到
    1.链接文件的用户级组信息不变
    2.不能给目录添加
    3.不能跨文件系统
    软链接:创建链接时添加-s参数,一个文件保存了另一个文件的路径,类似于windows的快捷方式
    1.软链接文件的用户及组信息为当前用户及组
    2.可以给目录添加
    3.可以跨文件系统

文件搜索与磁盘管理

文件搜索

  • find

    • 作用:功能非常强大的搜索命令,可以搜索任意文件

    • 格式:find [目录] [条件]

    • 选项:

    -name:指定名字              #   find . -name install.log\*
    -type:指定类型(b/c/l/d/f/s) # find /etc/ -type d
    -size:指定大小,单位有:k/m/g,+表示大于,-表示小于   # find . -size +5k
    -mtime/atime/ctime:指定修改/访问/创建时间,单位为天,+表示几天前,-表示几天内
    -mmin/amin/cmin:指定修改/访问/创建时间,单位为分,用法同上
    -user:指定用户
    -group:指定所属组
    -maxdepth:指定搜索深度(目录层级)
    
    • 说明
    1.find的效率不是特别高,适用于普通文件的查找
    2.如果找命令等特殊文件,有更好的命令替代:whereis/which
  • whereis

    • 作用:专门用于搜索应用程序

    • 格式:whereis grep

    • 结果:

    grep: /bin/grep /usr/share/man/man1/grep.1.gz
    名称  路径      帮助文档路径
  • which

    • 作用:在$PATH环境变量中,查找系统命令,能够明确的指明使用的是哪一个
    • 例子:which ls
  • grep

    • 作用:正则表达式搜索

    • 格式:grep [选项] pattern [文件名]

    • 选项:

    -i:忽略大小写
    -n:显示行号
    • 说明:
    1.pattern是正则表达式
    2.要想用好grep,必须学好正则
    • 实例
    grep ftp /etc/passwd -n     #在/etc/passwd文件中查找包好tfp的行,并显示行号
    grep 'abc' *.txt -i         #在所有的txt文件中忽略大小写的查找包含abc的行
    ls /bin | grep '^m'         #查找/bin目录下以m开头的文件

磁盘管理

  • 基本说明

    1.使用步骤:磁盘 => 分区 => 格式化 => 挂载
    2.磁盘的命名:/dev/sda、/dev/sdb、/dev/sdc、……
    3.磁盘的分区:/dev/sdb1、/dev/sdb2、……
    4.一块磁盘最多可以分4个主分区,和1个扩展分区
    5.主分区可以安装操作系统,扩展分区是不能直接使用的,但是可以划分多个逻辑分区
    6.分区测试可以插入一个U盘,也可以通过虚拟机分配一块硬盘
  • 磁盘挂载

    mount                         #查看当前系统的磁盘挂载信息
    mount [选项] 磁盘 挂载点         将指定的磁盘挂载到指定的位置
    -o 指定字符集 iocharset=utf8
    -t 指定磁盘类型;msdos(fat16)、vfat(fat32)、auto自动识别、ntfs需要安装ntfs-3g软件
    
    umount 挂载点/磁盘                         #取消挂载
    说明:
    1.作为挂载点的目录中的内容不会随着挂载而丢失,取消挂载之后就恢复了
    2.取消挂载时提示正在使用等之类的信息,请使用以下命令清除之
    fuser -m -k 挂载点
    umount 挂载点
    开机挂载:
    修改配置文件:/etc/fstab,一行表示一条挂载信息
    添加自动挂载:/dev/sdb1  /mnt/usb    ext4    defaults    0   0
    立即挂载:mount -a,否则需要重启系统
    
    /etc/fstab每列信息说明:
    磁盘 | 挂载点 | 文件系统类型 | 选项 | 备份 | 检查
    选项:rw/suid/dev/exec/auto/nouser/async,defaults相当于这些
  • 磁盘分区

    fdisk -l                      #查看磁盘信息
    
    fdisk 磁盘                  #对指定磁盘进行分区
    进入分区状态的命令:
    m:查看功能菜单(可以理解为帮助信息)
    n:新建一个分区,e表示扩展分区,p表示主分区
    d:删除一个分区
    p:打印分区信息
    q:不保存修改,并退出
    w:保存修改,并退出
    
    分区步骤:
    1.fdisk /dev/sdb
    2.查看分区信息:p
    3.删除一个分区:d
    4.新建一个分区:n,需要指定类型,指定开始位置,指定结束位置或大小(+sizeK/M/G)
    5.保存分区信息:w
  • 分区格式化

    命令:mke2fs、mkfs.ext2、mkfs.ext3、mkfs.ext4
    实例:
    mke2fs -t ext4 /dev/sdb1    #格式化为ext4
    mkfs.ext4 /dev/sdb5         #格式化为ext4
  • 磁盘查看

    df

    作用:查看磁盘的使用情况
    选项:
    -h 人性化的显示磁盘大小信息
    -T 显示文件系统类型
    -t 只查看特定的文件系统类型的磁盘

    du

    作用:统计指定目录信息(包括子目录)
    选项:
    -h 任性化的显示大小信息
    --max-depth:指定层级深度

PATH

  • 说明:其实就是一个环境变量,类似于windows下的环境变量

  • 查看:echo $PATH

  • 配置:

    单次配置:export PATH=$PATH:/root
    永久配置:
    系统:将export PATH=$PATH:/root添加到/etc/profile文件的末尾
    用户:将export PATH=$PATH:/root添加到~/.bashrc文件的末尾

管道(|)

  • 说明:将前面命令的输出作为后面命令的输入,中间使用’|’拼接

  • 实例

    ls /etc | less
    ls /etc/ | grep ^m
  • 对于不支持管道做为参数的命令,可以使用xargs

    find . -name test.sh |xargs rm

shell脚本

  • shell是什么?

    其实shell就是一个命令解析器,将用户输入的命令解释给系统

  • 常见的shell解析器

    sh、bsh、csh、bash(linux默认)、ksh、zsh

  • 交互方式

    • 交互式:用户输入一条命令,敲回车,然后shell解析一下
    • 脚本式:编写一个shell脚本文件,shell会依次解析并执行
  • 编写脚本

    1. 创建一个文件:vim test.sh

    2. 输入内容

      
      #!/bin/bash
      
      cd /
      ls
    3. 添加可执行权限:chmod +x test.sh

    4. 执行shell脚本

      在当前目录:./test.sh
      不在脚本目录:/root/test.sh

扩展

  • 安装ntfs-3g以支持nfts文件系统的磁盘挂载

    1.使用filezilla将软件包拷贝到虚拟机
    2.解压:tar -zxvf ntfs-3g_ntfsprogs-2017.3.23.tgz
    3.进入目录:cd ntfs-3g_ntfsprogs-2017.3.23
    4.安装gcc:yum install -y gcc
    5.配置:./configure
    6.编译:make
    7.安装:make install
    8.测试:mount -t ntfs-3g /dev/sdc1 /mnt

系统服务管理

OSI模型

  • 概念:七层模型,亦称OSI(Open System Interconnection)参考模型,是参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。
  • 七层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
  • TCP/IP:简化的OSI模型,共四层:应用层、传输层、网络层、网络接口层

网络服务

  • 相关命令
命令说明
ping检测网络连通性,-c可以指定次数
ifconfig查看或修改网卡信息
ifup启动网卡
ifdwon关闭网卡
service network start|stop|restart开启|关闭|重启网络服务

- 相关文件


网卡配置:/etc/sysconfig/network-scripts/ifcfg-eth0
域名解析:/etc/resolv.conf
nameserver 8.8.8.8 #一行表示一个域名解析服务器(DNS)
本地劫持:/etc/hosts 相当于本地的DNS
IP 域名 #一行表示一个

服务监测

  • netstat

    作用:查看网络端口占用情况
    使用:netstat -tunpl
  • free

    作用:查看内存使用情况
    使用:free -h
  • w

    作用:w是what的简写,当前系统正在做什么
    使用:w
  • top

    作用:w的详细信息,并且3s刷新一次
    结果:
    第一行:同w的结果一样
    第二行:任务信息
    第三行:CPU信息
    第四行:内存信息
    第五行:交换分区
    其它行:进程信息
  • vmstat

    作用:查看虚拟内存
    结果:进程、内存、交换、输入输出、系统、CPU

进程管理

  • ps

    作用:查看进程
    选项:
    a:所有进程
    u:显示用户信息
    x:没有控制终端的进行
    实例:ps aux
  • kill

    作用:杀死进程
    选项:
    -9:强制杀死
    -I:杀死进程的同时杀死子进程,不一定都会成功
    实例:kill -9 PID

服务管理

  • 检查配置:chkconfig

    作用:可以更新或查看系统服务运行级信息,不会直接控制服务的开关
    格式:chkconfig [选项] [操作] [参数]
    选项:
    --list:查看信息
    --add:添加服务
    --del:删除服务
    --level:指定级别,默认级别是2345
    操作:
    on:开启
    off:关闭
    reset:重置
    说明:
    1.若想使用service控制服务的开关,必须将服务的控制脚本放在/etc/rc.d/init.d
    2.服务的控制脚本要给可执行权限,如:0755
    3.每个运行模式的控制脚本文件:K表示关闭,S表示开启,按照数字从小到大依次执行脚本
  • 服务开关:service 服务 start|stop|restart|reload #开启|关闭|重启|重新加载配置

远程会话

  • 场景:当系统管理员远程连接服务器,需要做费时任务,只能干等,因为连接中断服务停止

  • 安装screen命令:yum install -y screen

  • 使用说明:

    创建新的会话
    screen 不传任何参数即可,指定名字使用参数 -S
    查看会话信息
    screen -ls
    恢复指定会话
    screen -r   编号/名称
    杀死一个会话
    screen -S 编号/名称 -X quit
    会话快捷操作
    ctrl + a + d    #暂时离开
    ctrl + a + c    #创建新窗口
    ctrl + a + w    #显示所有窗口,带*的是当前所在窗口
    ctrl + a + p    #上一个窗口
    ctrl + a + n    #下一个窗口
    ctrl + a + k    #关闭当前窗口
    退出远程会话
    ctrl + a + d    暂时离开
    exit            关闭当前窗口,最后一个窗口关闭时会结束会话
    若会话时vim编辑器,结束编辑退出编辑器时会话就会自动结束
    清理异常会话:查看时显示dead
    screen -wipe

计划任务

  • 说明:让计算机在一定的时间间隔做指定的事情

  • 添加任务

    • 修改配置文件/etc/crontab,只能是root,用于给其它用户安排任务,必须指定用户
    • 使用crontab命令编辑计划任务文件,每个用户都可以使用,保存在:/var/spool/cron/用户名
  • 配置格式说明

    计划任务列表中,一行表示一个计划任务,基本格式:分 时 天 月 星期 [用户] 任务
    分:0~59
    时:0~23
    天:1~31,以实际的月份为准
    月:1~12,也可以是英文缩写
    星期:0~6,表示周日-周六,也可以是英文缩写
    用户:root用户编辑/etc/crontab时必须指定
    任务:可以是命令、脚本等
    具体说明:
    *:表示每当前选项单位,如:分钟选项,表示每分钟
    -:表示区间,如:天的选项,1-4,表示1,2,3,4号
    /:表示每多少单位,如:时选项,*/3,表示每3个小时
    ,:表示并行的值
    
    #:表示注释
    
    实例:
    * */3 * * * root date >> /root/test.log
    30 23 * * * root service iptables restart
    * 9 * * 1-5 root echo 'hello world' >> test.log
  • crontab命令使用

    -l:查看计划任务
    -e:编辑计划任务
    -r:删除计划认识,会全部干掉
    -i:显示提示信息

系统安全

  • selinux:是linux下的一套安全机制,非常复杂,通常都需要关闭,否则程序可能会出意想不到的问题

    查看状态:getenforce
    设置状态:setenforce 0|1
    永久设置:
    1.配置文件/etc/selinux/config
    2.修改为:SELINUX=disabled
    3.重启后生效
  • iptables:防火墙,就是在外网和内网之间的一道安全屏障,保证计算机的安全

    service iptables start|stop|restart|status  开启|关闭|重启|查看 服务

    它通过设置很多规则,来保证安全,规则有点复杂,了解一下

    规则类型:filter(过滤)、nat(地址转换)、mangle(报文修改)
    说明:今天只讲filter
    查看规则:iptables -nvL --line-number
    清除规则:iptables -F
    规则链:INPUT(进来的包)、FORWARD(转发的包)、OUTPUT(出去的包)
    命令格式:iptable 操作 规则名 [选项] 动作
    操作:
    -A:添加
    -I:插入
    -D:删除
    -R:替换
    选项:
    -s:源IP
    -d:目标IP
    --sport:源端口号
    --dport:目标端口号
    -p:指定协议
    动作:
    -j:ACCEPT(接收)、REJECT(拒绝)、DROP(丢弃)
    添加规则:
    iptbale -A INPUT -s 10.36.136.38 -p tcp --dport 22 -j REJECT
    删除规则:
    iptbale -D INPUT -s 10.36.136.38 -p tcp --dport 22 -j REJECT
    iptbale -D 规则名 序号
    永久生效:
    需要修改配置文件:/etc/sysconfig/iptables
    永久关闭:
    chkconfig iptables off
    service iptabels stop

软件安装方式

压缩解压

  • zip/unzip

    安装软件:yum install -y zip unzip
    实例演示:
    zip 123.zip *.txt   #将所有.txt文件压缩为123.zip
    unzip 123.zip       #解压缩123.zip文件
  • gzip/gunzip

    说明:压缩单个文件,不能压缩目录,压缩后会删除源文件,默认压缩文件后缀是.gz
    实例:
    gzip 1.txt              #压缩1.txt,会生成1.txt.gz
    gunzip 1.txt.gz         #解压1.txt.gz,解压后会删除1.txt.gz
    gzip -d 1.txt.gz        #功能同gunzip
  • bzip2/bunzip2

    说明:使用方法同gzip/gunzip,默认压缩文件后缀是.bz2
    实例:
    bzip2 1.txt             #压缩1.txt,会生成1.txt.bz2
    bunzip2 1.txt.bz2       #解压1.txt.bz2,解压后保留压缩包需要添加选项'-k'
    bzip2 -d 1.txt.bz2      #功能同zunzip2 
  • tar

    说明:可以打包文件,拆包文件,压缩解压文件,也可以对目录进行操作,后缀是.tar
    选项:
    -c:打包
    -x:拆包
    -t:查看
    说明:上面3个选项不能同时使用
    -f:指定文件
    -v:显示详细信息
    -z:使用gzip/gunzip进行压缩解压操作
    -j:使用bzip2/bunzip2进行压缩解压操作
    -C:指定解压目录
    --exclude:忽略指定文件
    实例:
    tar -cvf 12.tar 1.txt 2.txt         #将1.txt、2.txt打包成12.tar
    tar xvf 12.tar                      #将12.tar拆包
    tar -zcvf 12.tar.gz 12.tar          #使用gzip压缩文件
    tar -jcvf 12.tar.bz2 12.tar         #使用bzip2压缩文件
    tar -zxvf 12.tar.gz *.txt           #使用gzip直接对所有.txt文件进行打包并压缩
    tar -jxvf 12.tar.bz2 *.txt          #使用bzip2直接对所有.txt文件进行打包并压缩
    扩展:
    .tar.gz简写为.tgz
    .tar.bz2简写为.tbz2
  • rar/unrar

    解压:tar -zxvf rarlinux-x64-5.4.0.tar.gz
    进入:cd rar
    安装:make
    实例:
    rar a 12.rar 1.txt 2.txt    #压缩1.txt、2.txt为12.rar
    unrar x 12.rar              #解压12.rar文件

源码安装

  • 基本步骤

    配置:configure
    编译:make
    安装:make install
  • 实例演示(httpd-2.2.34)

    1.解压
    tar -jxvf httpd-2.2.34.tar.bz2
    2.进入
    cd httpd-2.2.34
    3.安装依赖
    yum install -y gcc
    4.配置
    ./configure --prefix=/usr/local/apapche2
    --prefix:指定安装目录
    -h/--help:查看配置帮助
    5.编译
    make
    6.安装
    make install
    7.修改配置文件:PREFIX/conf/httpd.conf   
    1.将ServerName一行开头的#去掉
    2.内容改为:ServerName 域名/IP:80,如:www.test.com,需要域名解析
    3.默认文档根目录在:PREFIX/htdocs
    8.控制服务
    PREFIX/bin/apachectl start|stop|restart
    9.测试
    在浏览器输入www.test.com或者IP
    
    扩展:
    cmd1 ; cmd2 ; cmd3  #顺序执行用分号隔开的命令
    cmd1 || cmd2        #若cmd1执行成功,cmd2就不执行了
    cmd1 && cmd2        #若cmd1执行成功,cmd2才执行  
    如:make && make install
  • 实例演示(httpd-2.4.27)

    1.准备工作,关闭selinux和iptables
    setenforce 0
    service iptables stop
    2.安装编译器
    yum install -y gcc gcc-c++
    3.安装依赖软件(apr、apr-util、pcre)
    tar -jxvf apr-1.6.2.tar.bz2
    cd apr-1.6.2
    ./configure --prefix=/usr/loacal/apr
    make && make install
    
    tar -jxvf apr-util-1.5.4.tar.bz2
    cd apr-util-1.5.4
    ./configure --prefix=/usr/local/par-util
    make && make install
    
    tar -jxvf pcre-8.41.tar.bz2
    cd pcre-8.41
    ./configure --prefix=/usr/local/pcre
    make && make install
    4.安装httpd.2.4.27
    tar -jxvf httpd-2.4.27.tar.bz2
    cd httpd-2.4.27
    ./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
    make && make install
    5.其它与httpd2.2.34就一样了

RPM安装

  • 基本说明

    • 原来是Redhat Pakage Manager的缩写,现在是RPM Pakage Manager的缩写
    • 在linux下大多数软件都有依赖(一个软件需要另一个软件)
    • rpm就是这种软件包的后缀
  • rpm命令

    -i:安装
    -e:卸载
    -v:显示详细信息
    -h:显示安装进度
    -U:升级
    -q:查询
    -qa:查看所有的已安装的包,可以结合grep使用
    -ql:显示安装软件的目录
    -qf:查看文件时哪个软件安装的
  • 实例演示(vim)

    rpm -ivh vim-filesystem-7.4.629-5.el6_8.1.x86_64.rpm
    rpm -ivh vim-common-7.4.629-5.el6_8.1.x86_64.rpm
    rpm -ivh vim-enhanced-7.4.629-5.el6_8.1.x86_64.rpm

YUM安装

  • 基本说明

    1.yum就是一个软件中心,相当于360软件管家,appstore,安卓软件商城
    2.yum是Redhat系列发行版的软件管理方式,debian系列的安装apt-get
    3.yum安装的软件包总得有一个地方进行存放,这个地方叫软件仓库,也叫yum源
    4.yum的配置文件在/etc/yum.repos.d目录下
    5.常见的yum源
    mirrors.163.com
    mirrors.aliyun.com
  • 更改yum源

    1.备份文件
    mv CentOS-Base.repo CentOS-Base.repo.bak 
    2.下载yum配置文件
    wget -c http://mirrors.163.com/.help/CentOS6-Base-163.repo
    3.更改名字
    mv CentOS6-Base-163.repo CentOS-Base.repo
    4.清空缓存信息
    yum clean all
    5.重新生成缓存
    yum makecache
  • yum操作

    格式:yum [选项] 操作
    操作:
    清空缓存:clean all
    生成缓存:makecache
    安装软件:install
    卸载软件:remove
    更细软件:update
    搜索软件:search
    列表显示:list
    安装组件:groupinstall
    卸载组件:groupremove
    选项:
    -y:安装卸载软件时会有提示信息,意思是默认为yes,不会再出现提示信息
    --downloadonly:只下载不安装
    --downloaddir:指定下载文件存放地址
  • 安装桌面环境测试

    yum install -y groupinstall Desktop               #安装桌面环境
    yum install -y groupinstall chinese-support       #安装中文支持
    init 5                                        #运行图形界面模式

重定向

  • 标准输入(stdin)、标准输出(stdout)、标准错误(stderr)

  • 在linux中创建一个进程,系统会自动创建上面三个数据流,即三个文件

  • 三个文件描述符分别为:0、1、2,都指向终端

  • 重定向就是改变原来默认的表现位置

  • 实例演示

    输出重定向:
    ls > 1.txt          #创建新文件,若文件已存在,删除之,再创建
    date >> 1.txt       #追加形式
    错误重定向:
    ls /etc/xx 2>1.txt  #将标准错误重定向到1.txt
    输出和错误:
    ls /etc/ /etc/xxx &> 1.txt  #将标准输出和错误同时重定向
    输入重定向:极少用到
    cat > 2.txt     #默认cat从终端输入内容,程序会等待从终端输入,ctrl + d 结束输入
    cat > 2.txt < 1.txt #将cat的输入从终端重定向到1.txt

文件传输共享

秘钥

  • 说明:秘钥就是一个参数,就是在明文和密文之间转换所传递的参数。

  • 分类:

    • 对称秘钥加密:加密和解密使用的秘钥是一样的
    • 非对称秘钥加密:使用不同的秘钥进行加密和解密操作
  • 名词

    • 秘钥:秘密的钥匙
    • 公钥:公开的钥匙
    • 私钥:私有的钥匙
  • 主机信任,在使用ssh协议远程连接另一台计算机是需要输入用户名和密码,添加主机信任就是不需要密码就可远程连接,需要配置秘钥对(公钥和私钥)实现,具体步骤如下:

    
    #主机1 
    
    ssh-keygen        #生成秘钥对,连续回车,默认会在~/.ssh目录下创建id_rsa(私钥)、id_rsa.pub(公钥)
    
    
    #主机2 
    
    创建文件:~/.ssh/authorized_keys
    将主机1的公钥(id_rsa.pub)内容粘贴到该文件中,尽管很长,但是是一行
    
    连接测试:
    在主机1上:ssh root@主机2的IP
    首次连接可能需要一次密码,以后就不再需要了

scp命令

  • 格式:scp 原文件 目标文件

  • 实例

    scp 1.txt 2.txt                           #本地到本地
    scp 1.txt root@10.36.137.9:/root/      #本地到远程
    scp root@10.36.137.9:/root/test.log .  #远程到本地
  • 说明:默认连接远程主机是需要密码的,建立主机信任后即可实现无密码的访问

rsync命令

  • 作用:在本地与本地,本地与远程之间进行数据的同步,备份等操作

  • 使用

    • 安装命令:yum install -y rsync

    • 基本格式:rsync [选项] 源地址 目标地址

    • 基本实例:

    rsync -av root@10.36.137.9:/root/123 .
    rsync -av 123 root@10.36.137.9:/root/
    • 选项说明:
    -a 归档模式,表示以递归方式传输文件,并保持所有属性,等同于-rlptgoD, -a选项后面可以跟一
        个 --no-OPTION 这个表示关闭-rlptgoD中的某一个例如 -a--no-l 等同于-rptgoD
    -r 对子目录以递归模式处理,主要是针对目录来说的,如果单独传一个文件不需要加-r,
        但是传输的是目录必须加-r选项
    -v 打印一些信息出来,比如速率,文件数量等
    -l 保留软链结
    -L 像对待常规文件一样处理软链结,如果是SRC中有软连接文件,则加上该选项后将会把软连接指向
        的目标文件拷贝到DST
    -p 保持文件权限
    -o 保持文件属主信息
    -g 保持文件属组信息
    -D 保持设备文件信息
    -t 保持文件时间信息
    --delete 删除那些DSTSRC没有的文件
    --exclude=PATTERN 指定排除不需要传输的文件,等号后面跟文件名,
        可以是万用字符模式(如*.txt)
    --progress 在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、
        同步的文件传输速度等等
    -u 加上这个选项后将会把DST中比SRC还新的文件排除掉,不会覆盖
    常用的有 -a -v —delete —exclude 
  • 典型应用场景

    同步指定的yum源,备份线上服务器的数据等

Samba服务器

  • 基本说明:

    • Smaba是在linux或unix系统上实现了SMB协议的一个免费软件
    • SMB是一种在局域网之间共享文件或打印机的通讯协议
    • SMB协议由服务器和客户端构成
  • 安装步骤

    • 安装:yum install -y samba samba-client

    • 无密码访问配置:

    vim /etc/samba/smb.conf
    100行左右修改如下:
        security = share
        #security = user
        #passdb backend = tdbsam
    249行左右添加如下:
    [share]                     #共享名称
            browseable = yes    #是否可以浏览
            writable = yes      #是否可写
            public = yes        #是否公开
            path = /share       #共享目录
    • 有密码访问配置:
    添加用户:
    useradd test    #创建用户
    pdbedit -a test #添加用于samba管理的用户,必须是系统中已经存在的用户
    pdbedit -L      #查看samba用户
  • 启动管理

    • 添加到开机启动:chkconfig smb on
    • 启动控制:service smb start|stop|restart
  • windows主机测试

    1.使用快捷操作:win + r
    2.在搜索栏输入:\\服务器IP
    3.根据提示输入samba用户名及密码
    4.能够看到用户家目录就OK了
    5.添加指定目录共享,方法见无密码访问配置

windows共享文件夹给Linux

  • 在windows下创建一个文件夹(tp5),然后共享之

    1.创建文件夹,右键共享
    2.共享设置可以添加everyone用户,给予读写权限
    3.需要关闭密码保护共享文件,否则需要密码
    4.在linux下测试一下:smbclient -L windowsIP
  • 在虚拟机中安装:yum install -y cifs-utils

  • 将windows共享的文件夹挂载到linux指定的目录

    检查共享:smbclient -L 10.36.137.225 [-U Jerry]
    挂载目录:
    mount -t cifs [-o username="Jerry",password=""] //10.36.137.225/tp5 /mnt
    mount.cifs -o username="Jerry",password="" //10.36.137.225/tp5 /mnt
    开机挂载:/etc/fstab
    //10.36.137.225/tp5     /mnt    cifs    defaults,username="Jerry",password=""    0 0

FTP服务器

  • 安装依赖:

    yum install -y gcc openssl-devel perl
  • 下载软件:


    wget -c https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.46.tar.bz2

  • 解压文件:

    tar -jxvf pure-ftpd-1.0.46.tar.bz2
  • 进入目录

    cd pure-ftpd-1.0.46
  • 配置

    ./configure --prefix=/usr/local/pureftpd --without-inetd --with-altlog --with-puredb --with-throttling --with-tls
  • 编译安装

    make && make install
  • 添加用户管理

    useradd jiege             #创建用户jiege
    mkdir /jiege              #创建共享目录
    chown -R jiege:jiege /jiege    #将jiege目录权限设置为jiege用户jiege组
    cd /usr/local/pureftpd/       #进入安装目录
    ./bin/pure-pw useradd ftp_huayong -u jiege -d /jiege  #添加用户
    ftp_huayong     #ftp登录用户名
    -u:实际访问时的用户权限
    -d:指定共享的目录
    需要设置登录密码:123456
  • 创建虚拟的用户数据库

    ./bin/pure-pw mkdb
  • 修改配置文件:/usr/local/pureftpd/etc/pure-ftpd.conf

    PureDB                        /usr/local/pureftpd/etc/pureftpd.pdb
    PIDFile                      /var/run/pure-ftpd.pid
  • 启动FTP服务

    ./sbin/pure-ftpd ./etc/pure-ftpd.conf
    查询端口号:netstat -tunpl

NFS服务器

  • 基本说明

    • network file system,网络文件系统,采用的是RPC协议
    • RPC是远程过程调用协议
    • 也是客户端服务器的结构
  • 安装步骤:yum install -y nfs-utils

  • 在NFS服务器上修改配置文件:/etc/exports

    打开:vim /etc/exports
    添加:/jiege 10.36.137.0/24(rw,sync,no_root_squash)
    
    权限介绍:
    rw :读写;
    ro :只读;
    sync :同步模式,内存中数据时时写入磁盘;
    async :不同步,把内存中数据定期写入磁盘中;
    no_root_squash :加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,
                就像是对本机的目录操作一样。不安全,不建议使用;
    root_squash:和上面的选项对应,root用户对共享目录的权限不高,
            只有普通用户的权限,即限制了root;
    all_squash:不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;
    anonuid/anongid :要和root_squash 以及all_squash一同使用,
        用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid。
    
    介绍了上面的相关的权限选项后,再来分析一下刚刚配置的那个/etc/exports文件。其中要共享的目录为/home,信任的主机为192.168.137.0/24这个网段,权限为读写,同步,限定所有使用者,并且限定的uid和gid都为501
  • 启动服务

    service rpcbind start
    service nfs start
    
    若在启动服务后再次修改共享配置文件:/etc/exports
    可以重启服务,也可使用命令使1其立即生效:exportfs -arv
  • 客户端测试

    需要安装:nfs_utils
    检查共享目录:showmount -e 10.36.137.227
    挂载目录:mount -t nfs 10.36.137.227:/jiege /mnt/usb
    开机挂载:10.36.137.227:/jiege /mnt/usb nfs defaults,nolock  0  0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值