Linux学习笔记-3

1. 系统服务管理

  1. 检查本机httpd服务是否开启, 使用命令service httpd status
  2. 开启/关闭/重启 httpd服务 service httpd start/stop/restart
  3. 查看所有的服务状态 service --status-all
  4. 过滤出某个服务service –status-all | grep httpd`
  5. 防火墙服务 sevice iptables status/stop/start/restart

配置后台服务进程开机自启

1
2
3
4
5
# 开启开机自启http进程
-> chkconfig httpd on
# 查看httpd的开机自启状态
-> chkconfig --list | grep httpd
httpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

缺省系统运行级别

  • 0 为停机,机器关闭。
  • 1 为单用户模式,就像Win9x下的安全模式类似。
  • 2 为多用户模式,但是没有NFS支持。
  • 3 为完整的多用户模式,是标准的运行级。
  • 4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本 电脑的电池用尽时,可以切换到这个模式来做一些设置。
  • 5 就是X11,进到X Window系统了。
  • 6 为重启,运行init 6机器就会重启。

Centos中时区

  • 当前正在使用的时d区文件位于 /etc/localtime

  • 其他时区文件则位于 /usr/share/zoneinfo

  • 中国时区使用 /usr/share/zoneinfo/Asia/Shanghai

  • 更改时区 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  • 如果没有 Asia/Shanghai 时区文件,请使用tzselect命令去生成时区文件,生成好的时区文件就在 /usr/share/zoneinfo目录下

修改系统时间

  • date : 直接查看时间
  • date -s : 手动设置时间
  • sudo ntpdate ntp1.aliyun.com : 同步时间服务器时间

2. 简单磁盘管理

  • df:列出文件系统的整体磁盘使用量

    • -h 人性化的列出文件的大小等

      1
      2
      3
      -> # df -h /dev/sr0
      Filesystem Size Used Avail Use% Mounted on
      /dev/sr0 3.7G 3.7G 0 100% /media/cdrom
  • du:检查磁盘空间使用量

  • fdisk:用于磁盘分区

3. 文件的基本属性

前缀的含义

1
2
3
4
5
6
7
# 查看目录的权限
-> # ll -d /var/www/html/localyum
ls -ld 也是一样, 查看目录的权限

drwxr-xr-x. 7 root root 4096 5月 25 07:50 autojump
-rw-r--r--. 1 root root 50434 5月 23 10:11 install.log
lrwxrwxrwx. 1 root root 13 5月 25 21:04 localyum -> /media/cdrom/
  • 当为[ d ]则是目录
  • 当为[ - ]则是文件;
  • 若是[ l ]则表示为链接文档(link file);
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置);

r、w、x 对于文件和目录的含义

权限 对文件的含义 对目录的含义
r 读权限 可以查看文件内容 可以列出目录中的内容
w 写权限 可以修改文件内容 可以再目录中创建、删除文件
x 执行权限 可以执行文件 可以进入目录

4. 软件安装 TODO

1. 二进制发布包安装 TODO:

软件已经针对具体平台编译打包发布,只要解压,修改配置即可

安装jdk , 安装tomcat也一样 TODO:

  1. 通过 ftp工具把 jdk传到 linux服务器
  2. 创建一个 /var/www/html/soft/jdk8 的软链接, 指向服务器中的安装包 —— 这一步失败了, 先搁置把, 先copy过去.
2. 源码编译安装 TODO:

软件以源码工程的形式发布,需要获取到源码工程后用相应开发工具进行编译打包部署

安装/卸载 redis

卸载:

  1. 首先查看redis-server是否启动

    ps aux | grep redis

  2. 有的话, 关闭这些进程

    kill -9 进程pid

  3. 删除redis相应的文件夹就可以了。

    find / -name redis

安装:

  1. 拷贝到/usr/local, 解压, 删掉原安装包

    1
    2
    tar -zxvf redis-3.0.0.tar.gz 
    rm redis-3.0.0.tar.gz
  2. 检查运行环境

    1
    2
    3
    # 检测一下是否可以安装
    make
    make test
  3. 安装到指定目录

    1
    make PREFIX=/root/apps/redis install
  4. 拷贝配置信息

    1
    cp /usr/local/redis-3.0.0/redis.conf  /usr/local/redis/bin
  5. 启动

    1. 前端模式 bin/redis-server

    2. 后端模式启动

      修改redis.conf配置文件,daemonize yes` 以后端模式启动

  6. : TODO

