linux学习笔记
Posted 野生java研究僧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux学习笔记相关的知识,希望对你有一定的参考价值。
linux学习笔记
- 1.操作系统的发展史
- 2.linux 介绍
- 3.命令行的基本用法
- 4.Linux命令
- 5.软件安装
- 6.vim编辑器
- 7.文本编辑命令
- 8.linux防火墙
- 9.shell 脚本编程
1.操作系统的发展史
如果命令太多记不住怎么办?推荐个不错的网站:https://www.linuxcool.com ,我们只需要过一遍,完全不用记,用到的时候再查询即可
1.2 Unix
- 1965年之前,电脑只有军事或者学院的研究机构碰的起,当时大型主机至多能提供30台终端(30个键盘、显示器)的连接。
- 1965年左后由贝尔实验室、麻省理工学院 以及 通用电气共同发起了Multics项目,想让大型主机支持300台终端
- 1969年前后这个项目进度缓慢,资金短缺,贝尔实验室退出了研究
- 1969年从这个项目中退出的Ken Thompson当时在实验室无聊时,为了让一台空闲的电脑上能够运行“星际旅行”游戏,在8月份左右趁着其妻子探亲的时间,用了1个月的时间编写出了 Unix操作系统的原型
- 1970年,美国贝尔实验室的 Ken Thompson,以 BCPL语言 为基础,设计出很简单且很接近硬件的 B语言(取BCPL的首字母),并且他用B语言写了第一个UNIX操作系统。
- 因为B语言的跨平台性较差,为了能够在其他的电脑上也能够运行这个非常棒的Unix操作系统,Dennis Ritchie和Ken Thompson 从B语言的基础上准备研究一个更好的语言
- 1972年,美国贝尔实验室的 Dennis Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言
- 1973年初,C语言的主体完成。Thompson和Ritchie迫不及待地开始用它完全重写了现在大名鼎鼎的Unix操作系统
1.2 Minix
因为AT&T(通用电气)的政策改变,在Version 7 Unix推出之后,发布新的使用条款,将UNIX源代码私有化,在大学中不再能使用UNIX源代码。Andrew S. Tanenbaum(塔能鲍姆)教授为了能在课堂上教授学生操作系统运作的实务细节,决定在不使用任何AT&T的源代码前提下,自行开发与UNIX兼容的操作系统,以避免版权上的争议。他以小型UNIX(mini-UNIX)之意,将它称为MINIX。
1.3Minix
因为Minix只是教学使用,因此功能并不强,因此Torvalds利用GNU的bash当做开发环境,gcc当做编译工具,编写了Linux内核-v0.02,但是一开始Linux并不能兼容Unix,即Unix上跑的应用程序不能在Linux上跑,即应用程序与内核之间的接口不一致,因为Unix是遵循POSIX规范的,因此Torvalds修改了Linux,并遵循POSIX(Portable Operating System Interface,他规范了应用程序与内核的接口规范); 一开始Linux只适用于386,后来经过全世界的网友的帮助,最终能够兼容多种硬件
1.4 Minix 没有火起来的原因
Minix的创始人说,MINIX 3没有统治世界是源于他在1992年犯下的一个错误,当时他认为BSD必然会一统天下,因为它是一个更稳定和更成熟的系统,其它操作系统难以与之竞争。因此他的MINIX的重心集中在教育上。四名BSD开发者已经成立了一家公司销售BSD系统,他们甚至还有一个有趣的电话号码1-800-ITS-UNIX。然而他们正因为这个电话号码而惹火上身。美国电话电报公司因电话号码而提起诉讼。官司打了三年才解决。在此期间,BSD陷于停滞,而Linux则借此一飞冲天。他的错误在于没有意识官司竟然持续了如此长的时间,以及BSD会因此受到削弱。如果美国电话电报公司没有起诉,Linux永远不会流行起来,BSD将统治世界。
2.linux 介绍
2.1 Linux内核版本
内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。
Linux内核版本又分为稳定版和开发版,两种版本是相互关联,相互循环:
- 稳定版:具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些bug或加入一些新的驱动程序。
- 开发版:由于要试验各种解决方案,所以变化很快。
内核源码网址:http://www.kernel.org 所有来自全世界的对Linux源码的修改最终都会汇总到这个网站,由Linus领导的开源社区对其进行甄别和修改最终决定是否进入到Linux主线内核源码中。
2.2 Linux发行版本
Linux发行版 (也被叫做 GNU/Linux 发行版) 通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
2.3 Linux目录结构
- :根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
- /bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
- /boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
- /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。
- /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
- /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,表示当前用户的家目录,edu 表示用户 edu 的家目录。
- /lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
- /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
- /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
- /opt:给主机额外安装软件所摆放的目录。
- /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
- /root:系统管理员root的家目录。
- /sbin: /usr/sbin: /usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。
- /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
- /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
- /usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。
- /var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。
2.4 用户目录
位于/home/user,称之为用户工作目录或家目录,表示方式:
/home/user
~
从/目录开始描述的路径为绝对路径,如:
cd /home
ls /usr
从当前位置开始描述的路径为相对路径,如:
cd ../../
ls abc/def
每个目录下都有**.和…**
. 表示当前目录
… 表示上一级目录,即父目录
根目录下的.和…都表示当前目录
文件的颜色 | 含义 |
---|---|
蓝色 | 目录 |
绿色 | 可执行文件 |
红色 | 压缩文件 |
浅蓝色 | 链接文件 |
灰色 | 其他文件 |
3.命令行的基本用法
3.1 命令的使用方式
linux命令格式:
command [-options] [parameter1] …
command: 命令名; [-options]:选项,可用来对命令进行控制,也可以省略,[]代表可选
parameter1 …:传给命令的参数:可以是零个一个或多个
3.2 查看帮助文档
help
一般是linux命令自带的帮助信息
一般是linux命令自带的帮助信息
如:ls --help
man(manual)
man是linux提供的一个手册,包含了绝大部分的命令、函数使用说明
该手册分成很多章节(section),使用man时可以指定不同的章节来浏览。
例:man ls ; man 2 printf
man中各个section意义如下:
- Standard commands(标准命令)
- System calls(系统调用,如open,write)
- Library functions(库函数,如printf,fopen)
- Special devices(设备文件的说明,/dev下各种设备)
- File formats(文件格式,如passwd)
- Games and toys(游戏和娱乐)
- Miscellaneous(杂项、惯例与协定等,例如Linux档案系统、网络协定、ASCII 码;environ全局变量)
- Administrative Commands(管理员命令,如ifconfig)
man是按照手册的章节号的顺序进行搜索的。
man设置了如下的功能键:
功能键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter键 | 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出man命令 |
h | 列出所有功能键 |
/word | 搜索word字符串 |
3.3 tab 自动补全
在敲出命令的前几个字母的同时,按下tab键,系统会自动帮我们补全命令
3.4 history游览历史
当系统执行过一些命令后,可按上下键翻看以前的命令,history将执行过的命令列举出来
history保留了最近执行的命令记录,默认可以保留1000。
历史清单从0开始编号到最大值。
常见用法:
history N 显示最近N条命令
history -c 清除所有的历史记录
history -w xxx.txt 保存历史记录到文本xxx.txt
3.5 命令行中的ctrl组合键
- Ctrl+c 结束正在运行的程序
- Ctrl+d 结束输入或退出shell
- Ctrl+s 暂停屏幕输出【锁住终端】
- Ctrl+q 恢复屏幕输出【解锁终端】
- Ctrl+l 清屏,【是字母L的小写】等同于Clear
- 当前光标到行首:ctrl+a
- 当前光标到行尾:ctrl+e
- 删除当前光标到行首:ctrl+u
- 删除当前光标到行尾:ctrl+k
- Ctrl+y 在光标处粘贴剪切的内容
- Ctrl+r 查找历史命令【输入关键字,就能调出以前执行过的命令】
- Ctrl+t 调换光标所在处与其之前字符位置,并把光标移到下个字符
- Ctrl+x+u 撤销操作
- Ctrl+z 转入后台运行
4.Linux命令
4.1 文件内容查看
cat
语法:
cat [-AbEnTv] 文件名
选项与参数:
- -A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
- -v :列出一些看不出来的特殊字符
- -E :将结尾的断行字节 $ 显示出来;
- -T :将 [tab] 按键以 ^I 显示出来;
- -b :列出行号,空白行不标行号
- -n :列出行号,连同空白行也会有行号
tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl
nl [-bnw] 文件
选项与参数:
- -b :指定行号指定的方式,主要有两种:
- -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
- -b t :如果有空行,空的那一行不要列出行号(默认值);
- -n :列出行号表示的方法,主要有三种:
- -n ln :行号在荧幕的最左方显示;
- -n rn :行号在自己栏位的最右方显示,且不加 0 ;
- -n rz :行号在自己栏位的最右方显示,且加 0 ;
- -w :行号栏位的占用的位数
more
more运行时可以输入的命令有:
- 空白键 (space):代表向下翻一页;
- Enter :代表向下翻『一行』;
- /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
- :f :立刻显示出档名以及目前显示的行数;
- q :代表立刻离开 more ,不再显示该文件内容。
- b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less
- 空白键 :向下翻动一页;
- [pagedown]:向下翻动一页;
- [pageup] :向上翻动一页;
- /字串 :向下搜寻『字串』的功能;
- ?字串 :向上搜寻『字串』的功能;
- n :重复前一个搜寻 (与 / 或 ? 有关!)
- N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
- q :离开 less 这个程序;
head
head [-n number] 文件
选项与参数:
- -n :后面接数字,代表显示几行的意思
tail
tail取出文件后面几行
语法:
tail [-n number] 文件
1
选项与参数:
- -n :后面接数字,代表显示几行的意思
- -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
4.2 文件管理
输出重定向
可将本应显示在终端上的内容保存到指定文件中。
如:ls > test.txt ( test.txt 如果不存在,则创建,存在则覆盖其内容
类型 | 操作符 | 用途 |
---|---|---|
重定向输入 | < | 从指定文件读取数据 |
重定向输出 | > | 将标准输出结果保存到指定的文件,并且覆盖原有文件 |
>> | 将标准输出追加到指定的文件的尾部,不覆盖原有内容 | |
标准错误输出 | 2> | 将错误信息保存到指定文件,并且覆盖原有文件 |
2>> | 将错误信息追加到指定文件的尾部,不覆盖原有内容 | |
混合输出 | &>和2>&1 | 将标准输出,标准错误保存到同—文件中 |
管道 |
管道:一个命令的输出可以通过管道做为另一个命令的输入。
“ | ”的左右分为两端,从左端写入到右端。
清屏:clear
clear作用为清除终端上的显示(类似于DOS的cls清屏功能),快捷键:Ctrl + l ( “l” 为字母 )。
切换工作目录: cd
- Linux所有的目录和文件名大小写敏感
cd后面可跟绝对路径,也可以跟相对路径。如果省略目录,则默认切换到当前用户的主目录。
命令 | 含义 |
---|---|
cd | 相当于cd ~ |
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
cd . | 切换到当前目录 |
cd … | 切换到上级目录 |
cd - | 进入上次所在的目录 |
显示当前路径:pwd
选项与参数:
- -P :显示出确实的路径,而非使用连结 (link) 路径。
创建目录:mkdir
mkdir可以创建一个新的目录。
注意:新建目录的名称不能与当前目录中已有的目录或文件同名,并且目录创建者必须对当前目录具有写权限。
语法:
mkdir [-mp] 目录名称
选项与参数:
-m :指定被创建目录的权限,而不是根据默认权限 (umask) 设定
-p :递归创建所需要的目录
mkdir创建的目录权限默认根据umask得到,而-m参数可以指定被创建目录的权限:
mkdir dirName -m 711
删除文件:rm
可通过rm删除文件或目录。使用rm命令要小心,因为文件删除后不能恢复。为了防止文件误删,可以在rm后使用-i参数以逐个确认要删除的文件。
常用参数及含义如下表所示:
参数 | 含义 |
---|---|
-i | 以进行交互式方式执行 |
-f | 强制删除,忽略不存在的文件,无需提示 |
-r | 递归地删除目录下的内容,删除文件夹时必须加此参数 |
rm -fr /* : 这个命令一定要慎用,这个是从从根路径下删除所有的文件,linux一切皆文件,如果整个系统的文件都被删除完了,那么系统都开不了机
建立链接文件:ln
软链接:ln -s 源文件 链接文件
硬链接:ln 源文件 链接文件
软链接类似于Windows下的快捷方式,如果软链接文件和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径。
硬链接只能链接普通文件不能链接目录。 两个文件占用相同大小的硬盘空间,即使删除了源文件,链接文件还是存在,所以-s选项是更常见的形式。
文本搜索:grep
Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。
grep常用参数:
参数 | 描述 |
---|---|
-i | 忽略大小写 |
-c | 只输出匹配行的数量 |
-l | 只列出符合匹配的文件名,不列出具体的匹配行 |
-n | 列出所有的匹配行,显示行号 |
-h | 查询多文件时不显示文件名 |
-s | 不显示不存在、没有匹配文本的错误信息 |
-v | 显示不包含匹配文本的所有行 |
-w | 匹配整词 |
-x | 匹配整行 |
-r | 递归搜索 |
-q | 禁止输出任何结果,已退出状态表示搜索是否成功 |
-b | 打印匹配行距文件头部的偏移量,以字节为单位 |
-o | 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位 |
-F | 匹配固定字符串的内容 |
-E | 支持扩展的正则表达式 |
grep一般格式为:
grep [-选项] '搜索关键词' 文件名
在grep命令中输入字符串参数时,最好引号或双引号括起来。例如:grep ‘a’ demo.txt。
grep -n "bash" jenkins.sh # 查询jenkins.sh这个文件是否有bash字符,并且显示行号
在当前目录中,查找前缀有test字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
grep sh *.sh #查询出当前目录下 以.sh结尾的文件 并且文件内容中包含有sh字符的文件
以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:
grep -r update /etc/acpi #以递归的方式查找“etc/acpi”
查询出某个文件中以某个字符开始
grep -n ^'#!/bin/bash' *.sh # 找出 当前目录下所有 .sh结尾的文件,开始位置为 #!/bin/bash 的文件,并且显示行号
查询多个文件:
grep 'bash' demo.sh jenkins.sh # 查询出 jenkins.sh和 demo.sh文件中包含bash的内容
判断某个文件中,是否包含某个关键词,通过返回状态值输出结果(0为包含,1为不包含),方便在Shell脚本中判断和调用:
[root@compass jenkins]# grep -q 'bash' jenkins.sh
[root@compass jenkins]# echo $?
0
grep搜索内容串可以是正则表达式,常用正则表达式:
查找文件:find
语法:
find path -option [ -print ] [ -exec -ok command ] \\;
find常用参数:
-name | 匹配名称 |
---|---|
-perm | 匹配权限(mode为完全匹配,-mode为包含即可) |
-user | 匹配所有者 |
-group | 匹配所有组 |
-mtime -n +n | 匹配修改内容的时间(-n指n天以内,+n指n天以前) |
-atime -n +n | 匹配访问文件的时间(-n指n天以内,+n指n天以前) |
-ctime -n +n | 匹配修改文件权限的时间(-n指n天以内,+n指n天以前) |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所有组的文件 |
-newer f1 !f2 | 匹配比文件f1新但比f2旧的文件 |
-type b/d/c/p/l/f | 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件) |
-size | 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件) |
-prune | 忽略某个目录 |
-exec …… ; | 后面可跟用于进一步处理搜索结果的命令 |
常用用法:
命令 | 含义 |
---|---|
find ./ -name test.sh | 查找当前目录下所有名为test.sh的文件 |
find ./ -name ‘*.sh’ | 查找当前目录下所有后缀为.sh的文件 |
find ./ -name “[A-Z]*” | 查找当前目录下所有以大写字母开头的文件 |
find /tmp -size 2M | 查找在/tmp 目录下等于2M的文件 |
find /tmp -size +2M | 查找在/tmp 目录下大于2M的文件 |
find /tmp -size -2M | 查找在/tmp 目录下小于2M的文件 |
find ./ -size +4k -size -5M | 查找当前目录下大于4k,小于5M的文件 |
find ./ -perm 0777 | 查找当前目录下权限为 777 的文件或目录 |
Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
拷贝文件:cp
语法:
cp [参数] 源路径 目标路径
cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令。
常用选项说明:
选项 含义
- -a 该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。
- -f 已经存在的目标文件而不提示
- -i 交互式复制,在覆盖目标文件之前将给出提示要求用户确认
- -r 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。
- -v 显示拷贝进度
- -l 创建硬链接(hard link),而非复制文件本身
- -s 复制成为符号链接 (symbolic link),相当于批量创建快捷方式
- -u 若 destination 比 source 旧才升级 destination !
- -d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
- -b 覆盖已存在的文件目标前将目标文件备份
- -p 保留源文件或目录的所有属性
移动文件:mv
语法:
mv [参数] 源路径 目标路径|文件名
mv命令用来移动文件或目录,也可以给文件或目录重命名。
常用选项说明:
-i | 若存在同名文件,则向用户询问是否覆盖 |
---|---|
-f | 覆盖已有文件时,不进行任何提示 |
-b | 当文件存在时,覆盖前为其创建一个备份 |
-u | 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作 |
归档管理:tar
tar使用格式 tar [参数] 打包文件名 文件
tar命令参数很特殊,其参数前面可以使用“-”,也可以不使用。
tar命令的功能是用于压缩和解压缩文件,能够制作出Linux系统中常见的.tar、.tar.gz、.tar.bz2等格式的压缩包文件。对于RHEL7、CentOS7版本以后的系统,解压时可以不加压缩格式参数(如z或j),系统能自动进行分析并解压。
把要传输的文件先进行压缩再进行传输,能够很好的提高工作效率,方便分享。
-A | 新增文件到以存在的备份文件 |
---|---|
-B | 设置区块大小 |
-c | 建立新的备份文件 |
-C <目录> | 仅压缩指定目录里的内容或解压缩到指定目录 |
-d | 记录文件的差别 |
-x | 从归档文件中提取文件 |
-t | 列出备份文件的内容 |
-z | 通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz |
-Z | 通过compress指令处理备份文件 |
-f<备份文件> | 指定备份文件 |
-v | 显示指令执行过程 |
-r | 添加文件到已经压缩的文件 |
-u | 添加改变了和现有的文件到已经存在的压缩文件 |
-j | 通过bzip2指令压缩/解压缩文件,文件名最好为*.tar.bz2 |
-v | 显示操作过程 |
-l | 文件系统边界设置 |
-k | 保留原有文件不覆盖 |
-m | 保留文件不被覆盖 |
-w | 确认压缩文件的正确性 |
-p | 保留原来的文件权限与属性 |
-P | 使用文件名的绝对路径,不移除文件名称前的“/”号 |
-N <日期格式> | 只将较指定日期更新的文件保存到备份文件里 |
– -exclude=<范本样式> | 排除符合范本样式的文件 |
– -remove-files | 归档/压缩之后删除源文件 |
我常用的解压和压缩文件命令
解压用法:tar -zxvf 文件名
压缩用法:tar zcvf 压缩包包名 文件1 文件2 …
文件压缩解压:gzip、bzip2
tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
gzip使用格式如下:
gzip [选项] 被压缩文件
常用参数:
-a | 使用ASCII文字模式 |
---|---|
-d | 解开压缩文件 |
-f | 强行压缩文件 |
-k | 保留原文件 |
-l | 列出压缩文件的相关信息 |
-c | 把压缩后的文件输出到标准输出设备,不去更动原始文件 |
-r | 递归处理,将指定目录下的所有文件及子目录一并处理 |
-q | 不显示警告信息 |
bzip2命令跟gzip用法类似
压缩用法:tar jcvf 压缩包包名 文件…(tar jcvf bk.tar.bz2 *.c)
解压用法:tar jxvf 压缩包包名 (tar jxvf bk.tar.bz2)
文件压缩解压:zip、unzip
通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名为zip。
压缩文件:zip [-r] 目标文件(没有扩展名) 源文件
解压文件:unzip -d 解压后目录文件 压缩文件
查看命令位置:which
4.3 权限管理
列出目录的内容:ls
Linux文件或者目录名称最长可以有265个字符,“.”代表当前目录,“…”代表上一级目录,以“.”开头的文件为隐藏文件,需要用 -a 参数才能显示。
ls常用参数:
-a | 显示所有文件及目录 (包括以“.”开头的隐藏文件) |
---|---|
-l | 使用长格式列出文件及目录的详细信息 |
-r | 将文件以相反次序显示(默认依英文字母次序) |
-t | 根据最后的修改时间排序 |
-A | 同 -a ,但不列出 “.” (当前目录) 及 “…” (父目录) |
-S | 根据文件大小排序 |
-R | 递归列出所有子目录 |
-d | 查看目录的信息,而不是里面子文件的信息 |
-i | 输出文件的inode节点信息 |
-m | 水平列出文件,以逗号间隔 |
-X | 按文件扩展名排序 |
–color | 输出信息中带有着色效果 |
列出的信息的含义:
ls支持通配符:
通配符 含义
- 文件代表文件名中所有字符
- ls te* 查找以te开头的文件
- ls html 查找结尾为html的文件
- *? 代表文件名中任意一个字符
- s ?.c 只找第一个字符任意,后缀为.c的文件
- ls a.? 只找只有3个字符,前2字符为a.,最后一个字符任意的文件[] [”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。“-”用于表示字符范围。
- [abc] 匹配a、b、c中的任意一个
- [a-f] 匹配从a到f范围内的的任意一个字符
- ls [a-f]* 找到从a到f范围内的的任意一个字符开头的文件
- ls a-f 查找文件名为a-f的文件,当“-”处于方括号之外失去通配符的作用
- \\ 如果要使通配符作为普通字符使用,可以在其前面加上转义字符。“?”和“”处于方括号内时不用使用转义字符就失去通配符的作用。
- ls *a 查找文件名为a的文件
显示inode的内容:stat
stat [文件或目录]
# stat jenkins.sh
File: ‘jenkins.sh’
Size: 516 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 4718597 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-12-21 20:08:39.125520609 +0800
Modify: 2022-12-12 22:49:16.023253223 +0800
Change: 2022-12-12 22:49:16.025253216 +0800
Birth: -
文件访问权限
用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:
- 读权限(r) :对于文件,具有读取文件内容的权限;对于目录,具有浏览目录的权限。
- 写权限(w) :对于文件,具有修改文件内容的权限;对于目录,具有删除、移动目录内文件的权限。
- 可执行权限(x): 对于文件,具有执行文件的权限;对于目录,该用户具有进入目录的权限。
通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。
第1个字母代表文件的类型:
- “d” 代表文件夹
- “-” 代表普通文件
- “c” 代表硬件字符设备
- “b” 代表硬件块设备
- “s”表示管道文件
- “l” 代表软链接文件。
后9个字母分别代表三组权限:文件所有者、用户组、其他用户拥有的权限。
修改文件权限: chmod
chmod 修改文件权限有两种使用格式:字母法与数字法
chmod 修改文件权限有两种使用格式:字母法与数字法。
字母法:chmod u/g/o/a +/-/= rwx 文件
[ u/g/o/a ] | 含义 |
---|---|
u | user 表示该文件的所有者 |
g | group 表示与该文件的所有者属于同一组( group )者,即用户组 |
o | other 表示其他以外的人 |
a | all 表示这三者皆是 |
[ ±= ] 含义 | |
---|---|
+ | 增加权限 |
- | 撤销权限 |
= | 设定权限 |
rwx | 含义 |
---|---|
r | write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。 |
w | read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。 |
x | excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。 |
数字法:“rwx” 这些权限也可以用数字来代替
字母 | 说明 |
---|---|
r | 读取权限,数字代号为 “4” |
w | 写入权限,数字代号为 “2” |
x | 执行权限,数字代号为 “1” |
- | 不具任何权限,数字代号为 “0” |
如执行:chmod u=rwx,g=rx,o=r filename 就等同于:chmod u=7,g=5,o=4 filename
chmod 751 file:
- 文件所有者:读、写、执行权限
- 同组用户:读、执行的权限
- 其它用户:执行的权限
chmod 777 file:所有用户拥有读、写、执行权限
注意:如果想递归所有目录加上相同权限,需要加上参数“ -R ”。 如:chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限
修改文件所属组:chgrp
常用参数:
-c | 效果类似”-v”参数,但仅回报更改的部分 |
---|---|
-f | 不显示错误信息 |
-h | 对符号连接的文件作修改,而不更动其他任何相关文件 |
-R | 递归处理,将指定目录下的所有文件及子目录一并处理 |
-v | 显示指令执行过程 |
–reference | 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同 |
改变文件的群组属性:
chgrp -v groupName file
4.4 系统管理
查看当前日历:cal
常用参数:
-l | 单月分输出日历 |
---|---|
-3 | 显示最近三个月的日历 |
-s | 将星期天作为月的第一天 |
-m | 将星期一作为月的第一天 |
-j | 显示在当年中的第几天(儒略日) |
-y | 显示当年的日历 |
显示或设置时间:date
设置时间格式(需要管理员权限):
date [MMDDhhmm[[CC]YY][.ss]] +format
常用参数:
-d datestr | 显示 datestr 中所设定的时间 (非系统时间) |
---|---|
-s datestr | 将系统时间设为 datestr 中所设定的时间 |
-u | 显示目前的格林威治时间 |
–help | 显示帮助信息 |
–version | 显示版本编号 |
按照“年-月-日”的指定格式输出系统当前的日期信息:
date "+%Y-%m-%d"
2022-05-11
设置当前系统为指定的日期和时间:
date -s "20221101 8:30:00"
Sun Nov 1 08:30:00 CST 2022
查看进程信息:ps
进程是一个具有一定独立功能的程序,它是操作系统动态执行的基本单元。
ps命令选项:
ps | 描述 |
---|---|
ps a | 显示现行终端机下的所有程序,包括其他用户的程序。 |
ps -A | 显示所有程序。 |
ps c | 列出程序时,显示每个程序真正的指令名称,而不包含路 径,参数或常驻服务的标示。 |
ps -e | 此参数的效果和指定"A"参数相同。 |
ps e | 列出程序时,显示每个程序所使用的环境变量。 |
ps f | 用ASCII字符显示树状结构,表达程序间的相互关系。 |
ps -H | 显示树状结构,表示程序间的相互关系。 |
ps -N | 显示所有的程序,除了执行ps指令终端机下的程序之外。 |
ps s | 采用程序信号的格式显示程序状况。 |
ps u | 以用户为主的格式来显示程序状况。 |
ps x | 显示所有程序,不以终端机来区分。 |
常用选项说明:
选项 | 含义 |
---|---|
-a | 显示终端上的所有进程,包括其他用户的进程 |
-u | 显示进程的详细状态 |
-x | 显示没有控制终端的进程 |
-w | 显示加宽,以便显示更多的信息 |
-r | 只显示正在运行的进程 |
常见用法:
- ps -e 查看所有进程信息(瞬时的)
- ps -u root -N 查看所有不是root运行的进程
- ps ax 显示所有进程状态状态
- ps -ef |grep xxx 显示含有xxx的进程
以树状图显示进程关系:pstree
用参数:
-a | 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示 |
---|---|
-c | 不使用精简标示法 |
-G | 使用VT100终端机的列绘图字符 |
-h | 列出树状图时,特别标明现在执行的程序 |
动态显示进程:top
top命令用来动态显示运行中的进程。top命令能够在运行后,在指定的时间间隔更新显示信息。-d参数可以指定显示信息更新的时间间隔。
在top命令执行后,可以按下按键得到对显示的结果进行排序:
按键 | 含义 |
---|---|
M | 根据内存使用量来排序 |
P | 根据CPU占有率来排序 |
T | 根据进程运行时间的长短来排序 |
U | 可以根据后面输入的用户名来筛选进程 |
K | 可以根据后面输入的PID来杀死进程。 |
q | 退出 |
h | 获得帮助 |
终止进程:kill
kill命令指定进程号的进程,需要配合 ps 使用。
使用格式:skill [选项] 进程id
信号值从0到15,其中9为绝对终止,可以处理一般信号无法终止的进程。
常用参数:
v | 详细输出/ 列出所选择程序的资讯 |
---|---|
-n | 没有动作/ 显示程序代号 |
-t | 终端机代号 |
-u | 使用者名称 |
-w | 智能警告讯息/ 尚未完成 |
停止三个使用者 user1、user2、user3:
skill -STOP user1 user2 user3
冻结16514号进程:
skill -STOP 16514
冻结oracle进程:
skill -STOP oracle
唤醒进程:
skill -CONT 16514
关机重启:reboot、shutdown、init
命令 | 含义 |
---|---|
reboot | 重新启动操作系统 |
shutdown –r now | 重新启动操作系统,shutdown会给别的用户提示 |
shutdown -h now | 立刻关机,其中now相当于时间为0的状态 |
shutdown -h 20:25 | 系统在今天的20:25 会关机 |
shutdown -h +10 | 系统再过十分钟后自动关机 |
init 0 | 关机 |
init 6 | 重启 |
检测磁盘空间:df
df命令用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对节点和磁盘块的使用情况。
选项 | 含义 |
---|---|
-a | 显示所有文件系统的磁盘使用情况 |
-m | 以1024字节为单位显示 |
-t | 显示各指定文件系统的磁盘空间使用情况 |
-T | 显示文件系统 |
文件系统 类型 容量 已用 可用 已用% 挂载点
udev devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 394M 6.4M 388M 2% /run
/dev/sda1 ext4 21G 8.7G 11G 45% /
tmpfs tmpfs 2.0G 256K 2.0G 1% /dev/shm
tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs tmpfs 394M 44K 394M 1% /run/user/1000
检测目录所占磁盘空间:du
du命令用于统计目录或文件所占磁盘空间的大小,该命令的执行结果与df类似,du更侧重于磁盘的使用状况。
du命令的使用格式如下: du [选项] 目录或文件名
选项 | 含义 |
---|---|
-a | 递归显示指定目录中各文件和子目录中文件占用的数据块 |
-s | 显示指定文件或目录占用的数据块 |
-b | 以字节为单位显示磁盘占用情况 |
-l | 计算所有文件大小,对硬链接文件计算多次 |
查看或配置网卡信息:ifconfig
ifconfig显示所有网卡的信息:
[root@compass jenkins]# ifconfig
ens33 Link encap:以太网 硬件地址 00:0c:29:59:65:f2
inet 地址:192.168.40.11 广播:192.168.40.255 掩码:255.255.255.0
inet6 地址: fe80::432f:6c4a:f47d:5f6b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:422794 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:208666 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:603741383 (603.7 MB) 发送字节:12819550 (12.8 MB)
lo Link encap:本地环回
inet 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 跃点数:1
接收数据包:2248 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:2248 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1
接收字节:497588 (497.5 KB) 发送字节:497588 (497.5 KB)
修改ip:
sudo ifconfig ens33 192.168.40.10
测试远程主机连通性:ping
4.5 用户和用户组管理
查看登录用户:who
who命令用于查看当前所有登录系统的用户信息。
以上是关于linux学习笔记的主要内容,如果未能解决你的问题,请参考以下文章