马哥运维学习笔记(一)
系统版本:
ISO:CentOS-7-x86_64-Everything-1511
(安装时选择的语言是中文版,支持的还不错,看帮助信息很方便)
1
2
|
CentOS Linux release 7.2.1511 (Core) |
查看SSH端口:
1
2
3
4
5
6
|
[[email protected] ~]$ ss -tnl #查看SSH端口,可以看到是默认的22
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::* |
添加DNS:(IP地址设置略)
注:官方建议在/etc/sysconfig/network下设置DNS
1
2
3
4
|
[[email protected] ~] # vi /etc/sysconfig/network #根据当地运营商,添加填写DNS1、DNS2
# Created by anaconda DNS1=114.114.114.114 DNS2=202.106.0.20 |
查看IP地址:
描述:由于C7.2是最小化安装,无法使用在C5或C6上常用的ifconfig命令,可以使用ip addr list命令来查看,如果要使用ifocnfig,需要安装net-tools这个工具包。
1
2
3
4
|
[[email protected] ~]$ ifconfig - bash : ifconfig : 未找到命令
inet 10.3.20.71 /24 brd 10.3.20.255 scope global eno16777736
|
安装net-tools工具包,来使用ifconfig命令
1
2
3
4
5
6
7
|
[[email protected] ~] # yum -y install net-tools #切换到root下,安装工具包
....... Running transaction 正在安装 : net-tools-2.0-0.17.20131004git.el7.x86_64 1 /1 验证中 : net-tools-2.0-0.17.20131004git.el7.x86_64 1 /1 已安装: net-tools.x86_64 0:2.0-0.17.20131004git.el7
|
使用ifconfig查看IP
[[email protected] ~]$ ifconfig | grep 'inet 10.3'
inet 10.3.20.71 netmask 255.255.255.0 broadcast 10.3.20.255
防火墙:
查看规则:
1
2
3
4
5
6
7
8
9
|
[[email protected] ~] # iptables -L -n #使用此命令查看规则
Chain INPUT (policy ACCEPT) target prot opt source destination
ACCEPT all -- 0.0.0.0 /0 0.0.0.0 /0 ctstate RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0 /0 0.0.0.0 /0 INPUT_direct all -- 0.0.0.0 /0 0.0.0.0 /0 INPUT_ZONES_SOURCE all -- 0.0.0.0 /0 0.0.0.0 /0 INPUT_ZONES all -- 0.0.0.0 /0 0.0.0.0 /0 .................略 |
清除规则:(只对当前有效)---一般不这么用
1
|
[[email protected] ~] # iptables -F
|
关掉:(只对当前有效)
1
2
3
4
5
6
7
8
|
[[email protected] ~] # systemctl stop firewalld.service
[[email protected] ~] # iptables -L -n
Chain INPUT (policy ACCEPT) target prot opt source destination
Chain FORWARD (policy ACCEPT) target prot opt source destination
Chain OUTPUT (policy ACCEPT) target prot opt source destination
|
永久关掉:(这条常用)
1
2
3
4
5
|
[[email protected] ~] # systemctl disable firewalld.service
Removed symlink /etc/systemd/system/dbus-org .fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic .target.wants /firewalld .service.
[[email protected] ~] # systemctl disable firewalld.service
[[email protected] ~] #
|
Centos 6关掉防火墙:
1
2
|
~] #service iptables stop
~] #chkconfig iptables off
|
终端设备:terminal
描述:多任务、多用户
物理终端,控制台:console
虚拟终端:6个 tty
ctrl+alt+F[1-6]
图形终端:
CentOS 6:
CentOS 7:
在哪个虚拟终端启动,即位于哪个虚拟终端
串行终端:ttys
伪终端:pty
Linux的哲学思想之一:一切皆文件:
表现之一:硬件设备也通过文件表示:
物理终端:/dev/console
虚拟终端:/dev/tty#[1,6]
串行终端:/dev/ttyS#
伪终端:/dev/pts/#
示例:
在SecureCRT上查看,克隆多个会话,tty查看显示的结果,显示是伪终端/dev/pts/0、1、2
[[email protected] ~]$ tty
/dev/pts/0
[[email protected] ~]# tty
/dev/pts/1
[[email protected] ~]# tty
/dev/pts/2
在VMware上按ctrl+alt+F2,显示为串行终端tty2
查看接口程序:
1
2
|
[[email protected] ~] # echo $SHELL
/bin/bash |
启动GUI:(此命令没有实验)
在某一虚拟终端接口运行命令:startx &
Linux命令帮助的获取:
内部命令帮助:
# help COMMAND
使用type cd得知是内嵌命令,如需获取帮助,使用help cd,就能得到cd大体的使用格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[[email protected] ~] # type cd #得知cd是内嵌命令
cd 是 shell 内嵌
[[email protected] ~] # help cd #使用help cd获取帮助
cd : cd [-L|[-P [-e]]] [ dir ]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the
HOME shell variable.
The variable CDPATH defines the search path for the directory containing
DIR. Alternative directory names in CDPATH are separated by a colon (:).
A null directory name is the same as the current directory. If DIR begins
with a slash (/), then CDPATH is not used.
........略
|
help也是内嵌命令,来查看它的帮助
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[[email protected] ~] # type help
help 是 shell 内嵌 [[email protected] ~] # help help #中括号是可省略的
help: help [-dms] [模式 ...] 显示内嵌命令的相关信息。
显示内嵌命令的简略信息。如果指定了 PATTERN 模式,
给出所有匹配 PATTERN 模式的命令的详细帮助,否则打
印一个帮助主题列表
选项:
-d 输出每个主题的简短描述
-m 以伪 man 手册的格式显示使用方法
-s 为每一个匹配 PATTERN 模式的主题仅显示一个用法
简介
参数:
PATTERN Pattern 模式指定一个帮助主题
退出状态:
返回成功,除非 PATTERN 模式没有找到或者使用了无效选项。
|
shell程序搜寻可执行程序文件的路径定义在PATH环境变量中,如下:
1
2
|
[[email protected] ~] # echo $PATH
/usr/local/sbin : /usr/local/bin : /usr/sbin : /usr/bin : /root/bin
|
(根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名,如果在第一个里找到,就不会在往下找了)
hash命令(哈希):
每次运行命令都要找一遍,每个路径下都有很多的命令,这样效率会很低,通常只有第一次运行命令它才会找从左到右找一次,找到会,放到缓存中,这个缓存就是内存中的一段空间(shell搜索到的外部命令的路径结果会缓存至kv(key-value)存储中),这个kv存储可以在hash中查看,如下:
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
|
[[email protected] ~] # hash #第一次输入,表为空
hash : 哈希表为空
[[email protected] ~] # ls #输入ls第一次
anaconda-ks.cfg [[email protected] ~] # hash #hash中,命中(hits)了一次ls命令
命中 命令 1 /usr/bin/ls [[email protected] ~] # ls #输入ls第二次
anaconda-ks.cfg [[email protected] ~] # hash #hash中,命中次数又加了一次,现在数值为2
命中 命令 2 /usr/bin/ls
[[email protected] /] # cat /etc/fstab #执行cat命令
[[email protected] /] # hash #hash中出现了1次cat
命中 命令 1 /usr/bin/cat
2 /usr/bin/ls
[[email protected] /] # type hash
hash 是 shell 内嵌
[[email protected] /] # help hash
hash : hash [-lr] [-p 路径名] [-dt] [名称 ...]
记住或显示程序位置。
确定并记住每一个给定 NAME 名称的命令的完整路径。如果
不提供参数,则显示已经记住的命令的信息。
选项:
-d 忘记每一个已经记住的命令的位置
-l 以可作为输入重用的格式显示
-p pathname 使用 pathname 路径作为 NAME 命令的全路径
-r 忘记所有记住的位置
-t 打印记住的每一个 NAME 名称的位置,如果指定了多个
NAME 名称,则每个位置前面会加上相应的 NAME 名称
参数:
NAME 每个 NAME 名称会在 $PATH 路径变量中被搜索,并
且添加到记住的命令的列表中。
退出状态:
返回成功,除非 NAME 命令没有找到或者使用了无效的选项。
|
如果此时把ls从/bin/ls 移动到 /usr/bin/ls下(此试验换了一台主机名相同的测试机)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[[email protected] ~] # ls #使用ls命令
anaconda-ks.cfg install .log install .log.syslog
[[email protected] ~] # hash #hash中ls命中为1
hits command
1 /bin/ls
[[email protected] ~] # which ls #使用which查找ls所在位置
alias ls = 'ls --color=auto'
/bin/ls
[[email protected] ~] # echo $PATH
/usr/local/sbin : /usr/local/bin : /sbin : /bin : /usr/sbin : /usr/bin : /root/bin
[[email protected] ~] # mv /bin/ls /usr/bin/ls #把ls放在/usr/bin/下
[[email protected] ~] # ls #再次执行ls,提示找不到目录
- bash : /bin/ls : No such file or directory
[[email protected] ~] # hash -r #按照上面的hash帮助,输入-r清除记录
[[email protected] ~] # ls #输入ls,它又开始从左到右,直到找到ls
anaconda-ks.cfg install .log install .log.syslog
|