(自己的随手笔记,记得有点乱请轻喷)

which:查看某个命令的完整路径
df -h:查看系统磁盘情况
history:查看历史输入的命令

网卡配置路径:vim /etc/sysconfig/network-scripts/ifcfg-eth0

1.systemctl reboot 重启 *
2.shutdown -r now 立刻重启 *
3.shutdown -h now 立刻关机 *
4.systemctl poweroff 关闭系统并切断电源 *
5.systemctl halt 关闭系统CPU停止工作 *
6.systemctl suspend 暂停系统
7.systemctl hibernat 系统进入休眠状态
8.systemctl hybrid-sleep 系统进入交互式休眠状态
9.systemctl rescue 启动进入救援状态

pwd 查看当前目录

cd - 去上一次所在的目录
cd . 去当前目录,表示当前目录
cd .. 去上一级目录。 ..表示上一级目录
cd ~或cd 去当前目录的家目录, ~表示家目录。

公网IP地址:
私网:办公室局域网内使用的地址,不能再互联网上使用(路由器将私网的IP 地址转换为公网)
192.168
172.16
10.0.0

端口的概念:
IP地址:唯一标识一台计算机(身份证) (找谁,去哪里)
端口:不同软件运行的服务用端口区分 (到这里干啥)
是一台计算机里唯一标识服务的数字
我们要访问一台计算机拿到IP地址,找到对应的服务就需要端口。
协议:计算机之间的通信方式(语言),采用相同的协议沟通。 (用什么方式语言干什么)

连接Linux的服务:
SSH服务 Security Shell服务
包括客户端(相当于男人)和服务端(相当于女人) 通过客户端才能连接服务端

[root@oldboyedu ~]# rpm -qa openssh openssl
openssl-1.0.2k-16.el7_6.1.x86_64 #连接和传输过程中加密
openssh-7.4p1-16.el7.x86_64 #SSH服务端软件

服务端运行的SSH的服务:
[root@oldboyedu ~]# ps -ef|grep ssh
root 1457 1 0 11:57 ? 00:00:00 /usr/sbin/sshd -D
root 1995 1457 0 11:59 ? 00:00:00 sshd: root@pts/0
root 7937 1457 0 14:20 ? 00:00:00 sshd: root@pts/1
root 7961 7941 0 14:38 pts/1 00:00:00 grep --color=auto ssh

服务端运行的SSH的服务所用的端口:22 #<==ss -lntup|grep ssh

服务端(女人):软件openssh (提供远程连接) openssl(提供加密)

检查服务信息:
查IP的命令:ip add
查端口:ss -lntup 或 netstat -lntup
查进程:ps -ef|grep ssh

暂停SSH服务:systemctl stop sshd.service
开启SSH服务:systemctl start sshd.service

客户端(男人)有哪些? Xshell、SeurCRT、Putty、SSH

连接不上服务端,出现连接故障:
Connecting to 10.0.0.201:22...
连接故障的解决方法:
1、检查服务端:
网卡、IP是不是启动和正确的:输入命令ip add 或 ifconfig
2、检查端口和进程:
查端口:ss -lntup 或 netstat -lntup
查进程:ps -ef|grep ssh
暂停SSH服务后再开启SSH服务 暂停SSH服务:systemctl stop sshd.service
开启SSH服务:systemctl start sshd.service
3、检查客户端的IP、端口、协议是不是对的(眼睛查)
都是对的,就是连接不上,咋办?
(1)ping 10.0.0.200 检查物理链路能否到达
[root@oldboyedu ~]# ping 10.0.0.200
PING 10.0.0.200 (10.0.0.200) 56(84) bytes of data.
64 bytes from 10.0.0.200: icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from 10.0.0.200: icmp_seq=2 ttl=64 time=0.054 ms
64 bytes from 10.0.0.200: icmp_seq=3 ttl=64 time=0.041 ms
64 bytes from 10.0.0.200: icmp_seq=4 ttl=64 time=0.040 ms
^C
如果不可达:1、连接的IP输入错了
2、物理链路有问题(VM环境调虚拟网络编辑器)
(2)telnet 10.0.0.200 22(连接的端口号)检查对方有没有提供服务,开启服务
[g:\~]$ telnet 10.0.0.200 22


