请多多支持博主,点赞关注一起进步哦~
文章目录
一、认识操作系统
1.1、操作系统简介
- 操作系统(Operation System,简称OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石;
- 操作系统本质上是运行在计算机上的软件程序 ;
- 为用户提供一个与系统交互的操作界面 ;
- 操作系统分内核与外壳(我们可以把外壳理解成围绕着内核的应用程序,而内核就是能操作硬件的程序)。
1.2、操作系统简单分类
- Windows: 目前最流行的个人桌面操作系统 ,不做多的介绍,大家都清楚。
- Unix: 最早的多用户、多任务操作系统 .按照操作系统的分类,属于分时操作系统。Unix 大多被用在服务器、工作站,现在也有用在个人计算机上。它在创建互联网、计算机网络或客户端/服务器模型方面发挥着非常重要的作用。
- Linux: Linux是一套免费使用和自由传播的类Unix操作系统.Linux存在着许多不同的Linux版本,但它们都使用了 Linux内核 。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。
1.3、企业级与个人操作系统区别
常用的企业级操作系统有:
- Windows Server
- Unix
- Linux
二、Linux前世今生
2.1、Linux简介
- 类Unix系统: Linux是一种自由、开放源码的类似Unix的操作系统
- Linux内核: 严格来说,Linux这个词本身只表示Linux内核
- Linux之父: 一个编程领域的传奇式人物。他是Linux内核的最早作者,随后发起了这个开源项目,担任Linux内核的首要架构师与项目协调者,是当今世界最著名的电脑程序员、黑客之一。他还发起了Git这个开源项目,并为主要的开发者。
2.2、Linux诞生
- 1991年,芬兰的业余计算机爱好者Linus Torvalds(林纳斯·托瓦茨)编写了一款类似Minix的系统(基于微内核架构的类Unix操作系统)被ftp管理员命名为Linux 加入到自由软件基金的GNU计划中;
- Linux以一只可爱的企鹅作为标志,象征着敢作敢为、热爱生活。
- Linux特点:免费、开源
- 版本:1991年林纳斯·托瓦茨编写发布了Linux0.0.1版本,具有重大影响。1994年3月,正式发布了Linux1.0版本。
2.3、Linux分类
Linux根据原生程度,分为两种:
- 内核版本: Linux不是一个操作系统,严格来讲,Linux只是一个操作系统中的内核。内核是什么?内核建立了计算机软件与硬件之间通讯的平台,内核提供系统服务,比如文件管理、虚拟内存、设备I/O等;
- 发行版本: 一些组织或公司在内核版基础上进行二次开发而重新发行的版本。Linux发行版本有很多种(ubuntu和CentOS用的都很多,初学建议选择CentOS),如下图所示:
三、Linux文件系统概览
3.1、Linux文件系统简介
在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。
也就是说在LINUX系统中有一个重要的概念:一切都是文件。其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。
3.2、文件类型与目录结构
3.2.1、文件类型
Linux支持5种文件类型 :
3.2.2、目录结构
Linux的目录结构如下:
Linux文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:
常见目录说明:
- /bin: 存放二进制可执行文件(ls、cat、mkdir等),常用命令一般都在这里;
- /etc: 存放系统管理和配置文件(重要);
- /home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
- /usr : 用于存放系统应用程序(使用yum命令下载的软件包会在这里);
- /opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
- /proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
- /root: 超级用户(系统管理员)的主目录(特权阶级o);
- /sbin: 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
- /dev: 用于存放设备文件;
- /mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
- /boot: 存放用于系统引导时使用的各种文件;
- /lib : 存放着和系统运行相关的库文件 ;
- /tmp: 用于存放各种临时文件,是公用的临时文件存储点;
- /var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;
- /lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里。
四、Linux基本命令
4、目录命令
4.1、目录切换命令
cd usr
: 切换到该目录下usr目录cd ..(或cd../)
: 切换到上一层目录cd /
: 切换到系统根目录cd ~
: 切换到用户主目录 (root用户就是/root,普通用户就是/home)cd -
: 切换到上一个操作所在目录cd /tmp/test
: 使用绝对路径切换cd test
: 使用相对路径
4.2、目录操作命令
-
mkdir 目录名称
: 增加目录
示例:- mkdir test
- mkdir-p test/a/b/c:创建多级目录(使用相对路径)
- mkdir-p/opt/test/aa/cc:创建多级目录(使用绝对路径)
-
ls或者ll
:(ll是ls -l的别名,ll命令可以看到该目录下的所有目录和文件的详细信息):查看目录信息参数:
- -l 以列表形式查看
- -h 以一种人性化的方式查看,也是文件的大小以合适的单位显示
- -a 查看所有文件,包括隐藏文件
- -i 显示出文件的i节点号
-
find 目录 参数
: 寻找目录(查) -
pwd
: 查看所在目录位置示例:
- 列出当前目录及子目录下所有文件和文件夹:
find .
- 在
/home
目录下查找以.txt结尾的文件名:find /home -name "*.txt"
- 同上,但忽略大小写:
find /home -iname "*.txt"
- 当前目录及子目录下查找所有以.txt和.pdf结尾的文件:
find . \( -name "*.txt" -o -name "*.pdf" \)
或find . -name "*.txt" -o -name "*.pdf"
- 列出当前目录及子目录下所有文件和文件夹:
-
mv 目录名称 新目录名称
: 修改目录的名称(改)注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行 重命名的操作。mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。后面会介绍到mv命令的另一个用法。
-
mv 目录名称 目录的新位置
: 移动目录的位置—剪切(改)注意:mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作。另外mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
-
cp -r 目录名称 目录拷贝的目标位置
: 拷贝目录(改),-r代表递归拷贝注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r递归
参数:- -a =-pdr
- -p 同时复制文件属性,比如修改日期
- -d 复制时保留文件链接
- -r: 复制文件夹时,递归复制子文件夹
- -l 不复制,而是创建指向源文件的链接文件,链接文件名由目标文件给出。
- note:可以在拷贝的同时重命名
-
rm [-rf] 目录
: 删除目录(删)注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了增强大家的记忆, 无论删除任何目录或文件,都直接使用
rm -rf
目录/文件/压缩包
参数:- -r:递归删除
- -f:强制删除 即没有提醒
5、文件命令
5.1、文件操作命令
-
touch 文件名称
: 文件的创建(增)
创建文件 可以一次创建多个文件,以空格隔开 -
cat/more/less/tail 文件名称
: 文件的查看(查)
-n:带行号cat
: 查看显示文件内容more
: 分页查看文件内容: 可以显示百分比,回车可以向下一行, 空格可以向下一页,q可以退出查看
操作参数:
进入浏览模式后:- f或者空格:下一页
- enter:一行一行往下翻
- q:退出
less
: 可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看
操作参数:
- 空格翻页
- 回车换行
- pageup:上一页
- pagedown:下一页
- 上箭头:向上翻
- 下箭头:向下翻
- /搜索词 n向下找head -n
: 查看文件前n行。缺省-n显示前10行tail-10
: 查看文件的后10行,Ctrl+C结束
注意:命令 tail -f 文件 可以动态显示文件末尾内容,对某个文件进行动态监控,例如tomcat的日志文件, 会随着程序的运行,日志会变化,可以使用tail -f catalina-2016-11-11.log 监控文件的变化
-
in
: 链接命令
-s创建软连接
硬链接和cp -p的区别是硬链接会同步更新
源文件如果丢失,硬链接依然存在。
硬链接和源文件的i节点相同。
硬链接不能夸分区,软连接可以跨分区。
硬链接不可以链接目录,链接可以
软连接文件具有的权限是ugo都是rwx -
rm -rf 文件
: 删除文件(删)同目录删除:熟记
rm -rf
文件 即可
5.2、vim文件操作命令
vim编辑器是Linux中的强大组件,是vi编辑器的加强版,vim编辑器的命令和快捷方式有很多,但此处不一一阐述,大家也无需研究的很透彻,使用vim编辑修改文件的方式基本会使用就可以了。
在实际开发中,使用vim编辑器主要作用就是修改配置文件,下面是一般步骤:
vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q! (输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。)
i,a
: 命令模式–>编辑模式ecs
: 编辑模式–>命令模式(底行模式)- 命令模式(底行模式下):
q!
: 强制退出q
: 退出wq
: 保存并退出 (wq以及wq!,则不管有没有修改,都会强制更新修改时间,有时没修改的东西会让人误以为改了)wq!
: 保存并强制退出x
: 保存并退出(个人推荐使用,:x在由修改操作时会保存并退出,更新修改时间)
set nu
: 显示行号set nonu
: 取消行号- 翻页查看:
- 上一页:page up
- 下一页: page down
- 跳转到指定的行:
gg
: 跳转到第一行G
: 跳转到最后一行100G
: 跳转到指定行,如100G就是第100行,nG:第n行
/要查找的内容
: 查找yy
: 复制当前行p
: 粘贴到当前所在行的下一行- 粘贴一次就输入一个p
- 多次就多个p,如10p就粘贴10次
- 查找并替换:
方式一::开始行号,结束行号s/查找的单词/替换的单词
如:1,3s/f/XXX
: 替换1到3行的f为XXX
1,$s/f/YYY
: 替换1到所有行的f为YYY
方式二:gc方式
%s/aaa/bbb/gc
意思就是检索所有行,挨个询问替换aaa为bbb,手动判断y是替换,n是不替换,a是替换所有,q是退出。- 参数:
y - yes 替换
n - no 不替换
a - all 替换所有
q - quit 退出替换
l - last 最后一个,并把光标移动到行首
^E 向下滚屏
^Y 向上滚屏
- 参数:
u
: 撤销操作- **
dd
:**删除当前行
6、用户、组管理命令
6.1、用户、组操作(权限)
- 查看功能命令
- 查看个人信息
whoami
: 查看当前登录的用户who
: 查看当前的账户 显示的格式为: 登录用户名 登录终端(tty:本地登录 pts:远程终端) 登录时间 ip地址w
: 查看更详细的用户登录信息。groups
: 查看当前用户所在的组id
: 查看当前登录的用户的uid和groupid
- 查看系统信息
vim /etc/passwd
: 查看所有的用户列表vim/etc/group
: 查看所有的组列表
- 查看个人信息
- 用户的切换
su [用户名]
比如:su zhangsan
su
:默认切换到root
- 创建用户
useradd 用户名
:新建一个用户,一个同名的组,/home/同名的文件夹(uid,gid自增)useradd -u 用户id 用户名
useradd -b /路径 用户名
useradd -g 用户组 用户名
: 新建用户,放到指定的用户组中
- 修改密码
passwd 用户名
- 删除用户
userdel lisi
: 仅删除用户userdel -r Wangwu
: 删除用户以及目录(-r将关联的文件一并删除)userdel -rf wangwu
: 删除登录用户以及目录:(-f强制)
- 新建用户组
groupadd 组名
groupadd -g 组id 组名
- 修改用户名、组
usermod -l 新的登录名 old 登录名
: 修改登录名usermod -g 新组名 登录名
: 修改用户所在的组
6.2、用户、组小结
6.2.1、Linux 用户管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
Linux用户管理相关命令:
useradd 选项 用户名
:添加用户账号userdel 选项 用户名
:删除用户帐号usermod 选项 用户名
:修改帐号passwd 用户名
:更改或创建用户的密码passwd -S 用户名
:显示用户账号密码信息passwd -d 用户名
: 清除用户密码
useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
6.2.2、Linux系统用户组的管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
Linux系统用户组的管理相关命令:
groupadd 选项 用户组
:增加一个新的用户组groupdel 用户组
:要删除一个已有的用户组groupmod 选项 用户组
: 修改用户组的属性
7、权限命令
7.1、理解
操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在Linux中权限一般分为读(readable)、写(writable)和执行(excutable),分为三组。分别对应文件的属主(owner),属组(group)和其他用户(other),通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。通过 ls -l
或 ll
命令我们可以查看某个目录下的文件或目录的权限
示例:在随意某个目录下 ls -l
或 *ll
第一列的内容的信息解释如下:
下面将详细讲解文件的类型、Linux中权限以及文件有所有者、所在组、其它组具体是什么?
文件的类型:
- d: 代表目录
- -: 代表文件
- l: 代表软链接(可以认为是window中的快捷方式)
Linux中权限分为以下几种:
- r:代表权限是可读,r也可以用数字4表示
- w:代表权限是可写,w也可以用数字2表示
- x:代表权限是可执行,x也可以用数字1表示
文件和目录权限的区别:
对文件和目录而言,读写执行表示不同的意义。
对于文件:
权限名称 | 可执行操作 |
---|---|
r | 可以使用cat查看文件的内容 |
w | 可以修改文件的内容 |
x | 可以将其运行为二进制文件 |
对于目录:
权限名称 | 可执行操作 |
---|---|
r | 可以查看目录下列表 |
w | 可以创建和删除目录下文件 |
x | 可以使用cd进入目录 |
需要注意的是超级用户可以无视普通用户的权限,即使文件目录权限是000,依旧可以访问。
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。
-
所有者(user(owner) u)
一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者,用ls ‐ahl命令可以看到文件的所有者 也可以使用chown 用户名 文件名来修改文件的所有者 。
-
文件所在组(group g)
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组 用ls ‐ahl命令可以看到文件的所有组 也可以使用chgrp 组名 文件名来修改文件所在的组。
-
其它组(other o)
除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
我们再来看看如何修改文件/目录的权限。
7.2、chmod
chmod
: 修改文件/目录的权限的命令
示例:修改/test下的aaa.txt的权限为属主有全部权限,属主所在的组有读写权限,
其他用户只有读的权限
chmod u=rwx,g=rw,o=r aaa.txt
上述示例还可以使用数字表示:
chmod 764 aaa.txt
综合实例:
chmod u+x a.txt
chmod g+w,o-r a.txt
//同时做多个权限的修改chmod g=rwx a.txt
chmod 640 a.txt
chmod -R 777 testdir
//把目录和下面所有文件的权限chmod u-x,g-r,o+x test
只修改当前文件夹的权限,子文件不变chmod -R u-x,g-r,o+x test
递归修改文件夹的权限
7.3、chown
chwon
: 更改文件所有者,只有root可以更改.
修改拥有者:拥有组–》chown (change owner)
语法:
chown -R 拥有者:拥有组 文件夹
chown root a.txt
//把a.txt更改为root所有
【问题】如果普通用户,出现了对文件没有访问权限,如何解决?
- 修改文件的权限:chmod
- 修改文件的拥有者:chown
7.4、chgrp
chgrp
: 更改所属组
chgrp admin biubiubiu
//把biubiubiu的所属组更改为admin
7.5、umask -S
umask -S
查看创建文件的缺省权限,即默认权限
umask 023
: 修改文件的缺省权限为777-023=754。即-rwxr-xr–
7.6、如何将普通用户hadoopenv升级为超级管理员?
/etc/sudoers
- 先修改该文件的权限
chmod u+w /etc/sudoers
- 然后添加一行(不需要密码了)
hadoopenv ALL=(ALL)NOPASSWD:ALL
- 然后hadoopenv就穿上了黄马褂,可以用sudo 来执行root的权限
sudo mkdir xx
- 修改完后,再修改回来(记得再把门关上)
chmod u-w /etc/sudoers
补充一个比较常用的东西:
假如我们装了一个zookeeper,我们每次开机到要求其自动启动该怎么办?
- 新建一个脚本zookeeper
- 为新建的脚本zookeeper添加可执行权限,命令是:
chmod +x zookeeper
- 把zookeeper这个脚本添加到开机启动项里面,命令是:
chkconfig --add zookeeper
- 如果想看看是否添加成功,命令是:
chkconfig --list
8、压缩解压命令
8.1、打包并压缩文件
Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。
而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。
命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件
其中:
z:调用gzip压缩命令进行压缩
c:打包文件
v:显示运行过程
f:指定文件名
比如:假如test目录下有三个文件分别是:aaa.txt bbb.txt ccc.txt,如果我们要打包test目录并指定压缩后的压缩包名称为test.tar.gz可以使用命令:tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt
或:tar -zcvf test.tar.gz /test/
8.2、解压压缩包
命令:tar [-xvf] 压缩文件
其中:x:代表解压
示例:
1 将/test下的test.tar.gz解压到当前目录下可以使用命令:tar -xvf test.tar.gz
2 将/test下的test.tar.gz解压到根目录/usr下:tar -xvf test.tar.gz -C /usr
(- C代表指定解压的位置)
8.3、按格式分类
-
.gz格式
- 压缩:
gzip 文件名
只能压缩文件不能压缩目录,压缩完源文件也不见了 - 解压缩:
gunzip/gzip -d 压缩包名称
- 压缩:
-
tar:
tar -zcvf 压缩后文件名 打包的目录
:生成.tar.gz文件 注:这个命令先用tar归档,然后把归档的包压缩成.gztar -zxvf 要解压的文件名
:解压缩.tar.bz2的文件tar -jcvf 压缩后的文件名 打包的目录
:生成.tar.bz2 注:这个命令先用tar归档,然后把归档的包压缩成.bz2tar -jxvf 要解压的文件名
:解压.tar.bz2的文件
-
zip:
zip -r 压缩生成的文件名 要压缩的目录
zip 压缩生成的文件名 要压缩的文件
-
unzip:
unzip 要解压缩的文件
-
bzip2:
bzip2 -k 要压缩的文件名
-k选项:保留源文件bunzip2 -k 要解压的文件名
-k选项:保留压缩包
9、文件搜索命令
9.1、find
find:搜索制定范围内的文件
find [搜索范围] [匹配条件]
[匹配条件] 参数:
-
-name
按文件名搜索 -
-iname
根据文件名查找,不区分大小写 -
-size
+n大于 -n小于 n等于 这个n是数据块,在Linux中一个数据块是512字节大小 -
-user
根据所有者查找 -
-group
根据所属组查找 -
根据文件属性查找:
-amin
访问时间 access-cmin
根据文件属性被修改的时间 change-mmin
根据文件内容被修改的时间 modify
例: find /etc -cmin -5 :查找/etc目录下五分钟内被修改过属性的文件和目录
-
-a
两个条件同时满足
find /etc -size +10 -a -size -50 -
-o
两个条件满足一个即可 -
-type
f 文件 d 目录 l软连接文件 -
-inum
根据i节点查找 -
对找到的结果进行操作
-exec
或者-ok
命令 {} ;
例如:
find /etc -name init* -exec ls -l {} ; 对找到的文件名按列表查看
例子:
- find /etc -name init :搜索目录/etc下面所有的init文件,精确匹配,包括子目录中的init文件
- find / -size +204800 搜索大于100M的文件
9.2、locate
locate:
1、查找速度非常快,因为它维护了一个文件库。
2、缺点就是新建立的文件没有很快收录到文件库
locate 文件名
updatedb
更新locate的文件资料库 文件资料库不收录/tmp下的文件-i
不区分大小写
示例:
# 更新数据,新建文件后,需要使用此命令
updatedb
# 在系统上查找所有包含vimrc的文件
locate vimrc
# 使用正则表达式
locate --regexp vim*
9.3、which
which :查找命令的目录以及别名
which 命令
[root@biubiubiu /]# which vi
alias vi='vim'
/usr/bin/vim
9.4、whereis
whereis :搜索命令所在目录及帮助文档路径
whereis 命令
[root@biubiubiu /]# whereis vi
vi: /usr/bin/vi /usr/share/man/man1/vi.1.gz /usr/share/man/man1p/vi.1p.gz
9.5、grep
grep:在文件中搜寻字符串匹配的行并输出,多个文件以空格隔开
参数:
- -i不区分大小写
- -v排除指定字符串
- -E 以正则表达式的方式搜索
- -F 以普通文本的方式搜索
- -n 显示搜索到的内容在文件中的行号。
示例:
#多文件查询
grep leo logs.log logs_back.log
#查找即包含leo又包含li的行
grep leo logs.log | grep li
#查找匹配leo或者匹配li的行
grep leo | li logs.log
#显示匹配行前2行
grep leo logs.log -A2
#显示匹配行后2行
grep leo logs.log -B2
#显示匹配行前后2行
grep leo logs.log -C2
#不区分大小写
grep -i leo logs.log
#使用正则表达式
grep -e '[a-z]\{5\}' logs.log
#查找不包含leo的行
grep -v leo logs.log
#统计包含leo的行数
grep -c leo logs.log
#遍历当前目录及所有子目录查找匹配leo的行
grep -r leo .
#在当前目录及所有子目录查找所有java文件中查找leo
grep -r leo . --include "*.java"
#查找并输出到指定文件
grep leo logs.log > result.log
#查找以leo开头的行
grep ^leo logs.log
#查找以leo结尾的行
grep leo$ logs.log
#查找空行
grep ^$ logs.log
10、帮助命令
10.1、man
man:查看命令或者配置文件的帮助信息
man 命令/配置文件
在手册里面,可以输入/要查找的str
man ls
man services
man fstab
//直接输入配置文件的名字,而不需要使用绝对路径 重点查看name选项和配置文件的格式。
如果一个命令即使命令又是配置文件,那么可以使用一个序号进行区分,比如:
man 1 passwd
查看命令passwd的帮助
man 5 passwd
查看配置文件passwd的帮助
10.2、whatis
whatis 命令:得到命令的简要信息
[root@biubiubiu /]# whatis ls
ls (1) - list directory contents
ls (1p) - list directory contents
[root@biubiubiu /]# whatis id
id (1) - print real and effective user and group IDs
id (1p) - return user identity
[root@biubiubiu /]#
10.3、apropos
apropos 配置文件名:查看配置文件的简短信息
[root@biubiubiu etc]# apropos yum.conf
yum-config-manager (1) - manage yum configuration options and yum repositories
yum.conf (5) - Configuration file for yum(8).
[root@biubiubiu etc]#
10.4、help
help 命令:
- 查看shell内置命令的帮助信息。
- shell内置命令是没有命令路径。
- 不能使用man查看帮助。
help cd
ls --help
11、网络命令
11.1、write
write:给在线用户发送信息,用户不在线不行。以Ctrl+D保存
write 用户名
11.2、wall
wall:给所有用户名发送信息
wall 要发送的信息
11.3、ping
ping:测试网络连通性
ping ip地址
参数:
-c
: 要ping的次数
11.4、ifconfig
-
ifconfig
: 直接回车查看当前网卡信息 -
ifconfig 网卡名 ip地址
: 临时修改网络ip
示例:
ifconfig th0:0 192.168.1.100 netmask 255.255.255.0
给th0这个网卡新添加一个ip
ifconfig eth0:0 down
ifconfig eth0:0 up -
ifdown th0
: 禁用th0这块网卡 -
ifup th0
: 开启th0这块网卡
11.5、mail
mail:邮件命令
mail 要发送的用户名
mail 直接回车
: 查看命令
参数:
help :查看支持的命令格式
输入序列号:查看邮件详细内容
h: 回到邮件列表
d 序列号:删除序列号对应的邮件
11.6、nslookup
nslookup:查看网站ip地址
nslookup www.baidu.com
: 查看百度的ip地址
11.7、netstat
netstat
:显示网络相关信息
参数:
- -t :tcp协议
- -u :udp协议
- -l:监听
- -r:路由
- -n:显示ip地址和端口号
netstat -tlun
:查看本机监听的端口
netstat -an
:查看所有的监听信息
netstat -rn
:查看路由表,即网管
11.8、wget
wget 文件地址
: 下载文件
参数:
- -h:显示帮助说明;
- -b:后台下载;
- -c:继续上次终端的下载任务;
- -r:递归下载文件
实例:
wget http://search.maven.org/remotecontent?filepath=log4j/log4j/1.2.17/log4j-1.2.17.tar.gz
: 下载单个文件wget -i fileList
: 下载多个文件(fileList里需要有多个url)wget -c http://search.maven.org/remotecontent?filepath=log4j/log4j/1.2.17/log4j-1.2.17.tar.gz
: 断点下载wget -b http://search.maven.org/remotecontent?filepath=log4j/log4j/1.2.17/log4j-1.2.17.tar.gz
: 后台下载wget --limit-rate=400k http://search.maven.org/remotecontent?filepath=log4j/log4j/1.2.17/log4j-1.2.17.tar.gz
: 限速400k下载
11.9、service network restart
service network restart
:重启网络服务。
11.9.1、telnet
telnet 域名或ip
远程管理与端口探测
如: telnet 192.168.2.3:80
探测192.168.2.3是否开启了80端口
11.9.2、mount
mount:挂载命令
mount -t iso9660 /dev/sr0 /mnt/cdrom
:把sr0挂载到cdrom
12、关机重启命令
12.1、shutdown
shutdown
:这个关机命令更安全一些,不推荐使用其他关机命令。
-h
:关机
shutdown -h now
: 立刻关机
shutdown -h 20:30
: 八点半关机
-r
:重启
shutdown -r now
: 相当于reboot,立刻重启
-c
:取消上次的关机命令
shutdown -c
: 取消
12.2、reboot
reboot
等于 shutdown -r now
: 立刻重启
12.3、logout
logout
:退出当前用户,返回到登录界面
13、常用快捷键
ctrl+c
:强制终止当前命令ctrl+l
:清屏ctrl+a
:光标移动到命令行首ctrl+e
:光标移动到命令行尾ctrl+u
:从光标所在位置删除到行首ctrl+z
:把命令放入后台ctrl+r
:在历史命令中搜索
14、yum命令
yum list
:获取服务器上所有可用的软件的列表yum search 关键字
:搜索服务器上所有和关键字相关的包yum -y install 包名
:安装软件包
参数:- install:安装
- -y:自动回答yes
yum -y update 包名
:升级软件包
参数:- update:升级
- -y:自动回答yes
- 如果没有包名,就会升级所有的软件包,包括Linux内核。慎用
yum -y remove 包名
:卸载软件包
参数:- remove:卸载
- -y:自动回答yes
- 注:yum会自动卸载依赖包,而很有可能这个依赖包也被别的包依赖,所以很危险,慎用。
yum grouplist
:列出所有可用的软件组列表yum groupinstall 软件组名
:安装指定软件组,组名可以由grouplist查询出来
注:如果查询出来的软件组名中间有空格,要使用""引起来。yum groupremove 软件组名
:卸载指定软件组
五、其它杂项
15、ps和kill
ps 静态查看系统进程,系统默认安装
ps -aux | grep 文件名 或 ps -ef | grep 文件名
: 根据文件名过滤进程(最常配合kill使用)
ps -u 用户名
: 根据用户过滤进程
lsof -Pti :端口号
: 通过端口号获得进程pid
kill -9 pid
: 杀死指定pid的进程,强行杀死。
16、top
top
: 动态查看系统的状态
17、history
history
: 查看历史命令
执行历史命令:
!!
执行上一条命令
!n
执行历史命令的中第n条
!-n
执行导数第n条
!string
执行以string开头的历史命令行
!?string?
执行包含string的历史命令行
18、alias和unlias
18.1、alias:给命令起别名
alias 命令='别名'
示例: alias vi='vim'
alias -p
:查看已存在的别名
但是仅仅是这样改的话,当系统重启之后就会失效。
想要永久生效,需要修改根目录下.bashrc配置文件
[root@biubiubiu ~]# vi .bashrc
配置完成后需要使配置文件生效
[root@biubiubiu ~]# source .bashrc
18.2、unlias :取消别名
unlias name
示例:unlias vi
如果是之前修改了配置文件,需要再次去修改删掉。
19、cal
cal:查看某一年的日历,可以是1-9999中的任意一年
示例:
cal 2020
: 2020年日历
20、网络配置
20.1、三个网络配置文件
/etc/sysconfig/network-scripts/ifcfg-网卡
/etc/sysconfig/network
/etc/resolv.conf # dns
20.2、配置ip
20.3、远程执行命令
ssh root@192.168.8.15
21、CentOS环境变量配置
CentOS的环境变量配置文件体系是一个层级体系,这与其他多用户应用系统配置文件是类似的,有全局的,有用户的,有shell的,另外不同层级有时类似继承关系。下面以PATH变量为例。
-
修改/etc/profile文件,将影响全局,所有用户。
/etc/profile在系统启动后第一个用户登录时运行。
在/etc/profile文件中添加
java export PATH=/someapplication/bin:$PATH
要使修改生效,可以重启系统,或者执行
java source /etc/profile echo $PATH
-
修改/etc/environment,将影响全局。
/etc/environment文件与/etc/profile文件的区别是:/etc/environment设置的是系统的环境,而/etc/profile设置的是所有用户的环境,即/etc/environment与用户无关,在系统启动时运行。
在/etc/environment文件中添加
java PATH=/someapplication/bin:$PATH
CentOS和大多Linux系统使用$访问环境变量,环境变量PATH中使用冒号:分隔。而Windows中使用两个%访问环境变量,PATH使用分号;分隔,例如:java set PATH=E:\someapplication\bin;%PATH%
-
修改
~/.bash_profile
(首选),将影响当前用户。在~/.bash_profile
文件中添加java export PATH=/someapplication/bin:$PATH
-
修改/etc/bashrc(Ubuntu和Debian中是/etc/bash.bashrc),影响所有用户使用的bash shell。
/etc/bashrc顾名思义是为初始化bash shell而生,在bash shell打开时运行。
这里bash shell有不同的类别:登录shell和非登陆shell,登录shell需要输入用户密码,例如ssh登录或者su - 命令提权都会启动login shell模式。非登陆shell不会执行任何profiel文件;交互shell和非交互shell,提供命令提示符等待用户输入命令的是交互shell模式,直接运行脚本文件是非交互shell模式,一般情况下非交互shell模式不执行任何bashrc文件。根据以上情况,选择是否修改/etc/bashrc。 -
修改
~/.bashrc
,影响当前用户使用的bash shell。 -
在终端中执行以下命令,只影响当前终端。
java export PATH=/someapplication/bin:$PATH
22、防火墙firewall
1、开放端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent # 开放5672端口
firewall-cmd --zone=public --remove-port=5672/tcp --permanent #关闭5672端口
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
firewall-cmd --reload # 配置立即生效
2、查看防火墙所有开放的端口
firewall-cmd --list-ports
firewall-cmd --zone=public --list-ports
3.、关闭防火墙
如果要开放的端口太多,嫌麻烦,可以关闭防火墙,安全性自行评估
systemctl stop firewalld.service
#重启firewall
firewall-cmd --reload
#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
查看防火墙状态:firewall-cmd --state
关闭防火墙: systemctl stop firewalld.service
禁止防火墙开机启动:systemctl disable firewalld.service
4、查看防火墙状态
firewall-cmd --state
5、查看监听的端口
netstat -lnpt
PS:centos7默认没有 netstat 命令,需要安装 net-tools 工具,yum install -y net-tools
6、检查端口被哪个进程占用
netstat -lnpt |grep 5672
7、查看进程的详细信息
ps 6832
8、中止进程
kill -9 6832
23、IO Stream
标准流:
stdin:标准输入,编号为0,用于程序从键盘等设备接收数据。输入流被EOF(文件结尾)终止
stdout:标准输出,编号1,用于程序向终端等设备写入数据
stderr:标准错误,编号2,用于向终端等设备显示错误消息
重定向I/O Stream到文件:
选项 | 说明 | 模式 |
---|---|---|
< | 重定向stdin | |
> | 重定向stdout | 覆盖 |
>> | 重定向stdout | 追加 |
2> | 重定向stderr | 覆盖 |
2>> | 重定向stderr | 追加 |
案例:
[root@os1 test_data]# cat startxx.sh 1>>output.log 2>>output_err.log
24、date
date --help
date +%Y-%m-%d #2017-12-23
date +%H:%M:%S #13:29:03
date +%I:%M:%S #12小时时间显示
date +%c #locale的完整日期和时间
date -u #UTC日期和时间
date -R #RFC-2822格式
date -Iseconds #ISO-8601格式
date -s “2019-07-09 16:12:00“ #设置时间
25、yum安装
一、下载yum安装包并解压
wget http://yum.baseurl.org/download/3.4/yum-3.4.3.tar.gz
tar xvf yum-3.4.3.tar.gz
二、进入yum-3.4.3文件夹中进行安装,执行安装指令
cd yum-3.4.3
sudo apt install yum
三、更新到新版本
yum check-update
yum -y update
yum clean all
请多多支持博主,点赞关注一起进步哦~