3. RPM发布包

软件已经按照RedHat(Redhat Package Manager)的包管理工具规范RPM进行打包发布,需要获取到相应的软件RPM发布包,然后用rpm命令进行安装

Mysql安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# rpm安装命令
1、安装包:rpm -ivh 包名
参数:
-i :安装的意思
-v :可视化
-h :显示安装进度
另外在安装一个rpm包时常用的附带参数有:
--force 强制安装,即使覆盖属于其他包的文件也要安装
--nodeps 当要安装的rpm包依赖其他包时,即使其他包没有安装,也要安装这个包

2、升级包:rpm -Uvh filename
-U 升级

3、卸载包rpm -e filename (这里的filename是通过rpm的查询功能所查询到的)

4、查询一个包是否安装:rpm -q 包名(这里的包名,是不带有平台信息以及后缀名的)

5.查询当前安装的所有rpm包:rpm -qa
查询当前安装的和sql相关的包:rpm -qa | grep 'sql'
查询sqlite安装路径:rpm -ql sqlite

5. 设置本地/网络yum源

  1. 首先检查虚拟机的 CD/DVD驱动器是否有挂载iso镜像文件

  2. 找到挂载源的位置 在 /dev/sr0下, 将其挂载到/mnt下创建的cdrom文件夹下

    mount -t iso9660 -o ro /dev/sr0 /media/cdrom

  3. 配置开机挂载 , vi /etc/fstab, 增加一行

    /dev/cdrom /media/cdrom iso9660 defaults 0 0

  4. 创建软连接, 设置可以通过web访问

    ln -s /mnt/cdrom/ /var/www/html/yumsorurce

  5. 修改etc/yum.repos.d中的文件entOS-Media.repo中的enabled=1, 开启从本地寻找, 因为文件中, 原本就配置了baseurl: file:///media/cdrom/, 而我们自己创建了media/cdrom这个目录, 所以就可以从这里面读取了

  6. 执行yum repolist, 发现已经能读取出media中的repo了, 大功告成

    c6-media CentOS-6 - Media 6,575

  7. tips: 个人觉得还是配置个网络源比较好, 比如163/阿里的.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # 操作步骤
    # 1.备份原来的Base源
    cd /etc/yum.repos.d/
    mv CentOS-Base.repo CentOS-Base.repo_bak

    # 2. 下载网易/阿里源 到/etc/yum.repos.d下, 替换掉原本的
    # 网易源
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
    # 阿里源
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

    yum clean all
    yum makecache

    # yum使用
    yum update 􏻦􏻧􏷉􏷊升级系统
    yum install -y xxx 直接安装, 不用确认
    􏻈yum update ~ 􏻦􏻧􏸻􏹺􏷜 升级指定软件包
    yum remove ~ 􏺌􏷎􏸻􏹺􏷜􏷕 卸载指定软件
  8. 挂载, 配置源的其他说明

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    # 关于挂载
    # lrwxrwxrwx. 1 root root 3 5月 25 16:47 cdrom -> sr0
    cdrom其实是sr0的软链接, 因此直接找sr0即可

    # 挂载的基本语法
    mont -t iso9660 -o ro(只读) /dev/sr0 /mnt/cdrom
    (挂载类型) (挂载方式) (挂载源) (挂载点)

    # 卸载的语法
    umount /mnt/cdrom

    如果卸载时遇到 umount: /mnt/cdrom: device is busy.
    解决方式:
    1. 查找哪个进程在用: fuser /mnt/cdrom
    2. 查找进程: ps -ef | grep 进程号
    3. 插死进程: kill -9 进程号, 如果是root用户, 可能会断开连接, 需要重连
    4. 然后继续 umount, 如果不行, 就强制卸载 umount -f /mnt/cdrom

    # 关于etc/yum.repos.d 中文件的说明
    CentOS-Base.repo:有网的环境下默认使用这个,这个是第一优先级。因为没网,所以修改文件名,设置成备份文件。这样系统就会使用第二优先级的文件。
    CentOS-Media.repo:没网的环境下使用这个,在上图中会发现他默认配置了4个路径,第4个yumsource是我自己加的。意思是说,如果系统检测yum使用了离线安装,那么会从上到下从这4个路径中查找安装软件。所以我们只要把光盘挂载在这四个目录下的任意一个目录即可。同时,该配置文件默认是不启用的,如果想使用需要修改倒数第二行的enabled为1,否则该文件无效。

    # /mnt & /media 目录的区别
    media:挂载一些移动设备,例如光盘,U盘等。
    mnt: 挂载一些硬盘等设备。所以我们的光盘应该挂载在media目录下,从yum给的默认配置文件也能看出。