Connecting to 10.0.0.200:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
SSH-2.0-OpenSSH_7.4

如果是连不上的状态:
[g:\~]$ telnet 10.0.0.200 23

Connecting to 10.0.0.200:23...
Could not connect to '10.0.0.200' (port 23): Connection failed.

Type `help' to learn how to use Xshell prompt.
(1)服务端是否开着防火墙(6是iptables,7是firewalld )(2)服务端没有提供服务
检查防火墙是否开着: 开启防火墙:systemctl status firewalld.service
Active:active (running)开着的状态
Active:inactive(dead)关着的状态
关闭防火墙:systemctl stop firewalld.service
开启防火墙:systemctl start firewalld.service
开机不自动启动防火墙:systemctl disable firewalld.service
开机自动启动防火墙:systemctl enable firewalld.service

什么是快照?
作用:可以让时间倒流,操作过的、说过的话 都可以不算数

克隆:
1、链接克隆
2、开机:
nmtui(7)===》图形化更改 set up(6)P81页
systemctl restart network 重启让修改生效
3、复制shell标签 链接

#管理员(皇帝)
$普通用户(大臣)
~家目录:当前位置
@之前的是当前用户名 @之后的是主机名

快捷键:
Tab:补全代码
Ctrl+c:中断终端正在执行的任务
Ctrl+d:退出Shell命令行,关闭Xshell
Ctrl+l:清屏相当于命令:clear
Ctrl+a:光标回到行首
Ctrl+e:光标回到行尾
Ctrl+Insert:复制一行的内容
Shift+Insert:粘贴复制的内容
Ctrl+k:剪切(删除)光标处到行尾的字符
Ctrl+u:剪切(删除)光标处到行首的字符
Ctrl+w:删除光标前的一个单词
Ctrl+y:粘贴Ctrl+k、Ctrl+u、Ctrl+w删除的文本
Ctrl+s:锁定界面,不显示输入的内容
Ctrl+q:解除锁定
Ctrl+r:搜索命令行使用过的历史命令记录
Esc+.(点):获取上一条命令的最后部分(空格分隔)
Ctrl+z:暂停正在执行任务
!!:执行上一条命令
!+命令开头的几个字母:执行最近以字母开头的命令

linux如何查找命令帮助:
1、man:man+ 要查找功能的命令(列:man ls)男人,查找命令的功能 参数 等等帮助信息的工具
2、查内置命令:--help :命令+ --help(例:cp --help)
[root@oldboyedu ~]# LANG="zh_CN.UTF-8" 《======查看汉语帮助(只试用于--help命令)
3、搜索引擎输入:linux+要搜索的命令

普通命令和内置命令的区别
普通命令是在系统中存在的命令
内置命令在系统中不存在文件,存在于bash解释器里
特殊性:7有些命令也存在文件了。cd,read
man命令找不到,就用help命令
man cd就可以找到所有内置命令

info cp(查命令的相关信息,几乎用不着)

reboot、shutdown重启
halt、poweroff关机
systemctl reboot 重启 *
shutdown -r now 立刻重启 *
shutdown -h now 立刻关机 *
systemctl poweroff 关闭系统并切断电源 *
systemctl halt 关闭系统CPU停止工作 *
systemctl suspend 暂停系统
systemctl hibernat 系统进入休眠状态
systemctl hybrid-sleep 系统进入交互式休眠状态
systemctl rescue 启动进入救援状态

Linux语法:
命令 [参数选项] [文件或路径] (“[]”里面的东西可有可无)
例:rm -f /etc/hosts (完整的路径不带空格)

pwd:查看当前目录(print打印 working工作 directory目录)
自动显示工作目录:(o编辑→esc退出编辑→:wq保存)
[root@oldboyedu~]# vim .bashrc
# .bashrc
# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \w\[\e[0m\
]]\\$ "

".bashrc" 13L, 260C written
[root@oldboyedu~]# source bashrc

cd 切换目录(change改变 directory目录)
cd - 去上一次所在的目录
cd . 去当前目录。.表示当前目录
cd .. 去上一级目录。 ..表示上一级目录
cd ~或cd 去当前目录的家目录, ~表示家目录

相对路径:不是从”/“斜线开始的路径,目标文件对于当前文件的路径。
如:data/,mnt/oldboy;
绝对路径(完整的路径):是从”/“斜线根开始的路径,而是从当前目录或指定的目录开始,从根目录开始的。
如:/data/,/mnt/oldboy

ls -a 列出文件下所有的文件,包括以“.“开头的隐藏文件(linux下文件隐藏文件是以.开头的,如果存在..代表存在着父目录)。
ls -l 列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等。
ls -F 在每一个文件的末尾加上一个字符说明该文件的类型。"@"表示符号链接、"|"表示FIFOS、"/"表示目录、"="表示套接字。
ls -s 在每个文件的后面打印出文件的大小。 size(大小)
ls -t 按时间进行文件的排序 Time(时间)
ls -A 列出除了"."和".."以外的文件。
ls -R 将目录下所有的子目录的文件都列出来,相当于我们编程中的“递归”实现
ls -L 列出文件的链接名。Link(链接)
ls -S 以文件的大小进行排序

tree:以树形结构显示目录及文件(例:tree /etc)
tree -L 1(显示的层数):指定树形显示的层数(例:tree -L 1 /etc)(level层数)
tree -d :指定显示树形目录(例:tree -d /etc)(directory目录)
tree -L 1 -d /etc:显示/etc的一层树形目录

创建目录:mkdir (make创建 directory目录)

mkdir -p:覆盖目录创建,根据需要创建所有目录 包括父目录子目录,递归创建
(例:mkdir -p /oldgirl/oldboy)

在当前目录下创建文件:touch 文件名 (例:touch test.txt)
cat:查看文件内容(例:cat wzh.txt)
强制删除文件:rm -f 文件名(force)
删除目录:rm -fr 目录名 rm -i:确认
递归删除,删除目录和文件:rm -r 文件名 (recusive)
创建连续文件:touch {1..1000}.txt {}生成数字序列,字母序列。
touch oldboy{1..3}.txt
touch {oldboy,oldgirl,oldbaby}.txt

Linux一切皆文件,目录也是文件,目录和文件不能重名。
Linux一切从根开始:Linux系统中的一切的数据、文件都是从根目录下衍生存放的

ls (list)显示目录下的内容
-l (long) 以长格式显示目录下的内容(ll的效果跟ls -l效果一样)
-a (all)显示所有文件,包含隐藏文件(以.开头的文件)
-d(dirctory)显示目录
ls -ld oldboy:看oldboy目录的长格式

vim编辑器:(例:vim Linux.txt 进入Linux文件中编辑)
三种模式:普通模式、编辑模式、命令行模式
a:进入编辑模式 i:进入编辑模式(insert)
o:在光标所在的下一行,空行进入编辑模式
esc:退出编辑模式到命令模式 两遍esc命令模式到普通模式
:wq保存退出 :q!强制退出 :q退出不保存 :wq!强制保存退出 :set nu显示行号

普通模式的快捷方式:
yy 复制光标所在位置的一行 n yy:复制多行
p 粘贴
dd/cc 删除光标所在的行 (dd删除/剪切本行的所有内容包括空行 cc删除本行的内容保留空行)
0 光标移至行首
$ 光标移至行尾
u 撤销最后一次修改
U 撤销当前行的所有修改
gg 移动到文件头部
G 光标移至文章最后一行头部
100gg 调至第100行行首
dG 删除光标所在位置至文件结束
r 替换单个字符
C 删除光标后的整行
ZZ 保存退出
命令行模式的快捷方式:
:q! 不保存文件强制退出vim
:wq 保存文件并退出vim
:wq! 强制保存退出
:q 不保存退出
:set nu 显示行号

普通模式的快捷方式:
/3306:向下搜索3306 继续搜按n,向下搜按N
?3306:向上搜索3306 继续搜按n,向下搜按N
:%s/A/B/g:替换 A:要替换的东西 B:拿来替换的东西 g:表示全局
例: :%s/oldboy/oldgirl/g 把文件里的oldboy全部换成oldgirl
:4,6s/A/B/g:将4-6行的A换成B

cp:复制文件和目录(copy)(例:cp test.txt /opt/ 将test文件复制到/opt)
cp -r:复制目录(递归复制)(例:cp -r test /opt/ 将test目录复制到/opt)
cp -p:保存文件属性复制文件(文件的大小、创建时间、权限都是文件属性)
cp -a:跟cp -p一样
cp -d:复制链接
cp -rp:保存目录属性复制目录
cp -i:确认
mv:(move)移动目录或文件,相当于剪切 mv -i:确认 mv -t:颠倒

复制的时候如何不提示直接覆盖?
cp -f
alias:查看所有命令的别名 unalias:删除别名(unalias cp)临时生效,关机就没有了
设置别名:alias cp='cp -i'
默认执行pc相当于执行了cp -i,这是系统默认的别名在作怪。

解决方案:
加“\”:[root@oldboyedu~]#\cp {1.100}.txt /opt/
输入完整路径:[root@oldboyedu~]#/bin/cp {1.100}.txt /opt/
which:查看某个命令的完整路径(例:which cp)

如何防止使用rm误删数据?
1、放弃使用rm,用mv或find替代
2、不删除,只是移动到回收站(/tmp)
3、一定要删除,要先备份
4、不要这样用:rm -fr /opt/*(*代表删除所有)
这样用更安全些:cd /opt → rm -fr*
5、为rm设置别名,提醒自己和组员

课后作业:
1.cd /tmp pwd mkdir data{1..3}
2.(慢)touch /data1/oldboy1.txt touch /data2/oldboy2.txt touch /data/oldboy3.txt
tree -L 2 ls ll
2.touch data{1..3}/oldboy{1..3}
tree -L 2 ll data1/oldboy1 data2/oldboy1 data3/oldboy1
3.cp /etc/hosts /tmp/data1 cp /opt/data1 /opt tree /tmp/data1 tree /opt
4.(慢)mv /tmp/data1 /root cd /opt/data1 rm -f /hosts cd .. rm -fr /data1
4.mv /tmp/data1 /root rm -f /opt/data1/hosts cd /opt rm -fr data1

echo:输出和打印 输入啥输出啥 echo "dhsdyvnvb"
echo -n:不换行输出
echo -e:转义字符 \t代表tab键 \n回车换行(这两个要配合-e使用)
[root@oldboyedu /opt]# echo -e "\ngngb\terbvnerug"

gngb erbvnerug

printf:格式化打印

Linux里的目录和分区是分离的
IDE盘: 不同的磁盘使用字母表示:hda hdb
不同分区是用数字表示:hda1 hda2
SAS/SATA/SASI sda sdb,sda1 sda2
/dev/sda1

Linux分区默认是不能访问的(通过挂载进行访问)
挂载:为分区找到一个入口
挂载点:分区入口的目录名(例:/etc就是分区/dev/sda1的挂载点)
挂载命令:mount (例:mount /dev/cdrom /mnt)
卸载挂载命令:umount (例:umount /mnt)
临时挂载点:/mnt

df -h:查看系统磁盘情况

磁盘下的目录结构说明:
/:存放系统相关
/usr:存放系统方开发的程序
/usr/local:存放用户自己安装的程序,相当于c:/program files
/opt:存放第三厂商开发的程序
/home:存放用户的数据(家目录)

FHS:目录层次标准

根下的目录结构分析:
[root@oldboyedu ~]# tree -L 1 /
/
├── bin -> usr/bin binaries二进制 存放命令相关
├── boot 存放Linux的内核及系统引导程序所需的文件目录(大小可为256——1024MB)它也是引导分区的挂载点
├── dev Device files设备文件 存放设备文件
├── etc 二进制软件包配置问价所在路径
├── home 普通用户的家目录
├── lib -> usr/lib 系统和运行命令所需的共享库文件和内核模块存放目录(libraries)
├── lib64 -> usr/lib64 64库library库文件目录
├── media 可移除的媒体挂载点
├── mnt 临时挂载点 mount
├── opt (option 可选择)有些软件包也会安装在这里,也就是自定义的软件包
├── proc 虚拟的文件系统,存放进程和内核信息的目录
├── root 管理员的家目录
├── run 存放正在运行进程相关信息的文件的目录
├── sbin -> usr/sbin 管理员命令的所在目录,普通用户执行不了(system binaries)
├── srv 给用户提供数据所在的目录
├── sys 虚拟的文件系统,存放进程和内核信息的目录和proc类似
├── tmp 存放临时文件的目录
├── usr 存放系统软件和用户相关程序所在的目录,第二层次目录
└── var 存放可变化的数据的目录

1、/etc:系统初始化及设置相关重要文件
网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0(用于配置上网的文件)
C7:nmtui图形化配置上网 本质就是修改上述文件
C6:setup

2、/etc/resolv.conf: Linux系统DNS客户配置文件(已被网卡配置文件所替代)
DNS:域名系统(Domain Name System)
作用:把浏览器里输入的域名,解析为服务器的IP地址,然后才能找到服务器,提供内容。

3、/etc/hosts:系统本地的DNS解析文件(本地DNS配置文件,优先于DNS公网解析)

4、/etc/fstab:配置开机设备自动挂载的文件(自动挂载)
作用:比如插入一个U盘,希望下次开机能够直接访问。就需要在/etc/fstab里配置
[root@oldboyedu ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Jul 15 15:40:40 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=5402fb0a-5727-4745-b715-83fee4922bf2 / xfs defaults 0 0
UUID=5d25ce16-9259-4a05-a66a-797e208ef456 /boot xfs defaults 0 0
UUID=5e66df19-7e49-4658-ac0b-1ca64ce6b7c3 swap swap defaults 0 0
设备名(UUID) 挂载点 挂载的文件系统类型 挂载参数 是否备份 是否开机检查

blkid:查询所有设备的文件系统类型

5、/etc/rc.local:存放开机自启动程序命令的文件
它的真实路径:/etc/rc.d/rc.local
[root@oldboyedu ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Jul 15 18:11 /etc/rc.local -> rc.d/rc.local
C7的特殊性:chmod +x /etc/rc.d/rc.local(先执行这条命令才能用开机自启动文件)
C6的开机自启动:chkconfig

6、/etc/profile及/etc/bashrc:配置系统的环境变量/别名等的文件
它是各种配置的配置文件
生效条件二选一:1、退出重新登录2、执行source

7、/etc/issue和/etc/issue.net:配置登录前的显示信息文件
[root@oldboyedu ~]# cat /etc/issue
\S
Kernel \r on an \m
[root@oldboyedu ~]# cat /etc/issue.net
\S
Kernel \r on an \m
[root@oldboyedu ~]# >/etc/issue ====>删除内核版本号(不能还原)
[root@oldboyedu ~]# >/etc/issue.net ====>删除内核版本号(不能还原)

8、/etc/motd:配置登陆提示
编辑:
[root@oldboyedu ~]#vim /etc/motd
欢迎来到泳的乐园!
保存退出: :wq
重新登录:Ctrl+d 两次
欢迎来到泳的乐园!(开机提示信息)
[root@oldboyedu ~]#

9、/etc/redhat-release:查看系统版本
[root@oldboyedu ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
uname -r:查看内核
[root@oldboyedu ~]# uname -r
3.10.0-957.21.3.el7.x86_64

10、/etc/sysctl.conf:Linux内核参数设置文件

11、/etc/init.d:软件启动程序所在的目录(C7以前)

12、/etc/hostname:查看主机名
改主机名:(改完之后退出永久生效)
[root@oldboyedu ~]# hostnamectl set-hostname wangzehua
[root@oldboyedu ~]# cat /etc/hostname
wangzehua
重启
[root@wangzehua ~]#

临时改主机名:(C7和C6都可以用)
[root@oldboyedu ~]#hostname wangzehua
[root@oldboyedu ~]#cat /etc/hostname
wangzehua

13、/etc/inittab:设置开机运行级别以及启动相应级别脚本的文件(C7以前)

定义:Linux系统运行级别当前处于的状态
Linux系统运行级别的说明如下:
# 0 关机(请不要把系统运行级别设置为0)
# 1 单用户模式(root用户密码忘记,可用此模式找回)
# 2 没有NFS,多用户模式
# 3 命令行模式 文本模式(企业级服务器核心运行状态)
# 4 未使用
# 5 图形化模式 桌面模式 X11(桌面个人版系统运行状态)
# 6 重启(不要把系统运行级别设置为6)

查看当前运行级别:runlevel或who -r(C7)
[root@oldboyedu ~]# runlevel
N 3
[root@oldboyedu ~]# who -r
run-level 3 2019-07-20 09:55
切换运行级别:init

14、/etc/sysctl.conf Linux内核参数信息文件-
调整Linux系统、优化需要配置这个文件
sysctl -p:让修改后的文件生效

/usr目录:
1、/usr/local:源码编译安装软件默认的位置路径(用户存放自己安装的程序)
Linux的软件安装:
1.rpm安装
rpm -ivh 软件包的包名.rpm
2.yum安装,rpm包管理器(智能安装帮我们找一个软件包需要的依赖包)
安装A,A需要B,先安装B
2、/usr/src:存放源码文件的目录

/var目录下存放的重要路径:
1、/var/log:记录系统及软件运行信息文件所在的目录
log日志信息就是记录计算机运行行为
/var/log/messages:Linux系统级别日志文件
记录Linux系统运行行为的文件,正常行为或非正常行为
[root@oldboyedu ~]# cat /var/log/messages

2、/var/log/secure(安全):用户登录信息日志文件(安全日志文件)
[root@oldboyedu ~]# cat /var/log/secure

3、/var/log/dmesg:记录硬件信息加载情况的日志文件

/proc目录下存放的重要路径:
1、/proc/meminfo:查看系统内容 free -m查看内容
[root@oldboyedu ~]# cat /proc/meminfo
2、/proc/cpuinfo:查看CPU
[root@oldboyedu ~]# cat /proc/cpuinfo
3、/proc/loadavg:查看负载(系统繁忙程度的一个综合指标)
[root@oldboyedu ~]# uptime
14:20:07 up 3:48, 2 users, load average: 0.00, 0.01, 0.05
当前时间 开机多久 哪些用户 负载 平均 1分钟 5分钟 15分钟
负载的数字和CPU核数相当的时候就是负载一个临界点,
例如:一颗两核 临界负载就是2,1分钟5分钟15分钟最大负载点就是2。
4、/proc/mounts:当前设备挂载列表信息文件

vi/vim:纯文本编辑器 vi:记事本

cat:查看文件内容 [root@oldboyedu /opt]# seq 30 >test.txt
cat -n:显示文件的行号 在test文件中生成30个数字

more:分页显示内容
less:分页显示内容(可以上下调节着看)

head:显示文件头部内容 (默认显示前10行) head test.txt
指定显示行数:head -n n test.txt
[root@oldboyedu /opt]# head -n 20 test.txt 指定显示前20行

tail:显示文件尾部内容 (默认显示后10行) tail test.txt
指定显示行数:tail -n n test.txt
[root@oldboyedu /opt]# tail -n 5 test.txt 指定显示后5行
tail -f:实时跟踪显示文件尾部的信息 tail -f test.txt

tac:翻转显示文件内容(和cat相反)
rev:字符左右翻转显示行的内容