文章目录
前言
考研结束,基础知识也该补起来,视情况可能会把整理的东西放上来。大多数可能都只是摘抄整理,当笔记的东西,不喜勿喷。
1 基础知识
1.1 各版本
1.2 系统启动过程
- https://www.runoob.com/linux/linux-system-boot.html
内核的引导 -> 运行 init -> 系统初始化 -> 建立终端 -> 用户登录系统
1.3 Linux树状目录机构
https://www.runoob.com/linux/linux-system-contents.html
- /boot:启动Linux时使用的一些核心文件
- /dev: 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的
- /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
- /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序
1.4 Linux 忘记密码解决方法
https://www.runoob.com/linux/linux-forget-password.html
简便方法,重启,进入单用户模式修改密码
1.5 文件基本属性
https://www.runoob.com/linux/linux-file-attr-permission.html
权限 链接数 所有者 用户组 大小 时间 文件名
2 更改文件属性
2.1 chgrp:更改文件属组
语法:
chgrp [-R] 属组名 文件名
参数选项:
- -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改
2.2 chown:更改文件属主,也可以同时更改文件属组
语法:
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
2.3 chmod:更改文件9个属性
Linux文件属性有两种设置方法,一种是数字,一种是符号
r:4 w:2 x:1
3 处理目录的常用命令
- ls: 列出目录
- cd:切换目录
- pwd:显示目前的目录
- mkdir:创建一个新的目录
- rmdir:删除一个空的目录
- cp: 复制文件或目录
- rm: 移除文件或目录
- mv: 移动文件与目录,或修改文件与目录的名称
4 文件内容查看
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
- nl 显示的时候,顺道输出行号!
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- head 只看头几行
- tail 只看尾巴几行
4.1 more
[root@www ~]# more /etc/man_db.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
--More--(28%) <== 重点在这一行喔!你的光标也会在这里等待你的命令
- 空白键 (space):代表向下翻一页;
- Enter :代表向下翻『一行』;
- /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
- :f :立刻显示出档名以及目前显示的行数;
- q :代表立刻离开 more ,不再显示该文件内容。
- b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
5 用户和用户组管理
https://www.runoob.com/linux/linux-user-manage.html
5.1 /etc/passwd
# cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/home/sam:/bin/sh
格式:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
- 用户标识号:通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500
- 组标识号:它对应着/etc/group文件中的一条记录
5.2 /etc/shadow
# cat /etc/shadow
root:Dnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::
bin:*::0:0::::
sys:*::0:0::::
adm:*::0:0::::
uucp:*::0:0::::
nuucp:*::0:0::::
auth:*::0:0::::
cron:*::0:0::::
listen:*::0:0::::
lp:*::0:0::::
sam:EkdiSECLWPdSa:9740:0:0::::
格式:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
5.3 /etc/group
root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam
格式:
组名:口令:组标识号:组内用户列表
6 磁盘管理
- df:列出文件系统的整体磁盘使用量
- du:检查磁盘空间使用量
- fdisk:用于磁盘分区
6.1 df
格式:
df [-ahikHTm] [目录或文件名]
选项与参数:
- -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统
- -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示
6.2 du
与df命令不同的是Linuxdu命令是对文件和目录磁盘使用的空间的查看
语法:
du [-ahskm] 文件或目录名称
选项与参数:
- -s :列出总量而已,而不列出每个各别的目录占用容量
7 vi/vim
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
7.1 搜索替换
7.2 删除、复制
- gg:是让光标移到首行,在vim才有效,vi中无效
- yG:复制游标所在行到最后一行的所有数据
- dG:删除光标所在到最后一行的所有数据
- dd:删除游标所在的那一整行(常用)
史上最全Vim快捷键键位图:https://www.runoob.com/w3cnote/all-vim-cheatsheat.html
7.3 底线命令模式常用命令
- :set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
8 apt
apt-cache search # ------(package 搜索包)
apt-cache show #------(package 获取包的相关信息,如说明、大小、版本等)
apt-get install # ------(package 安装包)
apt-get install # -----(package --reinstall 重新安装包)
apt-get -f install # -----(强制安装, "-f = --fix-missing"当是修复安装吧...)
apt-get remove #-----(package 删除包)
apt-get remove --purge # ------(package 删除包,包括删除配置文件等)
apt-get autoremove --purge # ----(package 删除包及其依赖的软件包+配置文件等(只对6.10有效,强烈推荐))
apt-get update #------更新源
apt-get upgrade #------更新已安装的包
apt-get dist-upgrade # ---------升级系统
apt-get dselect-upgrade #------使用 dselect 升级
apt-cache depends #-------(package 了解使用依赖)
apt-cache rdepends # ------(package 了解某个具体的依赖,当是查看该包被哪些包依赖吧...)
apt-get build-dep # ------(package 安装相关的编译环境)
apt-get source #------(package 下载该包的源代码)
apt-get clean && apt-get autoclean # --------清理下载文件的存档 && 只清理过时的包
apt-get check #-------检查是否有损坏的依赖
dpkg -S filename -----查找filename属于哪个软件包
apt-file search filename -----查找filename属于哪个软件包
apt-file list packagename -----列出软件包的内容
apt-file update --更新apt-file的数据库
9 查找文件
- which 查看可执行文件的位置。
- whereis 查看文件的位置。
- locate 配合数据库查看文件位置。
- find 实际搜寻硬盘查询文件名称。
9.1 which
root@vultr:~# which whoami
/usr/bin/whoami
9.2 whereis
whereis 及 locate 都是基于系统内建的数据库进行搜索,因此效率很高,而find则是遍历硬盘查找文件
常用参数:
- -b 定位可执行文件。
- -m 定位帮助文件。
- -s 定位源代码文件。
- -u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
9.3 locate
常用参数:
- -l num(要显示的行数)
- -f 将特定的档案系统排除在外,如将proc排除在外
- -r 使用正则运算式做为寻找条件
查找 /var 目录下,以 reason 结尾的文件:
locate -r '^/var.*reason$'(其中.表示一个字符,*表示任务多个;.*表示任意多个字符)
9.4 find
语法:
find pathname -options [-print -exec -ok ...]
命令参数:
- pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
- -print: find命令将匹配的文件输出到标准输出。
- -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和\;之间的空格。
- -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
命令选项:
- -name 按照文件名查找文件
- -newer 如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项
- 查找 48 小时内修改过的文件
find -atime -2
- 在当前目录查找 以 .log 结尾的文件。 . 代表当前目录
find ./ -name '*.log'
10 crontab 定时任务
https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html
https://www.cnblogs.com/peida/archive/2013/01/08/2850483.html
语法:
crontab [ -u user ] file
或
crontab [ -u user ] { -l | -r | -e }
参数选项:
- -e : 执行文字编辑器来设定时程表
- -l : 列出目前的时程表
- -r : 删除目前的时程表
10.1 crontab文件格式
crontab执行时间计算:https://tool.lu/crontab/
11 tar命令
tar 本身不具有压缩功能,只具有打包功能,有关压缩及解压是调用其它的功能来完成。
打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件
常用参数:
- -c 建立新的压缩文件
- -f 指定压缩文件
- -r 添加文件到已经压缩文件包中
- -u 添加改了和现有的文件到压缩包中
- -x 从压缩包中抽取文件
- -t 显示压缩文件中的内容
- -z 支持gzip压缩
- -j 支持bzip2压缩
- -Z 支持compress解压文件
- -v 显示操作过程
- 将 /etc 下的所有文件及目录打包到指定目录,并使用 gz 压缩
tar -zcvf /tmp/etc.tar.gz /etc
- 查看刚打包的文件内容(一定加z,因为是使用 gzip 压缩的)
tar -ztvf /tmp/etc.tar.gz
- 解压文件
tar -zxvf /tmp/etc.tar.gz
12 ln命令
链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
软链接:
- 1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 2.软链接可以 跨文件系统 ,硬链接不可以
- 3.软链接可以对一个不存在的文件名进行链接
- 4.软链接可以对目录进行链接
硬链接:
- 1.硬链接,以文件副本的形式存在。但不占用实际空间。
- 2.不允许给目录创建硬链接
- 3.硬链接只有在同一个文件系统中才能创建
语法:
ln [参数][源文件或目录][目标文件或目录]
参数:
- -s 软链接(符号链接)
- -n 把符号链接视为一般目录
- -i 交互模式,文件存在则提示用户是否覆盖
- -f 强制执行
- 给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:
ln -s log2013.log link2013
输出:
[root@localhost test]# ll
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
[root@localhost test]# ln -s log2013.log link2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
- 给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同
ln log2013.log ln2013
输出:
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
[root@localhost test]# ln log2013.log ln2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 2 root bin 61 11-13 06:03 ln2013
-rw-r--r-- 2 root bin 61 11-13 06:03 log2013.log
13 grep
正则表达式元字符:https://www.runoob.com/regexp/regexp-metachar.html
语法:
grep [option] pattern file|dir
参数:
- -i 忽略大小写
- -l 只列出文件内容符合指定的样式的文件名称
- -R 递归查找文件夹
- -c --count 计算符合样式的列数
- 查找指定进程个数
ps -ef | grep svn -c
- 从文件中读取关键词
cat test1.txt | grep -f key.log
- 从文件夹中递归查找以grep开头的行,并只列出文件
grep -lR '^grep' /tmp
14 wc
统计指定的文件中字节数、字数、行数,并将统计结果输出
语法:
wc [option] file..
参数:
-c 统计字节数
-l 统计行数
-m 统计字符数
-w 统计词数,一个字被定义为由空白、跳格或换行字符分隔的字符串
15 ps
用来查看当前运行的进程状态,一次性查看,如果需要动态连续结果使用 top
ps 工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
参数:
-A 显示所有进程
-a 显示同一终端下所有进程
a 显示所有终端下所有进程
-aux 显示所有包含其他使用者的行程(较详细信息)
c 显示进程真实名称
f 显示进程间的关系
16 kill
发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用"-KILL" 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。
先使用ps查找进程pro1,然后用kill杀掉
kill -9 $(ps -ef | grep pro1)
17 netstat
语法:
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
参数:
-a或--all 显示所有连线中的Socket。
-A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。
-t或--tcp 显示TCP传输协议的连线状况。
-u或--udp 显示UDP传输协议的连线状况。
-n或--numeric 直接使用IP地址,而不通过域名服务器。
-l或--listening 显示监控中的服务器的Socket。
-p或--programs 显示正在使用Socket的程序识别码和程序名称。
- 查看服务及监听端口
netstat -nlp
18 free
显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。
参数:
-b 以Byte显示内存使用情况
-k 以kb为单位显示内存使用情况
-m 以mb为单位显示内存使用情况
-g 以gb为单位显示内存使用情况
-s<间隔秒数> 持续显示内存
-t 显示内存使用总合