6. 进程相关

1. ps命令

ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。

常用选项包括:

1
2
3
4
5
6
ps -
1、-a显示所有用户的进程
2、-u显示用户名和启动时间
3、-x显示所有进程,包括没有控制终端的进程
4、-e显示所有进程,包括没有控制终端的进程,较x选项,信息更为简略
5、-l显示进程详细信息,按长格式显示

常用组合

ps -au 显示所有用户进程,并给出用户名和启动时间等详细信息
ps -aux 显示所有用户进程,包括没有控制终端的进程,并给出用户和和启动埋单等详细信息
ps -el 按长格式显示进程详细信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 上述命令可能出现的字段含义
USER: 进程所有者
PID: 进程号
PPID: 进程的父进程ID
%CPU: CPU占用率
C: 进程的CPU占用率
%MEM: 内存占用率
VSZ: 表示如果一个程序完全驻留在内存的话需要占用多少内存空间;
RSS: 指明了当前实际占用了多少内存;
TTY: 终端的次要装置号码 (minor device number of tty)
F:进程的标志
S:进程的状态
STAT: 该进程程的状态,有以下值
D: 不可中断的静止
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的进程
N: 低优先序的进程
L: 有记忆体分页分配并锁在记忆体内
PRI:进程的优先权
NI:进程的Nice值
ADDR:进程的地址空间
SZ:进程占用内存的大小
WCHAN:进程当前是否在运行
TTY:进程所属终端
START: 进程开始时间
TIME: 执行的运行时间
COMMAND:所执行的指令
CMD:进程的命令
2. kill / pidof / pkill 命令

有时候某个进程可能会长期占用CPU资源或无法正常执行或超出运行时间等,此时可能希望人工干预直接将进程杀死,这时候kill命令可以派上用场

1
2
3
4
1、kill pid 直接杀死进程,但不能保证一定能杀死
2、kill -9 pid 强制杀死进程
3、pidof命令用于查看某个进程的进程号(例如:pidof mysqld)
4、pkill命令可以按照进程名杀死进程。pkill和killall应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill来杀掉
3. 进程切换

前台进程指的是进程在执行时会将命令行阻塞,直到进程执行完毕;后台进程指的是进程在执行时不会阻塞当前命令行,而是在系统后台执行

1
2
3
4
5
1、ctrl + c 终止进程
2、ctrl + z 挂起进程
3、fg命令将进程转换到前台执行
4、bg命令将进程转换到后台执行
5、jobs命令查看任务
4. top命令

top 命令可以定期显示所有正在运行和实际运行并且更新到列表中,它显示出 CPU 的使用、内存的使用、交换内存、缓存大小、缓冲区大小、过程控制、用户和更多命令。它也会显示内存和 CPU 使用率过高的正在运行的进程。

按q键退出查看.

5. pstree命令

