Linux基础(特基本的那种)知识
(自己的随手笔记,记得有点乱请亲喷)
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:字符左右翻转显示行的内容