Linux【理论】
Linux理论与基本命令
一、Linux概述
1、什么是Linux
Linux 系统是⼀款操作系统,不同于⼤众消费领域的 Windows 系统和苹果系统,Linux 系统主要是应⽤于服务器和⼤型计算机领域。我们⽣活中的⼤部分的⽹⻚和 APP,其实都是基于 Linux 系统运⾏的,这其中就包括我们经常会使⽤的淘宝和微信。Linux 系统的开发模式是开源,⽽这也正是它的核⼼特⾊。开源代表该系统的源代码能被⾃由获取、使⽤和修改。所以 Linux 系统和其他商业软件最⼤的区别就是它拥有更多的⾃由性。
2、什么是开源
开源是开放源代码的简称,代表该源代码能被自由获取、使用和修改。同时这些被修改过的代码,也必须让其他⼈可以自由获得。
拿 Linux 系统来说,就是所有⼈都可以自由获取 Linux 系统的源代码,并且能够自由地使用和修改它的源代码。同时修改过的版本,也必须让其他⼈可以自由获取、使用和修改。
3、linux相关知识
1)linux中超级管理员的账户是root。
2)Linus:拥有全球顶级的程序员;占领了服务器市场约70%;且服务器的特性以安全为主(一分钟不操作强制下线;解决方法:输入TOP)。
4、Linux的目录
Linux的目录如图所示:
[zl@centos-master ~]$ ls /
bin data etc lib lost+found mnt proc run srv tmp var
boot dev home lib64 media opt root sbin sys usr
//bin:存放着最经常使用的命令。
//boot:存放启动 Linux 时使用的⼀些核心文件,包括⼀些连接⽂件以及镜像⽂件。
//dev:存放 Linux 的外部设备
//etc:存放所有的系统管理所需要的配置文件和子目录。
//home:用户的主目录,在 Linux 中,每个用户都有⼀个自己的目录,⼀般该目录名是以用户的账号命名的。
//lib:存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL ⽂件。⼏乎所有的应⽤程序都需要⽤到这些共享库。
//media:linux 系统会⾃动识别⼀些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
//mnt:用于临时挂载别的文件系统,我们可以将光驱挂载在 /mnt/ 上,然后进⼊该目录就可以查看光驱里的内容了。
//opt:给主机额外安装软件所摆放的目录。比如你安装⼀个ORACLE数据库则就可以放到这个目录下。默认是空的。
//root:该目录为系统管理员(超级权限者)的用户主目录。
//sbin:s 就是 Super User 的意思,是 Superuser Binaries (超级⽤户的⼆进制⽂件) 的缩写,用于存放系统管理员使用的系统管理程序。
//selinux:用于存放selinux相关的⽂件。这个目录是 Redhat/CentOS 所特有的目录,Selinux 是⼀个安全机制,类似于 windows 的防⽕墙,但是这套机制比较复杂。
//srv:存放⼀些服务启动之后需要提取的数据。
//sys:这是 Linux2.6 内核的⼀个很⼤的变化。用于安装 2.6 内核中新出现的⼀个文件系统 sysfs.
sysfs ⽂件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统,以及针对伪终端的 devpts 文件系统。
该⽂件系统是内核设备树的⼀个直观反映。当⼀个内核对象被创建的时候,对应的⽂件和⽬录也在内核对象⼦系统中被创建。
//tmp:tmp 是 temporary(临时) 的缩写这个⽬录是用来存放⼀些临时文件的。
//usr:usr 是 unix shared resources(共享资源) 的缩写,这是⼀个⾮常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
//usr/bin:系统用户使用的应用程序。
//usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
//usr/src:内核源代码默认的放置目录。
//var:var 是 variable(变量) 的缩写,用于存放着在不断扩充的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
二、Linux基本命令
1、Linux登入
1)登录步骤
在阿里云服务器创建账户密码,之后个人客户端通过ssh服务连接到阿里云,其中ssh服务端口为22;
连接命令:ssh 账户@101.43.158.84 ;
然后按下回车键,再输⼊密码123456,最后回车,便登录成功。
//账户
C:\Users\EDY>ssh zl@101.43.158.84
//密码
zl@101.43.158.84's password:
//登录成功
Activate the web console with: systemctl enable --now cockpit.socket
Last failed login: Sat Feb 26 11:43:32 CST 2022 from 117.22.180.84 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Fri Feb 25 16:16:51 2022 from 117.22.141.38
[zl@centos-master ~]$
2)如何登陆后不退出
自动退出的原因
Linus的服务器以安全为主,其特性为【一分钟不操作强制下线】,出于安全的考虑,在一段时间不操作的情况下就会自动退出登录。
解决自动退出的方法
输入命令【TOP】,即输入【TOP】调出监控。(TOP 命令是常用的 Linux 性能监控的命令)
[zl@centos-master ~]$ top
//top,监视器数据
top - 11:45:41 up 3 days, 1:44, 1 user, load average: 2.81, 2.68, 2.72
Tasks: 126 total, 1 running, 125 sleeping, 0 stopped, 0 zombie
%Cpu(s): 12.5 us, 3.0 sy, 83.7 ni, 0.0 id, 0.0 wa, 0.7 hi, 0.2 si, 0.0 st
MiB Mem : 3736.5 total, 109.7 free, 3250.4 used, 376.4 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 268.6 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1329266 root 30 10 2518324 2.0g 8 S 167.0 56.1 2165:52 xmrig
1747082 root 20 0 833820 80772 63288 S 21.7 2.1 0:00.65 kube-apiserver
1102 root 20 0 1873880 73952 21168 S 1.3 1.9 41:44.58 kubelet
1706 root 20 0 1417564 64476 740 S 1.0 1.7 13:56.47 dockerd
退出top监视器,点击“q”回车即可。
2、查看命令
1)查看当前账户目录
pwd:查看当前账户目录
[zl@centos-master ~]$ pwd
/home/zl
2)ls命令选项
基本格式:ls [ 选项 ] [ 目录名 ]
命令选项
ls /:查看目录
ls -a:列出目录下的所有文件
ls -l:列出文件的详细信息
ls -i:查看⽂件的iNode号(iNode会指向文件块所在的位置)
ls -h:以容易读取的方式显示文件大小
ls -d:仅列出目录本身
ls -lh:查看文件的详细信息(包含了文件大小)
ls -la:查看所有文件(包含了隐藏文件)
ls -lah:查看所有文件以及文件大小
//ls /:查看目录与文件
[zl@centos-master ~]$ ls /
bin data etc lib lost+found mnt proc run srv tmp var
boot dev home lib64 media opt root sbin sys usr
//ls -a:列出目录下的所有文件
[zl@centos-master ~]$ ls -a
. a asd asd.sh .asd.sh.swo .bash_history .bash_profile .config index.txt target .viminfo
.. anruo asd,sh .asd.sh.swn .asd.sh.swp .bash_logout .bashrc index.app source .vim wugen
//ls -l:列出文件的详细信息
[zl@centos-master ~]$ ls -l
total 32
drwxrwxr-x 3 zl zl 4096 Feb 21 18:02 a
drwxrwxr-x 2 zl zl 4096 Feb 22 10:03 anruo
drwxrwxr-x 2 zl zl 4096 Feb 22 15:50 asd
-rwxrwxrwx 1 zl zl 12 Feb 22 15:53 asd,sh
-rwxrwxrwx 1 zl zl 13 Feb 22 16:08 asd.sh
-rw-rw-r-- 1 zl zl 0 Feb 22 09:31 index.app
-rwxrwxrwx 1 zl zl 0 Feb 21 14:26 index.txt
drwxrwxr-x 2 zl zl 4096 Feb 22 09:39 source
drwxrwxr-x 2 zl zl 4096 Feb 22 09:41 target
drwxrwxr-x 2 zl zl 4096 Feb 22 10:40 wugen
//ls -i:查看⽂件的iNode号(iNode会指向文件块所在的位置)
[zl@centos-master ~]$ ls -i
2359408 a 2359453 asd 2359493 asd.sh 2359494 index.txt 2359657 target
2359558 anruo 2359492 asd,sh 2359419 index.app 2359655 source 2359574 wugen
//ls -h:以容易读取的方式显示文件大小
[zl@centos-master ~]$ ls -h
a anruo asd asd,sh asd.sh index.app index.txt source target wugen
//ls -d:仅列出目录本身
[zl@centos-master ~]$ ls -d
.
//ls -lh:查看文件的详细信息(包含了文件大小)
[zl@centos-master ~]$ ls -lh
total 32K
drwxrwxr-x 3 zl zl 4.0K Feb 21 18:02 a
drwxrwxr-x 2 zl zl 4.0K Feb 22 10:03 anruo
drwxrwxr-x 2 zl zl 4.0K Feb 22 15:50 asd
-rwxrwxrwx 1 zl zl 12 Feb 22 15:53 asd,sh
-rwxrwxrwx 1 zl zl 13 Feb 22 16:08 asd.sh
-rw-rw-r-- 1 zl zl 0 Feb 22 09:31 index.app
-rwxrwxrwx 1 zl zl 0 Feb 21 14:26 index.txt
drwxrwxr-x 2 zl zl 4.0K Feb 22 09:39 source
drwxrwxr-x 2 zl zl 4.0K Feb 22 09:41 target
drwxrwxr-x 2 zl zl 4.0K Feb 22 10:40 wugen
//ls -la:查看所有文件(包含了隐藏文件)
[zl@centos-master ~]$ ls -la
total 112
drwx------ 10 zl zl 4096 Feb 22 16:08 .
drwxr-xr-x. 14 root root 4096 Feb 21 11:08 ..
drwxrwxr-x 3 zl zl 4096 Feb 21 18:02 a
drwxrwxr-x 2 zl zl 4096 Feb 22 10:03 anruo
drwxrwxr-x 2 zl zl 4096 Feb 22 15:50 asd
-rwxrwxrwx 1 zl zl 12 Feb 22 15:53 asd,sh
-rwxrwxrwx 1 zl zl 13 Feb 22 16:08 asd.sh
-rw-r--r-- 1 zl zl 12288 Feb 22 15:28 .asd.sh.swn
-rw-r--r-- 1 zl zl 12288 Feb 22 15:20 .asd.sh.swo
-rw-r--r-- 1 zl zl 12288 Feb 22 15:11 .asd.sh.swp
-rw------- 1 zl zl 6069 Feb 22 17:02 .bash_history
-rw-r--r-- 1 zl zl 18 Jul 27 2021 .bash_logout
-rw-r--r-- 1 zl zl 141 Jul 27 2021 .bash_profile
-rw-r--r-- 1 zl zl 376 Jul 27 2021 .bashrc
drwx------ 3 zl zl 4096 Feb 21 11:26 .config
-rw-rw-r-- 1 zl zl 0 Feb 22 09:31 index.app
-rwxrwxrwx 1 zl zl 0 Feb 21 14:26 index.txt
drwxrwxr-x 2 zl zl 4096 Feb 22 09:39 source
drwxrwxr-x 2 zl zl 4096 Feb 22 09:41 target
drwxr-xr-x 2 zl zl 4096 Feb 22 15:50 .vim
-rw------- 1 zl zl 6930 Feb 22 16:08 .viminfo
drwxrwxr-x 2 zl zl 4096 Feb 22 10:40 wugen
//ls -lah:查看所有文件以及文件大小
[zl@centos-master ~]$ ls -lah
total 112K
drwx------ 10 zl zl 4.0K Feb 22 16:08 .
drwxr-xr-x. 14 root root 4.0K Feb 21 11:08 ..
drwxrwxr-x 3 zl zl 4.0K Feb 21 18:02 a
drwxrwxr-x 2 zl zl 4.0K Feb 22 10:03 anruo
drwxrwxr-x 2 zl zl 4.0K Feb 22 15:50 asd
-rwxrwxrwx 1 zl zl 12 Feb 22 15:53 asd,sh
-rwxrwxrwx 1 zl zl 13 Feb 22 16:08 asd.sh
-rw-r--r-- 1 zl zl 12K Feb 22 15:28 .asd.sh.swn
-rw-r--r-- 1 zl zl 12K Feb 22 15:20 .asd.sh.swo
-rw-r--r-- 1 zl zl 12K Feb 22 15:11 .asd.sh.swp
-rw------- 1 zl zl 6.0K Feb 22 17:02 .bash_history
-rw-r--r-- 1 zl zl 18 Jul 27 2021 .bash_logout
-rw-r--r-- 1 zl zl 141 Jul 27 2021 .bash_profile
-rw-r--r-- 1 zl zl 376 Jul 27 2021 .bashrc
drwx------ 3 zl zl 4.0K Feb 21 11:26 .config
-rw-rw-r-- 1 zl zl 0 Feb 22 09:31 index.app
-rwxrwxrwx 1 zl zl 0 Feb 21 14:26 index.txt
drwxrwxr-x 2 zl zl 4.0K Feb 22 09:39 source
drwxrwxr-x 2 zl zl 4.0K Feb 22 09:41 target
drwxr-xr-x 2 zl zl 4.0K Feb 22 15:50 .vim
-rw------- 1 zl zl 6.8K Feb 22 16:08 .viminfo
drwxrwxr-x 2 zl zl 4.0K Feb 22 10:40 wugen
3、命令的别名
alias:查看系统存在的别名;
alias 别名='系统认可的命令':定义别名;(例如:alias ls="ls -la":定义"ls -la"的别名为ls)
unalias 别名:取消别名;(例如:unalias ls:取消别名“ls”)
//alias:查看系统存在的别名;(查看原有别名)
[zl@centos-master ~]$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
//alias 别名='系统认可的命令':定义别名.
[zl@centos-master ~]$ alias ls="asd"
//alias:查看系统存在的别名;(验证添加别名 ls="asd" 是否成功)
[zl@centos-master ~]$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='asd'
alias vi='vim'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
//unalias 别名:取消别名
[zl@centos-master ~]$ unalias ls
//alias:查看系统存在的别名;(验证删除别名 ls="asd" 是否成功)
[zl@centos-master ~]$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias vi='vim'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
4、切换目录
cd :返回到用户的家目录
cd / :代表根目录
cd. :当前目录
cd.. :进⼊当前目录的上⼀级目录
//ls /:查看目录与文件
[zl@centos-master ~]$ ls /
bin data etc lib lost+found mnt proc run srv tmp var
boot dev home lib64 media opt root sbin sys usr
//cd:返回到用户的家目录
[zl@centos-master ~]$ cd
//ls:查看当前目录与文件(验证 cd 结果)
[zl@centos-master ~]$ ls
a anruo asd asd,sh asd.sh index.app index.txt source target wugen
//cd .:查看当前目录
[zl@centos-master ~]$ cd .
//ls:查看当前目录与文件(验证 cd . 结果)
[zl@centos-master ~]$ ls
a anruo asd asd,sh asd.sh index.app index.txt source target wugen
//cd ..:进⼊当前目录的上⼀级目录
[zl@centos-master ~]$ cd ..
//ls:查看当前目录与文件(验证 cd .. 结果)
[zl@centos-master home]$ ls
cl jc lighthouse lm rq wp wq wuya xj xl yl zl
//cd /:返回根目录
[zl@centos-master home]$ cd /
//ls:查看当前目录与文件(验证 cd / 结果)
[zl@centos-master /]$ ls
bin data etc lib lost+found mnt proc run srv tmp var
boot dev home lib64 media opt root sbin sys usr
5、创建文件夹(目录)
mkdir 文件夹名称:创建文件夹。
mkdir -pv 文件夹名称:创建且过程可视化的多层级文件夹。
其中: -p:创建多层级的文件夹;-v:创建的过程可以可视化的看到。
//mkdir -pv 文件夹名称:创建且过程可视化的多层级文件夹
[zl@centos-master ~]$ mkdir -pv acd/q/w/e/r
mkdir: created directory 'acd'
mkdir: created directory 'acd/q'
mkdir: created directory 'acd/q/w'
mkdir: created directory 'acd/q/w/e'
mkdir: created directory 'acd/q/w/e/r'
//ls:查看目录与文件(验证目录创建成功)
[zl@centos-master ~]$ ls
a aaa acd anruo asd asd,sh asd.sh index.app index.txt source target wugen
//mkdir 文件夹名称:创建级文件夹
[zl@centos-master ~]$ mkdir ABC
//ls:查看目录与文件(验证目录创建成功)
[zl@centos-master ~]$ ls
a aaa ABC acd anruo asd asd,sh asd.sh index.app index.txt source target wugen
6、创建文件touch
touch 文件名字:创建空白文件
//touth 文件名:创建文件
[zl@centos-master ~]$ touch CAD
//ls:查看文件与目录(验证文件创建成功)
[zl@centos-master ~]$ ls
a aaa ABC acd anruo asd asd,sh asd.sh CAD index.app index.txt QWE source target wugen
//touth 文件夹/文件:在文件夹里创建文件
[zl@centos-master ~]$ touch anruo/acd
//查看树状目录(验证文件创建成功)
[zl@centos-master ~]$ tree anruo
anruo
└── acd
0 directories, 1 file
7、树形目录命令
通常情况下系统未安装该命令,需要yum install -y tree安装 直接使⽤tree显示深度太多,⼀般会使⽤ -L选项⼿⼯设定⽬录深度
1)安装与卸载
yum install -y tree:安装树形目录
yum uninstall tree:删除树状目录
2)查看所有目录(树形)
tree 第一级目录名称:查看所有目录(树状)
3)查看指定深度目录(树形)
tree -L n [目录]:查看指定深度目录(树形)【其中n指定目录深度】
//mkdir -pv 文件夹名称:创建且过程可视化的多层级文件夹。
[zl@centos-master ~]$ mkdir -pv acd/a/s/d/f/g
mkdir: created directory 'acd'
mkdir: created directory 'acd/a'
mkdir: created directory 'acd/a/s'
mkdir: created directory 'acd/a/s/d'
mkdir: created directory 'acd/a/s/d/f'
mkdir: created directory 'acd/a/s/d/f/g'
//tree 第一级目录名称:查看所有目录(树状)
[zl@centos-master ~]$ tree acd
acd
└── a
└── s
└── d
└── f
└── g
5 directories, 0 files
//tree -L n [目录]:查看指定深度目录(树形)【其中n指定目录深度】
[zl@centos-master ~]$ tree -L 3
.
├── acd
│ └── a
│ └── s
└── index.txt
3 directories, 1 file
8、删除目录或文件
1)删除目录
rm -r 目录名称:直接删除
rm -rf 目录名称:强制删除,若目录不存在,此命令依旧可以执行,不报错
rm -rv 目录名称:可视化的删除
rm 目录名称:删除目录
rm -r 目录名称:直接删除
rm -rf 目录名称:强制删除
rm -rv 目录名称:可视化的删除
[zl@centos-master ~]$ ls
aaa acd bbb ccc index.txt
//rm -r 目录名称:直接删除
[zl@centos-master ~]$ rm -r aaa
//ls:查看目录与文件(验证aaa是否删除成功)
[zl@centos-master ~]$ ls
acd bbb ccc index.txt
//rm -rf 目录名称:强制删除(不可视)
[zl@centos-master ~]$ rm -rf bbb
//ls:查看目录与文件(验证bbb是否删除成功)
[zl@centos-master ~]$ ls
acd ccc index.txt
//rm -rf 目录名称:强制删除(不可视,若目录不存在,此命令依旧可以执行,不报错)
[zl@centos-master ~]$ rm -rf qqq
//rm -rv 目录名称:可视化的删除(removed directory:删除成功)
[zl@centos-master ~]$ rm -rv ccc
removed directory 'ccc'
2)删除文件
rm -f 文件名 :强制删除文件
rm -i 文件名 :询问确认后删除文件
rm -v 文件名 :删除文件(可视化的只展示)
rm -iv 文件名 :询问确认后删除文件+可视化展示
//ls:查看目录与文件
[zl@centos-master ~]$ ls
acd index.app index.att index.qqq index.tix index.txt
//rm -f 文件名:强制删除文件
[zl@centos-master ~]$ rm -f index.app
//ls:查看目录与文件
[zl@centos-master ~]$ ls
acd index.att index.qqq index.tix index.txt
//rm -i 文件名:询问确认后删除文件
[zl@centos-master ~]$ rm -i index.att
rm: remove regular empty file 'index.att'? y
//ls:查看目录与文件
[zl@centos-master ~]$ ls
acd index.qqq index.tix index.txt
//rm -v 文件名:删除文件(可视化的只展示)
[zl@centos-master ~]$ rm -v index.tix
removed 'index.tix'
//rm -iv 文件名:询问确认后删除文件+可视化展示
[zl@centos-master ~]$ ls
acd index.qqq index.txt
[zl@centos-master ~]$ rm -iv index.qqq
rm: remove regular empty file 'index.qqq'? y
removed 'index.qqq'
9、复制cp
源⽂件始终不变,仅仅是对目标文件进行改变。
1)复制文件
cp 原文件 目标文件:复制原文件,并命名为目标文件
//ls:查看目录与文件
[zl@centos-master ~]$ ls
acd index.txt
//cp 原文件 目标文件:复制原文件,并命名为目标文件
[zl@centos-master ~]$ cp index.txt index.app
//ls:查看目录与文件(验证复制成功)
[zl@centos-master ~]$ ls
acd index.app index.txt
2)复制目录
cp 原目录/原文件 目标目录/目标文件:把一个文件从⼀个目录复制到另外一个目录。
//创建 anruo 文件夹
[zl@centos-master ~]$ mkdir anruo
//创建 wugen 文件夹
[zl@centos-master ~]$ mkdir wugen
//查看文件与目录(验证创建成功)
[zl@centos-master ~]$ ls
acd anruo index.app index.txt wugen
//cp 文件名称 目录
[zl@centos-master ~]$ cp index.txt wugen
//tree 目录名称:树状目录(验证文件加入该目录中)
[zl@centos-master ~]$ tree wugen
wugen
└── index.txt
0 directories, 1 file
//cp 原目录/原文件 目标目录/目标文件:把一个文件从⼀个目录复制到另外一个目录。
[zl@centos-master ~]$ cp wugen/index.txt anruo/index.pdf
//tree 目录名称:树状目录(验证文件加入该目录中)
[zl@centos-master ~]$ tree anruo
anruo
└── index.pdf
0 directories, 1 file
10、移动mv
1)移动文件
mv 文件名称 目标目录:文件剪切到文件夹下。
mv 原目录/原文件 目标目录:把目录下的文件剪切到另外⼀个目录。
2)重命名
mv 原文件 目标文件:重命名。
//ls:查看目录与文件
[zl@centos-master ~]$ ls
acd anruo index.app index.pdf index.ppt index.txt wugen
//tree 目录名称:树状目录(查看初始状态)
[zl@centos-master ~]$ tree wugen
wugen
└── index.txt
0 directories, 1 file
//mv 文件名称 目标目录:文件剪切到文件夹下。
[zl@centos-master ~]$ mv index.ppt wugen
//tree 目录名称:树状目录(验证文件加入该目录中)
[zl@centos-master ~]$ tree wugen
wugen
├── index.ppt
└── index.txt
0 directories, 2 files
//ls:查看目录与文件(验证剪贴后,文件是否从根目录中消失)
[zl@centos-master ~]$ ls
acd anruo index.app index.pdf index.txt wugen
//tree 目录名称:树状目录(查看初始状态)
[zl@centos-master ~]$ tree anruo
anruo
├── index.app
└── index.pdf
0 directories, 2 files
//mv 原目录/原文件 目标目录:把目录下的文件剪切到另外⼀个目录。
[zl@centos-master ~]$ mv anruo/index.app wugen
//tree 目录名称:树状目录(验证文件加入该目录中)
[zl@centos-master ~]$ tree wugen
wugen
├── index.app
├── index.ppt
└── index.txt
0 directories, 3 files
0 directories, 2 files
//mv 原文件 目标文件:重命名。
[zl@centos-master ~]$ mv index.app index.ppp
//ls:查看目录与文件(验证结果)
[zl@centos-master ~]$ ls
acd anruo index.pdf index.ppp index.txt wugen
11、文件查看内容
1)cat(正序显示)
cat -n 文件:显示文件的行数
cat -A 文件:显示文件所有内容但是不显示行号
2)tac(倒序显示)
more 文件:⼀屏⼀屏查看文件内容
less 文件:查看文件内容
head -n N 文件名:查看文件开头几行(N为数字,值得是要看几行)
tail -n N 文件名:查看文件结尾几行(N为数字,值得是要看几行)
3)如何查看实时日志
tail -f 文件:查看实时日志
12、权限操作
1)权限数字
r:表示读得权限;读的权限用数字4代表。
w:表示写的权限;写的权限用数字2代表。
x:表示执行的权限;执行的权限用数字1代表。
我们赋予权限都会用数字代替,比如说我们要赋予读、写和执行的权限,我们就用7代替,读、写的权限就用6代替。
chmod nnn 文件名:赋予文件权限(n表示权限的数字,3个n,自左向右依次代表所有者、所属组和其他人)
2)基本权限
文件基本权限为:一个文件的基本权限就是 3 种用户身份(所有者、所属组和其他人)
其中u表示所有者(蓝色框),g表示所属组(绿色框),o表示其他人(红色框)t。a是代表全部的三种身份,即u+g+o。
chmod 用户身份+用户权限字母 文件名:增加某一个用户的权限
chmod 用户身份-用户权限字母 文件名:移除某一个用户的权限
chmod 用户身份=用户权限字母 文件名:设定文件的权限
13、sh文件怎么处理
。
2)在linux中,我们编辑文件是通过vim编辑器进行编辑的,
3)如何把date的命令写入到将要执行的文件夹
编辑的命
2)Mem行相关数据
total = used + free ,其中used为真实已占内存,free为真实可用内存;
buffers和cached虽然计算在used内, 但其实为可用内存。
数。
数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转。
(2)Taska行
进程总数(total)=正在运行的进程数(running)+睡眠的进程数(sleeping)+已经停止的进程数(stopped)+僵尸进程数(zombie)。
(3)Cpu行
用户空间CPU占比(us)=内核空间CPU占比(sy)+CPU空置率(id)。
(4)TOP详解
PID:进程ID
15、端口查看
1)lsof
lsof(list open files)是⼀个列出当前系统打开文件的工具。
lsof -i:端口 :查看指定端口占用语法格式
lsof -i :查看端口占用语法格式
//lsof -i:端口 :查看指定端口占用语法格式
[root@centos-master ~]# lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1097 root 5u IPv4 22183 0t0 TCP *:ssh (LISTEN)
//lsof -i :查看端口占用语法格式
[root@centos-master ~]# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
chronyd 825 chrony 6u IPv4 18564 0t0 UDP VM-24-7-centos:323
chronyd 825 chrony 7u IPv6 18565 0t0 UDP VM-24-7-centos:323
NetworkMa 1027 root 25u IPv4 21550 0t0 UDP centos-master:bootpc->_gateway:bootps
sshd 1097 root 5u IPv4 22183 0t0 TCP *:ssh (LISTEN)
kubelet 1102 root 16u IPv4 29804 0t0 TCP VM-24-7-centos:46279 (LISTEN)
kubelet 1102 root 24u IPv4 785131 0t0 TCP centos-master:42714->centos-master:sun-sr-https (SYN_SENT)
kubelet 1102 root 31u IPv4 784930 0t0 TCP centos-master:42676->centos-master:sun-sr-https (SYN_SENT)
kubelet 1102 root 32u IPv6 28518 0t0 TCP *:10250 (LISTEN)
kubelet 1102 root 33u IPv4 784014 0t0 TCP centos-master:42652->centos-master:sun-sr-https (SYN_SENT)
kubelet 1102 root 36u IPv4 29826 0t0 TCP VM-24-7-centos:10248 (LISTEN)
kubelet 1102 root 37u IPv4 784153 0t0 TCP centos-master:42678->centos-master:sun-sr-https (SYN_SENT)
kubelet 1102 root 40u IPv4 784267 0t0 TCP centos-master:42692->centos-master:sun-sr-https (SYN_SENT)
kubelet 1102 root 44u IPv4 784318 0t0 TCP centos-master:42704->centos-master:sun-sr-https (SYN_SENT)
nginx 1134 root 8u IPv4 23267 0t0 TCP *:http (LISTEN)
nginx 1135 nobody 8u IPv4 23267 0t0 TCP *:http (LISTEN)
secu-tcs- 1178 root 9u IPv4 52553 0t0 TCP centos-master:48034->180.97.118.234:nsesrvr (ESTABLISHED)
tat_agent 1270 root 17u IPv4 36221 0t0 TCP centos-master:46896->169.254.0.138:d-s-n (ESTABLISHED)
kube-cont 2677 root 7u IPv4 32361 0t0 TCP VM-24-7-centos:10257 (LISTEN)
kube-sche 2723 root 7u IPv4 33194 0t0 TCP VM-24-7-centos:10259 (LISTEN)
kube-sche 2723 root 8u IPv4 784162 0t0 TCP centos-master:42684->centos-master:sun-sr-https (SYN_SENT)
kube-sche 2723 root 9u IPv4 785049 0t0 TCP centos-master:42688->centos-master:sun-sr-https (SYN_SENT)
kube-sche 2723 root 12u IPv4 784018 0t0 TCP centos-master:42654->centos-master:sun-sr-https (SYN_SENT)
kube-sche 2723 root 13u IPv4 784860 0t0 TCP centos-master:42662->centos-master:sun-sr-https (SYN_SENT)
kube-sche 2723 root 15u IPv4 784079 0t0 TCP centos-master:42668->centos-master:sun-sr-https (SYN_SENT)
kube-sche 2723 root 16u IPv4 785050 0t0 TCP centos-master:42690->centos-master:sun-sr-https (SYN_SENT)
sshd 105342 root 5u IPv4 497451 0t0 TCP centos-master:ssh->117.22.142.84:5773 (ESTABLISHED)
sshd 105485 root 5u IPv4 498538 0t0 TCP centos-master:ssh->117.22.142.84:5811 (ESTABLISHED)
sshd 105505 cl 5u IPv4 497451 0t0 TCP centos-master:ssh->117.22.142.84:5773 (ESTABLISHED)
sshd 105589 wuya 5u IPv4 498538 0t0 TCP centos-master:ssh->117.22.142.84:5811 (ESTABLISHED)
sshd 107032 root 5u IPv4 509109 0t0 TCP centos-master:ssh->117.22.142.84:7146 (ESTABLISHED)
sshd 107140 xj 5u IPv4 509109 0t0 TCP centos-master:ssh->117.22.142.84:7146 (ESTABLISHED)
sshd 108052 root 5u IPv4 515110 0t0 TCP centos-master:ssh->117.22.142.84:asgenf (ESTABLISHED)
sshd 108084 zl 5u IPv4 515110 0t0 TCP centos-master:ssh->117.22.142.84:asgenf (ESTABLISHED)
sshd 112664 root 5u IPv4 549663 0t0 TCP centos-master:ssh->117.22.142.84:microtalon-dis (ESTABLISHED)
sshd 112741 root 5u IPv4 549663 0t0 TCP centos-master:ssh->117.22.142.84:microtalon-dis (ESTABLISHED)
sshd 112963 root 5u IPv4 598960 0t0 TCP centos-master:ssh->117.22.142.84:5242 (ESTABLISHED)
sshd 112996 root 5u IPv4 598960 0t0 TCP centos-master:ssh->117.22.142.84:5242 (ESTABLISHED)
sshd 113020 root 5u IPv4 590608 0t0 TCP centos-master:ssh->117.22.142.84:3com-njack-1 (ESTABLISHED)
sshd 113061 root 5u IPv4 590608 0t0 TCP centos-master:ssh->117.22.142.84:3com-njack-1 (ESTABLISHED)
sshd 113134 root 5u IPv4 604396 0t0 TCP centos-master:ssh->117.22.142.84:hacl-gs (ESTABLISHED)
sshd 113150 root 5u IPv4 604396 0t0 TCP centos-master:ssh->117.22.142.84:hacl-gs (ESTABLISHED)
sshd 113241 root 5u IPv4 604619 0t0 TCP centos-master:ssh->117.22.142.84:wsdapi-s (ESTABLISHED)
sshd 113249 root 5u IPv4 604619 0t0 TCP centos-master:ssh->117.22.142.84:wsdapi-s (ESTABLISHED)
sshd 118773 root 5u IPv4 657402 0t0 TCP centos-master:ssh->117.22.142.84:5570 (ESTABLISHED)
sshd 118790 root 5u IPv4 657402 0t0 TCP centos-master:ssh->117.22.142.84:5570 (ESTABLISHED)
sshd 121460 root 5u IPv4 679752 0t0 TCP centos-master:ssh->117.22.142.84:diameters (ESTABLISHED)
sshd 121499 xj 5u IPv4 679752 0t0 TCP centos-master:ssh->117.22.142.84:diameters (ESTABLISHED)
sshd 121696 root 5u IPv4 680585 0t0 TCP centos-master:ssh->117.22.142.84:lonewolf-lm (ESTABLISHED)
sshd 121774 root 5u IPv4 680585 0t0 TCP centos-master:ssh->117.22.142.84:lonewolf-lm (ESTABLISHED)
sshd 123620 root 5u IPv4 697800 0t0 TCP centos-master:ssh->223.104.204.44:13762 (ESTABLISHED)
sshd 123624 root 5u IPv4 697800 0t0 TCP centos-master:ssh->223.104.204.44:13762 (ESTABLISHED)
sshd 124111 root 5u IPv4 706890 0t0 TCP centos-master:ssh->117.22.142.84:5623 (ESTABLISHED)
sshd 124143 root 5u IPv4 706890 0t0 TCP centos-master:ssh->117.22.142.84:5623 (ESTABLISHED)
sshd 126894 root 5u IPv4 722190 0t0 TCP centos-master:ssh->117.22.142.84:5790 (ESTABLISHED)
sshd 126916 root 5u IPv4 722190 0t0 TCP centos-master:ssh->117.22.142.84:5790 (ESTABLISHED)
sshd 127535 root 5u IPv4 724597 0t0 TCP centos-master:ssh->117.22.142.84:6292 (ESTABLISHED)
sshd 127544 root 5u IPv4 724597 0t0 TCP centos-master:ssh->117.22.142.84:6292 (ESTABLISHED)
sshd 128636 root 5u IPv4 732561 0t0 TCP centos-master:ssh->117.22.142.84:5818 (ESTABLISHED)
sshd 128661 root 5u IPv4 732561 0t0 TCP centos-master:ssh->117.22.142.84:5818 (ESTABLISHED)
sshd 134737 root 5u IPv4 766220 0t0 TCP centos-master:ssh->117.22.142.84:6733 (ESTABLISHED)
sshd 134762 root 5u IPv4 766220 0t0 TCP centos-master:ssh->117.22.142.84:6733 (ESTABLISHED)
2)netstat
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况
netstat -tunlp | grep 端口号:查看指定端口占用语法格式(netstat
netstat -tunlp :查看所有端口占用语法格式(netstat )
//netstat -tunlp | grep 端口号:查看端口占用语法格式(netstat )
[root@centos-master ~]# netstat -tunlp | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1097/sshd
//netstat -tunlp :查看所有端口占用语法格式(netstat )
[root@centos-master ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1097/sshd
tcp 0 0 127.0.0.1:46279 0.0.0.0:* LISTEN 1102/kubelet
tcp 0 0 127.0.0.1:10248 0.0.0.0:* LISTEN 1102/kubelet
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1134/nginx: master
tcp 0 0 127.0.0.1:10257 0.0.0.0:* LISTEN 2677/kube-controlle
tcp 0 0 127.0.0.1:10259 0.0.0.0:* LISTEN 2723/kube-scheduler
tcp6 0 0 :::10250 :::* LISTEN 1102/kubelet
udp 0 0 127.0.0.1:323 0.0.0.0:* 825/chronyd
udp6 0 0 ::1:323 :::* 825/chronyd
其中,关于【netstat -tunlp 】中的【tunlp】分别代表的意思,如下所示:
-t : (tcp) 仅显示tcp相关选项
-u : (udp)仅显示udp相关选项
-n : 拒绝显示别名,能显示数字的全部转化为数字
-l : 仅列出在Listen(监听)的服务状态
-p : 显示建⽴相关链接的程序名
16、进程查看
1)ps
ps命可以查看静态的进程统计信息,⼀般结合选项使用ps aux 或 ps -elf 命令, 建议使用 ps -elf 查询
ps -elf | grep 进程:查看静态的进程统计信息
ps -elf :查看更加详细的信息
//ps -elf | grep 进程:查看静态的进程统计信息
[root@centos-master ~]# ps -elf | grep nginx
1 S root 1134 1 0 80 0 - 10821 - 10:01 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
5 S nobody 1135 1134 0 80 0 - 19508 do_epo 10:01 ? 00:00:00 nginx: worker process
0 S root 161627 121782 0 80 0 - 3811 - 16:40 pts/15 00:00:00 grep --color=auto nginx
//ps -elf :查看更加详细的信息
[root@centos-master ~]# ps -elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 43476 do_epo 10:01 ? 00:00:08 /usr/lib/systemd/systemd --switched-root
1 S root 2 0 0 80 0 - 0 - 10:01 ? 00:00:00 [kthreadd]
1 I root 3 2 0 60 -20 - 0 - 10:01 ? 00:00:00 [rcu_gp]
1 I root 4 2 0 60 -20 - 0 - 10:01 ? 00:00:00 [rcu_par_gp]
1 I root 6 2 0 60 -20 - 0 - 10:01 ? 00:00:00 [kworker/0:0H-events_highpri]
1 I root 9 2 0 60 -20 - 0 - 10:01 ? 00:00:00 [mm_percpu_wq]
1 S root 10 2 0 80 0 - 0 - 10:01 ? 00:00:01 [ksoftirqd/0]
0 R root 162084 121782 0 80 0 - 15676 - 16:41 pts/15 00:00:00 ps -elf
以上输出信息中,第一行为列表标题,其中各字段的含义描述如下:
USER:启动该进程的⽤户账号名称;
PID:该进程在系统中的数字 ID 号,在当前系统中是唯⼀的;
%CPU:CPU占⽤的百分⽐;
%MEM:内存占⽤的百分⽐;
VSZ:占⽤虚拟内存(swap 空间)的⼤⼩;
RSS:占⽤常驻内存(物理内存)的⼤⼩;
TTY:表明该进程在哪个终端上运⾏。“ ?” 表示未知或不需要终端;
STAT:显示进程当前的状态,S(休眠)、R(运⾏)、Z(僵死)、<(⾼优先级)、N(低优先级)、s(⽗进程)、+(前台进程);
START:启动该进程的时间;
TIME:该进程占⽤的CPU时间;
17、vim编辑器
Vim是从 vi 发展出来的⼀个文本编辑器,拥有代码补完、编译及错误跳转等方便编程的功能。
vim详情
1、vi/vim 的使⽤
基本上 vi/vim 共分为三种模式,分别是:
命令模式(Command mode),输⼊模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作⽤分别是:
1)命令模式:
用户刚刚启动 vi/vim,便进⼊了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,⽽⾮输⼊字符。⽐如我们此时按下i,并不会输⼊⼀个字符,i被当作了⼀个命令。
2、常用的几个命令:
i 切换到输⼊模式,以输⼊字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输⼊命令。
3、在vim下编辑文本
若想要编辑⽂本:启动Vim,进⼊了命令模式,命令模式只有⼀些最基本的命令,因此仍要依靠底线命令模式输⼊更多命令,故按下i,切换到输⼊模式。
在输入模式里可以使用以下按键:
1)字符按键以及Shift组合 :输⼊字符
2)ENTER,回⻋键 :换⾏
3)BACK SPACE,退格键 :删除光标前⼀个字符
4)DEL,删除键 :删除光标后⼀个字符
5)方向键 :在文本中移动光标
6)HOME/END :移动光标到⾏⾸/⾏尾
7)Page Up/Page Down :上/下翻⻚
8)Insert :切换光标为输⼊/替换模式,光标将变成竖线/下划线
9)ESC :退出输⼊模式,切换到命令模式
当编辑完成后,点击 ESC ,切换到命令模式,在命令模式下按下:(英⽂冒号)就进⼊了底线命令模式。
在底线命令模式里可以输⼊单个或多个字符的命令,可⽤的命令⾮常多,
底线命令模式可以输⼊单个或多个字符的命令,可⽤的命令⾮常多。基本的命令有(已经省略了冒号):
1)q 退出程序
2)w 保存⽂件
3)按ESC键可随时退出底线命令模式
18、文件查找
1)find
find是最常⻅和最强⼤的查找命令,你可以⽤它找到任何你想找的⽂件。
使用格式 :find <指定动作> <指定⽬录> <指定条件>
//查找名称里有nginx的位置
[root@centos-master ~]# find / -name nginx
/usr/local/nginx
/usr/local/nginx/sbin/nginx
//查找是所有名称里有nginx的位置
[root@centos-master ~]# find / -name nginx*
/sys/fs/cgroup/blkio/system.slice/nginx.service
/sys/fs/cgroup/pids/system.slice/nginx.service
/sys/fs/cgroup/cpu,cpuacct/system.slice/nginx.service
/sys/fs/cgroup/memory/system.slice/nginx.service
/sys/fs/cgroup/devices/system.slice/nginx.service
/sys/fs/cgroup/systemd/system.slice/nginx.service
/etc/systemd/system/multi-user.target.wants/nginx.service
/usr/local/nginx
/usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx.old
/usr/local/nginx/logs/nginx.pid
/usr/local/nginx/conf/nginx.conf.default
/usr/local/nginx/conf/nginx.conf.bak
/usr/local/nginx/conf/nginx.conf
/usr/lib/python3.6/site-packages/sos/report/plugins/nginx.py
/usr/lib/python3.6/site-packages/sos/report/plugins/__pycache__/nginx.cpython-36.pyc
/usr/lib/python3.6/site-packages/sos/report/plugins/__pycache__/nginx.cpython-36.opt-1.pyc
/usr/lib/systemd/system/nginx.service
//表示⼀个字符
[root@centos-master ~]# find / -name ngin?
/usr/local/nginx
/usr/local/nginx/sbin/nginx
//在根⽬录下查找⼤于 100000M 的⽂件
[root@centos-master ~]# find / -size +404800
/root/mq/otp_src_23.0.tar.gz
/proc/kcore
find: ‘/proc/177079/task/177079/fd/6’: No such file or directory
find: ‘/proc/177079/task/177079/fdinfo/6’: No such file or directory
find: ‘/proc/177079/fd/5’: No such file or directory
find: ‘/proc/177079/fdinfo/5’: No such file or directory
2)Whereis
whereis命令只能⽤于程序名的搜索,⽽且只搜索⼆进制⽂件(参数-b)、man说明⽂件(参数-m)和源代码⽂件(参数-s)。
[root@centos-master ~]# whereis nginx
nginx: /usr/local/nginx
3)which
which命令的作⽤是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第⼀个搜索结果。
[root@centos-master ~]# which aaa.sh
./aaa.sh
19、输出命令
1)echo
Shell 的 echo 指令,⽤于字符串的输出
[root@centos-master ~]# echo "今年考研太卷了"
今年考研太卷了
2)printf
printf 的脚本⽐使⽤ echo 移植性好。
printf 使⽤引⽤⽂本或空格分隔的参数,外⾯可以在 printf 中使⽤格式化字符串,还可以制定字符串的宽度、左右对⻬⽅式等。默认 printf 不会像 echo ⾃动添加换⾏符,我们可以⼿动添加\n。
[root@centos-master ~]# printf "你说这个帅不帅 \n"
你说这个帅不帅
[root@centos-master ~]# printf "我的名字是:%s,我的年龄是:%d,我的职位是:%s" 无根 20 学生
我的名字是:无根,我的年龄是:20,我的职位是:学生
创建 .sh 文件时,%符号代表:
\n:换行
\t:空格
%s:字符串
%d:整型数字
%f:带小数点的数字
20、文件传输
不同的linux终端之间的文件传输。
scp 文件名 账户名@101.43.158.84:/传到哪个目录下
21、文件压缩
1)zip
zip中,压缩和解压后源文件还会被保留,可以把多个文件压缩到一个压缩包中
zip可以压缩文件夹。
zip 压缩后压缩包的名称.zip 需要压缩的文件名:文件压缩到压缩包
2)gz
gz中,压缩和解压后源文件不会被保留,只能把多个文件分别进行压缩。gzip不能压缩文件夹。
gzip 要压缩的文件名:压缩文件
3)tar
(1)压缩命令:tar -选项 压缩后的文件名.tar 需要压缩的文件
".tar" 格式的打包和解打包都使用 tar 命令,区别只是选项不同。
其中,".tar" 格式打包命令选项
-c:打包
-f:指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名。
-v:显示打包文件过程
(2)tar -选项 压缩包名称
其中,tar 解压命令选项
-x:解打包
-f:指定压缩包的文件名
-v:显示解打包文件过程
4)tar.gz
(1)压缩
命令:tar -j选项 压缩后的文件名.tar.gz 需要压缩的文件
其中,".tar" 格式打包命令选项
-c:打包
-f:指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名。
-v:显示打包文件过程
(2)解压
tar -j选项 压缩包名称
tar -zxvf 压缩包名称
其中,tar 解压命令选项
-x:解打包
-f:指定压缩包的文件名
-v:显示解打包文件过程
22、用户管理
1)用户创建
useradd 用户名:创建用户使用的命令
2)用户删除
userdel 用户名:删除⽤户使用的命令
3)设置密码
passwd 用户名:设置命令使用的命令
4)切换用户
su - 用户名(-和用户名之间需要有空格)