将进程间的关系以树结构的形式展示,能清楚看各进程之间的父子关系

1
2
pstree :以树状形式显示进程
pstree -p : 以树状形式显示进程,并且显示进程号
6. JPS命令

JPS命令是JDK提供的一个检查系统是否启动了JVM进程的一个进程。不是linux系统自带的。主要任务就是用来检查java进程的。

7. 计划任务

概念

计划任务在Linux的体现主要分为at和crontab,其中:

  • at:通过at命令安排任务在某一时刻执行一次
  • crontab:通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。
命令服务管理crontab

在CentOS系统上,crontab服务的名称叫做crond

  1. 安装

    yum -y install crontabs

  2. 服务操作说明

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    service crond start 	#启动服务
    service crond stop #关闭服务
    service crond restart #重启服务
    service crond reload #重新载入配置
    service crond status #服务状态

    #查看crontab服务是否已设置为开机启动,执行命令:
    chkconfig --list

    #加入开机自动启动:
    chkconfig --level 35 crond on
crontab功能使用
  • 命令格式

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    crontab [-u user] file
    crontab [-u user] [ -e | -l | -r ]

    # crontab 参数说明:
    -u user:用来设定某个用户的crontab服务,例如,”-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
    file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。
    -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
    -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
    -r:删除定时任务配置,从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
    -i:在删除用户的crontab文件时给确认提示。

    # 命令示例:
    crontab file [-u user] ## 用指定的文件替代目前的crontab。

    # 必须掌握:
    crontab -l [-u user] ## 列出用户目前的crontab.
    crontab -e [-u user] ## 编辑用户目前的crontab.

    # 通过crontab添加的计划任务都会存储在/var/spool/cron/目录里

    # 查看当前服务状态
    service crond status
    # 操作服务
    /sbin/service crond start //启动服务
    /sbin/service crond stop //关闭服务
    /sbin/service crond restart //重启服务
    /sbin/service crond reload //重新载入配置

    # 查看开机启动服务
    ntsysv # 退出时, 按tab切换

    # 加入开机自动启动
    chkconfig –level 35 crond on
  • 配置说明

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # 基本格式 : 
    *  *  *  *  *  command
    分  时  日  月  周  命令

    # 每个小时的第几分钟执行该任务. 其它的类似
    第1列表示分钟1~59 每分钟用*或者 */1表示

    第2列表示小时0~23(0表示0点) 7-9表示:8点到10点之间
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)
    第6列要运行的命令

    # 记住几个特殊符号的含义:
    “*”代表取值范围内的数字,
    “/”代表”每”,
    “-”代表从某个数字到某个数字,
    “,”分开几个离散的数字
  • 配置示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    # *  *  *  *  *  command 
    # 分  时  日  月  周  命令

    */1 * * * * date >> /root/date.txt
    上面的例子表示每分钟执行一次date命令
    可用 tail -f查看

    30 21 * * * /usr/local/etc/rc.d/httpd restart
    上面的例子表示每晚的21:30重启apache

    45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart
    上面的例子表示每月1、10、22日的4 : 45重启apache

    10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart
    上面的例子表示每周六、周日的1 : 10重启apache

    0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart
    上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache

    0 23 * * 6 /usr/local/etc/rc.d/httpd restart
    上面的例子表示每星期六的11 : 00 pm重启apache

    * */1 * * * /usr/local/etc/rc.d/httpd restart
    上面的例子每一小时重启apache

    * 23-7/1 * * * /usr/local/etc/rc.d/httpd restart
    上面的例子晚上11点到早上7点之间,每隔一小时重启apache

    0 11 4 * mon-wed /usr/local/etc/rc.d/httpd restart
    上面的例子每月的4号与每周一到周三的11点重启apache

    0 4 1 jan * /usr/local/etc/rc.d/httpd restart
    上面的例子一月一号的4点重启apache
  • 更详细的见这里

8. Linux虚拟主机集群测试环境基本搭建

注意点: 首次使用 NAT 模式装好CentOS之后, 使用ifconfig查看ip, 虚拟机是没有ip的, 需要手动开启ip服务, 命令是 dhclient, 如果已开启就不能再次开启

1. 第一台虚拟主机的静态ip配置(针对于mac环境)

  1. 执行ifconfig命令, 如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    shixuanji@x:~|⇒  ifconfig
    lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
    inet 127.0.0.1 netmask 0xff000000
    inet6 ::1 prefixlen 128
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
    nd6 options=201<PERFORMNUD,DAD>
    gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
    stf0: flags=0<> mtu 1280
    EHC29: flags=0<> mtu 0
    EHC26: flags=0<> mtu 0
    XHC20: flags=0<> mtu 0
    en0: flags=8823<UP,BROADCAST,SMART,SIMPLEX,MULTICAST> mtu 1500
    ether 60:03:08:a1:ac:ee
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect (<unknown type>)
    status: inactive
    p2p0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 2304
    ether 02:03:08:a1:ac:ee
    media: autoselect
    status: inactive
    awdl0: flags=8902<BROADCAST,PROMISC,SIMPLEX,MULTICAST> mtu 1484
    ether 72:25:b2:c8:2a:03
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: inactive
    en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=60<TSO4,TSO6>
    ether 32:00:1a:0d:12:00
    media: autoselect <full-duplex>
    status: inactive
    en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=60<TSO4,TSO6>
    ether 32:00:1a:0d:12:01
    media: autoselect <full-duplex>
    status: inactive
    bridge0: flags=8822<BROADCAST,SMART,SIMPLEX,MULTICAST> mtu 1500
    options=63<RXCSUM,TXCSUM,TSO4,TSO6>
    ether 32:00:1a:0d:12:00
    Configuration:
    id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
    maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
    root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
    ipfilter disabled flags 0x2
    member: en1 flags=3<LEARNING,DISCOVER>
    ifmaxaddr 0 port 10 priority 0 path cost 0
    member: en2 flags=3<LEARNING,DISCOVER>
    ifmaxaddr 0 port 11 priority 0 path cost 0
    media: <unknown type>
    status: inactive
    utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
    inet6 fe80::2ed8:c28:27b2:f5d2%utun0 prefixlen 64 scopeid 0xd
    nd6 options=201<PERFORMNUD,DAD>
    vmnet1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 00:50:56:c0:00:01
    inet 172.16.63.1 netmask 0xffffff00 broadcast 172.16.63.255
    vmnet8: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 00:50:56:c0:00:08
    inet 192.168.170.1 netmask 0xffffff00 broadcast 192.168.170.255
    en4: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=3<RXCSUM,TXCSUM>
    ether 00:0e:c6:cc:ae:d7
    inet6 fe80::1c60:7fe2:3947:4ec0%en4 prefixlen 64 secured scopeid 0x11
    inet 192.168.63.148 netmask 0xffffff00 broadcast 192.168.63.255
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect (100baseTX <full-duplex,flow-control>)
    status: active
  2. 找到最后的vmnet8, 其中的 inet 就是虚拟主机的网段, 配置虚拟主机的静态ip的时候, 就配置此网段内的. 广播地址 broadcast也是虚拟主机NAT的广播地址, 配置时可以不填

    1
    2
    3
    vmnet8: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 00:50:56:c0:00:08
    inet 192.168.170.1 netmask 0xffffff00 broadcast 192.168.170.255
  3. 修改虚拟机网卡配置vi /etc/sysconfig/network-scripts/ifcfg-eth0, 做如下配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DEVICE=eth0
    HWADDR=00:0C:29:D6:C7:0E
    TYPE=Ethernet
    UUID=bebc1b63-4f20-405a-860a-32d0d8211582
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=static # ip类型
    IPADDR=192.168.170.6 # ip地址, 与 vmnet8 在同一网段
    NETMASK=255.255.255.0 # 子网掩码
    GATEWAY=192.168.170.2 # 网关, 跟 ip在同一网段
    DNS1=192.168.170.2 # 与 ip 同一网段
    DNS2=8.8.8.8 # google的 dns
  4. 重启网络服务(这里重启也没啥用,等后面hostname改完了,重启一下)

    service network restart

2. 复制原本的虚拟主机

  1. 复制虚拟主机1到2
  2. 按照原虚拟主机的root用户名&密码登录2

    3. 修改新机网卡

  3. 修改网卡vi /etc/udev/rules.d/70-persistent-net.rules, 删除eth0所在的整个段落, 把下面的eth1改为eth0, 保存退出

  4. 修改网卡配置vi /etc/sysconfig/network-scripts/ifcfg-eth0, 如果有UUID, HARDDR, 删掉, IPADDR改为与原虚拟主机不同的地址, 但要在同一网段, BOOTPROTO改为static

    4. 修改新机hostname

    修改***hostname***,  `vi /etc/sysconfig/network`, 把`HOSTNAME`改为要修改的名字
    

5.到这里配置完了,重启一下

reboot

6. SSH免密登录

原理

image-20180609100335477

注意点:

如果遇到需要添加新机器之类的,最好是先把 .ssh文件删掉,然后所有的机器一起操作看,全部都重新生成ssh-keygen, 全部重新发送 ssh-copy-id ,这样最简单,不易出错

在mac端,传ssh-copy-id时候,要制定用户名 ssh-copy-id ap@cs1;类似这样

  1. 新机生成自己公钥 ssh-keygen, 注意: 如果原本主机中已经生成, 此处在提示verwrite (y/n)?的时候要选择y, 才会重新生成覆盖
  2. 把新主机公钥发送给其它机器 ssh-copy-id root@xxx(其它主机ip), 此命令相当于 下面2条命令的效果

    1
    2
    cat id_rsa.pub > authorized_keys
    scp -r authorized_keys root@192.168.123.202:/root/.ssh/
  3. 其他主机也把公钥发给新主机, 此时就可以实现主机间的免密登录了.

7. 功能增强(可选)

  1. 可以在 每台机器中设置host别名, vi /etc/hosts, 加上xxx.xxx.xx.xxx cts1/2/3..., 这样在访问其他主机时, 可以直接用别名替代域名
  2. 如果是用的zshshell, 可以在所有主机的 <sub>.zshrc中, 添加alias login1='ssh root@cts1' >> </sub>/.zshrc, 这样可以直接 用 login1登录到对应的主机.

9. 安装, 使用 zsh & oh-my-zsh &相关插件

主骨架安装&介绍

  1. 安装zsh套件

    1
    yum install zsh -y
  2. 安装 oh-my-zsh套件

    1
    sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
  3. zsh 的一些基本配置操作, 常用插件安装见这里!

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    # 查看oh-my-zsh 的主题
    ls ~/.oh-my-zsh/themes

    ------#这里都是 .zshrc中的配置------
    # 可以更改为random, 这样会随机显示, 很有乐趣, 直接输入zsh也会切换
    vi ~/.zshrc
    ZSH_THEME="random"

    # 添加plugin, 按照对应方式安装
    plugins=(git ... ... )

    # 添加alias 到 ~/.zshrc
    alias vi='vim'
    alias zshconfig='vi ~/.zshrc'
    alias vimconfig='vi ~/.vimrc'

    -----------------------
    # 设置当前用户使用zsh为默认的shell
    chsh -s /bin/zsh

    # 卸载 oh-my-zsh
    uninstall_oh_my_zsh zsh
  4. zsh 的一些骚气操作

    1
    2
    3
    4
    5
    6
    7
    1. 兼容 bash, 这个就不用说了
    2. 输入某条命令, 比如 cat, 然后用上下键, 可以翻阅所有执行过的命令
    3. 各种补全, 输入任何命令, 按 2下 tab键, 下面会出现所有可能的补全, 可以 tab, 或 上下左右切换.
    4. 比如要杀掉进程java, 原来是需要 ps aux | grep java, 查进程的 PID,然后 kill PID; 现在只需要 kill java, 然后按下 tab, java会被替换为 对应的 PID, 点回车, kill !
    5. 目录浏览和跳转, 输入 d, 可以列出在这个回话中访问过的目录列表, 再输入列表前的序号, 即可直接跳转.
    6. 在当前目录下输入 .. 或 ... , 或者直接输入目录名, 都可以直接跳转, 甚至都不需要使用 cd命令了.
    7. 通配符搜索:ls -l */.sh,可以递归显示当前目录下的 shell 文件,文件少时可以代替 find,文件太多就歇菜了.
  5. zsh主题介绍, zsh插件介绍


zsh常用插件安装

安装 zsh-autosuggestions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
方式1: 
# 下载到本地
git clone git://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions

# 添加到.zshrc, 这样就不用每次source了
添加 source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh 到 .zshrc 尾部
plugins=() 中添加上 zsh-autosuggestions, 用空格隔开即可

======================
方式2: 官方建议
# 少了添加source到 ~/.zshrc这一步, 猜想是会按照默认的路径加载? ==> 是的, 是可行的, 建议这个
# 猜想, oh-my-zsh会自动对安装到 <sub>/.oh-my-zsh/custom}/plugins/ 此路径下的插件source, 就不需要手动在 </sub>/.zshrc中添加source了, 其它的插件就先不折腾了, 以后有机会再试试

# 1.Clone this repository into $ZSH_CUSTOM/plugins (by default ~/.oh-my-zsh/custom/plugins)
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

# 2.Add the plugin to the list of plugins for Oh My Zsh to load:
plugins=(zsh-autosuggestions)

# 3.Start a new terminal session.
安装 autojump
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 下载到本地
git clone git://github.com/joelthelion/autojump.git

# 执行安装脚本
cd autojump
./install.py

# 安装完成在~/下面有.autojump目录, 在.zshrc中加一句
[[ -s <sub>/.autojump/etc/profile.d/autojump.sh ]] && . </sub>/.autojump/etc/profile.d/autojump.sh

# 在plugins=(git zsh-autosuggestions autojump) 加上autojump, 与前者用空格隔开

PS:
添加一条快捷键:j -a s '/Users/XXX/Desktop/code/shark’
这句代码的含义:j -a 你定义的快捷命令 ‘需要跳转的目录位置’
此后要是想进入shark目录,除了传统的cd一级一级的进入,还可以直接使用命令:j s

# 接下来可以愉悦的使用 j 了
安装 zsh-syntax-highlighting
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 到 ~/.zshrc 目录, 克隆仓库
# 这里默认的是主目录, 当然可以下载到其它目录
# ps: 在那个目录, git clone就会下载到哪个目录
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git

# source the script 到 ~/.zshrc
# 这个在哪个目录下echo的, 就会把当前目录拼到前面?? 结果好像是这样
echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc

# 在plugins=(git zsh-autosuggestions autojump zsh-syntax-highlighting) zsh-syntax-highlighting, 与前者用空格隔开
# 其实这里不加好像也没事, 还是加上为好

# 在当前 shell生效
# 看这个文件在哪个目录, 在哪个目录就source 哪个目录, 立即生效
source ./zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

10.CentOS-7的基本使用

1.更改网络

1> 查看网络
$> ip addr

2> $> vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改为:

image-20180812204806140\

3> 把网络连接模式改为NAT

拿到 ip addr 查看到的第二条数据的 ip, 用此网段内的 ip 作为 ipaddr 的地址, gateway 也要同网段

4> 最后执行systemctl network restart

5> 测试: ping www.baidu.com

2.修改 hostname

hostnamectl set-hostname cs7_1

可以再查看 vi /etc/hostname , 会发现, 出现了 cs7_1

3.关闭防火墙

关闭: systemctl stop firewalld

禁止开机启动: systemctl disable firewalld

其它的常用命令见

如果帮到你, 可以给我赞助杯咖啡☕️
0%