目录
自动获取ip地址;(ip地址有可能变更,每次虚拟机重启后需重新配置获取ip)
1.编辑命令
vi、vim编辑命令,vim是vi的增强版,它们有三种模式:一般模式、编辑模式、命令模式。
一般模式:输入的内容看不见。
编辑模式:可以自由输入内容,可见。
命令模式:在文件末尾位置,可见。
进入一般模式(打开文本):vim、vi ;
一般模式-->编辑模式:i(当前字符前插入)、o(当前下一行插入新的一行)、a(当前字符后插 入)等按键;
编辑模式-->命令模式:esc ;
一般模式-->命令模式:/
:w 保存;
:wq 保存并退出;
:q 不保存退出;
:q! 强制退出;
拷贝当前行(一般模式):yy ,粘贴输入p ;
拷贝当前行向下的i行:iyy
删除当前行:dd
删除当前行向下的i行:idd
在文件查找某个单词(命令行模式):/ 单词;输入n 查找下一个;
设置文件的行号(命令行模式): 输入“:” 后 set nu ;
取消文件的行号:set nonu;
快捷键到该文档最首行(gg)、最末行(G);
2.用户管理
切换用户:su - 用户名。 (权限高的用户切换到低权限用户不需要输入密码,反之需要。)
返回原来用户时:exit 或 logout ;
添加用户:useradd 用户名;
给用户指定密码:passwd 用户名;
显示当前用户所在目录:pwd
删除用户(保留家目录):userdel 用户名;
删除用户(删除包括家目录):userdel -r 用户名
查询用户信息:id 用户名
查看当前登录用户:who am i
用户组:系统对有权限的用户同一管理
新增组:groupadd 组名
删除组:groupdel 组名
新增用户直接分组:useradd -g 用户组 用户名
修改用户组:usermod -g 用户组 用户名
3.文件目录指令
pwd指令
显示当前目录的绝对路径。
ls指令
显示指定工作目录下的内容: ls 【选项】【目录或文件】
常见选项:
-a 查看所有文件和目录包括隐藏文件。
-l 将文件形态、权限、拥有者、文件大小等资料详细列出。
-t 将文件按照创建时间先后次序列出。
cd指令
切换目录: cd 【目标目录】
cd~ 返回用户家目录
cd.. 返回当前目录的上一级目录
mkdir指令
创建目录:mkdir 【目录名称】
mkdir -p lll/sss 在lll目录下创建子目录sss,如没有lll目录,则先创建lll目录。
mkdir -p lll / sss 创建lll目录和sss目录,在同一目录下。
rmdir指令
删除空目录:rmdir 【目录名称】
mkdir -p lll / sss 删除子目录sss,若删除sss后lll为空目录,就删除lll目录。
rm -rf 文件 :删除目录,不管是否 有其他子目录;
touch指令
创建文件:touch 【文件名】
cp指令
复制文件或目录:cp 【选项】源文件 目标文件
cp -r 递归复制整个文件夹;
cp -f 覆盖已经存在的目标文件不给出提示;
cp -i 和-f相反,覆盖文件时给出提示,y确定;
cp -p 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中;
rm指令
删除文件或目录:rm 【选项】 要删除的文件或目录
常用选项:
rm -r 递归删除文件夹;
rm -f 强制删除不提示;
mv指令
用于移动文件与目录或重命名
俩个文件同一目录会重命名:mv 旧文件名 新文件名
俩文件不同目录会移动:mv 要移动的文件 移动到的新位置
cat指令
查看文件内容:cat 【选项】 文件
常用选项:
cat -n 显示行号;
cat只能浏览,不能修改,为浏览方便,一般会带上 管道命令 | (指前面执行的结果交给后面的指令处理)。
more指令
查看文件内容:more 文件名
操作及功能:
空格 翻页;
回车 向下一行;
ctr+f 向下滚动一屏;
ctr+b 返回上一屏;
= 输出当前行号;
:f 输出文件名和当前行;
less指令
在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。(空格 翻页)
head指令
显示文件开头部分内容,默认只显示前10行: head 文件
head -n 5 文件 查看文件前5行;
tail指令
查看文件尾部的内容,默认显示后10行; tail 文件
tail -n 5 文件 查看文件后5行;
tail -f 文件 实时追踪该文档的所有更新(常用于查阅正在改变的日志文件);
例:tail -f filename 会把filename文件里的最尾部内容显示在屏幕上,并不断刷新,只要filename更新就可以看到最新的文件内容。
echo指令
输出内容到控制台: echo 【选项】 输出内容;
ln指令
给源文件创建一个链接: ln -s 【源文件或目录】【链接名】
history指令
查看所有历史命令:history
查看最近5条命令:history 5
执行历史编号为5的命令:!5
4.日期指令
date 显示当前日期;
date +%Y 显示今年;
date +%m 显示当前月份;
date + %d 显示当前天数;
date “+%Y-%m-%d %H:%M:%S” 显示年月日 时分秒;
Y(年)、m(月)、d(日)、H(小时)、M(分钟)、S(秒);
date -s 日期格式(2020-12-28 22:09:56) 设置日期时间;
5.查找指令
find指令
从指定目录向下递归遍历其各个子目录,将满足条件的文件或目录显示在终端。
find 【搜索范围】【选项】
常用选项:
name 按照指定的文件名查找文件;
user 查找属于指定用户名所有文件;
size 按照指定的文件大小查找,+n大于,-n小于,n等于;
locate指令
快速查找指定文件的路径 locate 文件
由于该指令是基于数据库查询,第一次使用必须用updatedb指令创建数据库;
which指令
查看指令在那个目录下:which 指令
grep指令
过滤查找:grep 【选项】 查找内容 源文件
-n 显示匹配行和行号
-i 忽略字母大小写
6.管道
语法:命令1 | 命令2
功能:将前一个指令的输出内容作为后一个指令的输入内容
1例子:查看test文件并进行排序。
cat test.txt | sort
2例子:查看test文件并排序、去重。
cat test.txt | sort | uniq
3.例子:查看test文件并排序、去重、过滤(筛选)。
cat test.txt | sort | uniq |grep 'eeeeeee'
7.重定向
输入重定向 (<)
标准输入重定向:默认从键盘输入,也可以其他文件或命令中输入。
符号 | 作用 |
命令 < 文件 | 将文件作为命令的标准输入 |
命令 << 分界符 | 从标准输入中读入,直到遇见分界符才停止 |
命令 <文件1>文件2 | 将文件1作为命令的标准输入并将标准输出到文件2 |
例子1:将列表ls 文件或目录写入到test.txt文件中
ls < test.txt
以下例子省略;
输出重定向(>)
默认输出到屏幕。
符号 | 作用 |
命令 > 文件 | 将标准输出重定向到一个文件中(清空原有文件的数据) |
命令 2> 文件 | 将错误输出重定向到一个文件中(清空原有文件的数据) |
命令 >> 文件 | 将标准输出重定向到一个文件中(追加到原有内容的后面) |
命令 2>> 文件 | 将错误输出重定向到一个文件中(追加到原有内容的后面) |
命令 >> 文件 2> &1 或 命令 &>> 文件 | 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面) |
例子1:将控制台语句输出到test文件中
echo haha >> test.txt
例子2:查看test文件筛选“lll”,输出追加到nihao文件中。
cat test.txt | grep "lll" >> nihao.txt
8.压缩和解压指令
gzip和gunzip指令
压缩文件:gzip 文件,只能将文件压缩为*.gz格式。
解压文件:gunzip 需要解压的文件.gz
zip和unzip指令
项目打包发布时常用命令
压缩文件:zip【选项】xxx.zip
常用选项-r:递归压缩目录
解压文件:unzip 【选项】 xxx.zip
tar指令
即可打包又可解压,打包后文件后缀是 .tar.gz
打包目录:tar 【选项】 xxx.tar.gz
常用选项 | 功能 |
-c | 产生.tar打包文件 |
-z | 打包同时压缩 |
-x | 解包.tar文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
例子:
压缩多文件: tar -zcvf ls.tar.gz /home/sss/xuexi.txt /home/ddd/tiyu.txt
压缩ccc文件夹: tar -zcvf myls.tar.gz ccc
将文件解压到当前目录:tar -zxvf myls.tar.gz
将myls.tar.gz解压到tom目录下: tar -zxvf myls.tar.gz -C tom
9.Linux组
一个文件有个所有者,所有者又归于一个组。
所有者和组
所有者:文件谁创建的,谁就是所有者。
查看文件所有者:ls -ahl
修改所有者:chown 用户名 文件
组的创建:groupadd 组名
新增用户直接分组:useradd -g 用户组 用户名
修改文件所在组: chgrp 组名 文件名
其他组:除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。(改变用户所在组需要root的管理权限)
1.usermod -g 新组名 用户名
2.usermod -d 目录名 用户名(改变该用户登录的初始目录,注意这里的用户需要有进入新目录的权限。)
权限
ls -l显示内容如下:
d rwx r-x r-x . 3 root root 35 Dec26 21:40 ceshi
解释:
1.第0位确定文件类型(包括d,-,l,c,b)
d是目录,相当于windows的文件夹
-是普通文件
l是链接,相当于windows的快捷方式
c是字符设备文件,如鼠标,键盘
b是块设备,比如硬盘
2.第1-3位r w x该文件的所有者拥有的权限。 ----User(r读,w写,x执行【文件:可执行,目录:可进入】)
3.第4-6位r - x该文件所属组的用户拥有的权限。 ---Group(r读,w写,x执行【文件:可执行,目录:可进入】)
4.第7-9位r - x该文件其他用户拥有的权限。---Other(r读,w写,x执行【文件:可执行,目录:可进入】)
5.数字3:文件数和子目录数之和。
6.第一个root:所有者。
7.第二个root:所有者所在的组。
8.数字35:代表文件大小(字节)。
9. Dec26 21:40 :文件最后修改时间。
10.ceshi : 文件名称。
修改权限chmod
方式一:+、-、= 变更权限。
u:所有者 g:所有组 o:其他用户 a:所有人
例子1:给文件的所有者读写执行权限,给所在组的用户读执行权限,给其他用户读权限:
chmod u=rwx,g=rx,o=r 文件或文件名
例子2:给其他人增加写权限
chmod o+w 文件名 / 目录名 / 所有者 / 所有组
例子3:该文件不让所有人执行
chmod a - x 文件名 / 目录名 / 所有者 / 所有组
方式二:数字变更权限
r=4 ,w=2 ,x=1
chmod u=rwx,g=rx,o=x 文件/目录名 等于 chmod 754 文件/目录名
修改文件所有者
改变所有者:chown 改成的所有者 文件/目录
改变所有者和所在组: chown 新所有者:新所有组 文件/目录
10.定时任务调度
任务调度:系统在某个时间执行特定的命令或程序。
任务调度分类
(1)系统工作:某些重要工作周而复始的进行,如病毒查杀。
(2)个别用户工作:个别用户执行某些程序,如打开qq
定时任务的设置:crontab 【选项】
选项 | 功能 |
-e | 编辑crontab定时任务 |
-l | 查询当前任务调度 |
-r | 删除当前用户所有的定时任务 |
重启任务调度
service crond restart
crontab -e 回车然后输入 */1**** ls
*号位置 | 含义 |
第一个 | 一小时当中的第几分钟(分钟) |
第二个 | 一天当中的第几个小时(小时) |
第三个 | 一月当中的第几天(天) |
第四个 | 一年中第几个月(月) |
第五个 | 一周当中的星期几(范围0-7,0和7都代表星期日) |
特殊符号说明:
特殊符号 | 含义 |
* | 表示任何时间,比如第一个*,表示一小时每分钟执行一次。 |
, | 表示不连续时间,比如“0 8 ,10 * ** * 命令”,表示每天8点0分,10点0分执行一次命令。 |
- | 表示连续的时间范围,比如“0 2 * * 1-6 命令”,表示周一到周六凌晨2点执行命令。 |
*/n | 表示每隔多久执行一次,比如“*/10 * * * * 命令”,表示每10分钟执行一次命令。 |
案例:
时间 | 含义 |
45 22 * * * | 在22时45分执行命令 |
0 17 * * 1 | 每周1 的17时0分执行命令 |
0 5 1,15 * * | 每月1日和15日 5时0分执行命令 |
40 4 * * 1-5 | 每周星期一至星期五 4时40分执行命令 |
*/10 4 * * * | 每天的凌晨4点,每隔10分钟执行一次命令 |
0 0 1,15 * 1 | 每月1日和15日,每周一的0时0分都会执行命令。(注意:星期几和几号最好不要同时出现。) |
at定时任务
at命令时一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。默认情况下,atb守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。at命令只执行一次。
在使用at命令时,一定要保证atd进程的启动,可以使用相关指令来查看
检测当前进程有那些:ps -ef
检测atd进程是否在运行:ps -ef | grep atb
at定时任务的命令格式:at [选项] [时间] ,ctr+d结束at命令输入
选项 | 功能 |
-m | 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出 |
-l | atq(显示系统中待执行的任务列表)的别名 |
-d | atrm(删除待执行任务队列中的任务)的别名 |
-v | 显示任务将被执行的时间 |
-V | 显示版本信息 |
-c | 打印任务的内容到标准输出 |
-q 队列 | 使用指定的队列 |
-f 文件 | 从指定文件读入任务而不是从标准输入读入 |
-t时间参数 | 以时间参数的形式提交要运行的任务 |
at指定时间的方式
1. hh:mm(小时:分钟)24小时制指定时间,如果该时间已过,会放到第二天执行。
2. 使用midnight(深夜)、noon(中午)、teatime(下午,一般是下午4点)等模糊词来指定时间。
3.采用12小时计时制,即在时间后面加上am(上午)或pm(下午)。
4.指定命令执行的具体日期,指定格式为month day (月 日)或 mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如:09:00 2021-07-01
5.使用相对计时法。指定格式为:now + count time-units , now是当前时间,time-units是时间单位,这里能够是 minutes(分钟)、hous(小时)、days(天)、weeks(周)。count是时间的数量,几天,几小时。例如:now + 5 minutes 。
6.直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
例子:一天后凌晨12点执行 /bin/ls/home
at 12am + 1 day ,然后输入, 接着ctr+d
11.网络配置
自动获取ip地址;(ip地址有可能变更,每次虚拟机重启后需重新配置获取ip)
ip a 查看是否有分配ip地址
nmcli c up ens33 自动分配ip 如图我们可以看到分配的ip为192.168.194.131
指定ip地址;
进入配置文件:vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改配置:
TYPE=Ethernet //网络类型(通常为Ethernet)
BOOTPROTO=static //ip的配置方法【none;static;bootp;dhcp】(引导时不使用协议;静态分配;BOOTP协议;DHCP协议)
NAME=ens33 //名称
DEVICE=ens33 //接口名(设备,网卡)和上列NAME名称一样
ONBOOT=yes //系统启动时网络接口是否有效(yes;no)
IPADDR=192.168.194.131 //ip地址
NETMASK=255.255.255.0 //子网掩码
GATEWAY=192.168.194.254 //网关
DNS1=8.8.8.8 //第一个DNS服务器指向( 8.8.8.8为Google提供的免费DNS服务器的IP地址)
DNS2=8.8.4.4 //第二个DNS服务器指向( 8.8.4.4为Google提供的免费DNS服务器的IP地址)
虚拟机改完IP地址后,vmnet8也要修改在同一网段192.168.194.X,只有在同一网段中才能ping通
虚拟机工具栏下>编辑>虚拟网络编辑器>修改子网IP>应用>确定
上图配置中ip、子网掩码、网关需按照规则填写。
最后一步:重要,重启network服务(service network restart)
至此配置固定ip完毕,重启服务器之后也不会出现ip变动问题。
12.进程管理
程序:静态的,是躺在硬盘上。
进程:动态的,程序运行在内存中就是是进程。
线程:进程的不同执行路径。
每个进程都可能以俩种方式存在的。前台和后台,前台就是用户目前的屏幕上可以进程操作的。后台进程则是实际在操作,但由于屏幕上无法查看的进程,通常使用后台方式执行。一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。
查看当前系统中那些进程正在执行
ps 【选项】【用户】
选项 | 选项说明 |
a | 显示当前终端机下的所有程序,包括其他用户的程序 |
u | 显示用户相关的进程或者与用户相关的属性 |
x | 显示所有进程,无论是否运行在终端上 |
e | 列出程序所使用的环境变量 |
f | 用ASCII字符显示树状结构,表达程序间的相互关系 |
ps常用组合命令
aux | 列出目前所有的正在内存当中的程序|BSD格式显示 |
aux显示详解:
USER:用户名
PID:进程编号
%CPU:进程占用的CPU百分比
%MEM:进程占用内存百分比
VSZ:进程使用的虚拟内存量(KB)
RSS:进程占用的固定内存量(KB)
TTY:该进程运行在那个终端上面,若与终端无关,则显示?
STAT:进程的状态
START:进程被触发启动时间
TIME:进程实际占用CPU的时间
COMMAND: 进程所运行的命令
STAT 进程的状态解释
D:无法中断的休眠状态(通常 IO 的进程)
R:正在执行中
S:处于休眠状态
T:暂停执行,停止或被追踪
Z:不存在但暂时无法消除(僵尸进程)
X:死掉的进程
W:没有足够的记忆体分页可分配
<:优先级高的进程
N:低优先序的进程
L:有记忆体分页分配并所在记忆体内(实时系统或按 A I/O)
s:父进程(在它之下存在子进程)
+:位于后台的进程组
终止进程
kill 【选项】 进程号
killall 进程名称
常用选项:-9 强迫进程立即停止
查看进程树
pstree 【选项】
常用选项
-p:显示进程的PID
-u:显示进程的所属用户
指定运行级别
指定运行级别:init数字0-6,常用运行级别是3和5
级别说明:
0:关机
1:单用户(找回丢失密码用)
2:多用户状态无网络
3:多用户状态有网络
4:系统未使用保留给用户
5:图像界面
6:虚拟机重启
在/etc/initab进行了简化:
multi-user.target:analogous to runlevel 3
graphical.target:analogous to runlevel 5
查看当前的运行级别是什么:systemctl get-default
修改运行级别:systemctl set-default multi-user.target
chkconfig指令
查看服务:chkconfig --list[| grep xxx]
给服务在指定的运行级别下设置开关:chkconfig --level 5 服务名 on/off
注意:使用了chkconfig指令服务自启或关闭,需要reboot重启生效
systemctl指令
语法:systemctl 服务名 [start | stop | restart | reload | status]
查看管理的服务:ls -l /user/lib/systemd/system
systemctl设置服务的自启动状态
1.systemctl list-unit-files [ | grep服务名](查看服务开机启动状态)
2.systemctl enable 服务名(设置服务开机启动)
3.systemctl disable 服务名(关闭服务开机启动)
4.systemctl is-enabled 服务名(查询某个服务是否是自启动的)
例子:查看当前防火墙的状态,关闭防火墙和启动防火墙
1.systemctl status firewalld.service
2.systemctl stop firewalld.service
3.systemctl start firewalld.service
防火墙
防火墙打开情况下,xshell6访问Linux需要打开22端口号,不然无法访问到。防火墙关闭后,xshell6可直接访问,不需要打开端口号。
打开或者关闭指定端口
在真正的生产环境,往往需要将防火墙打开,但此时外部请求数据包却不能跟服务器监听端口通讯。这时需要打开指定的端口,比如80、22、3306等。
firewall指令
防火墙打开端口:firewall-cmd --permanent --add-port=端口号/协议
防火墙关闭端口:firewall-cmd --permanent --remove-port=端口号/协议
重新载入才能生效:firewall-cmd --reload
查看所有开发端口:firewall-cmd --zone=public --list-port
查询端口是否开放:firewall-cmd --query-port=端口/协议
13.动态监控进程
top与ps命令相似,都是用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。
指令:top 【选项】
选项 | 功能 |
-d秒速 | 指定top命令每隔几秒更新,默认3秒 |
-i | 使top不显示任务闲置或者僵死进程 |
-P | 通过指定监控进程ID来仅仅监控某个进程的状态 |
交互操作:
操作 | 功能 |
P | 以CPU使用率排序,从大到小,(默认) |
M | 以内存的使用率排序,从大到小 |
N | 以PID排序,从大到小 |
Q或q | 退出top |
案例1:监控特定用户,比如我们监控tom用户
top命令下,输入“u”回车,在输入用户名,输错可按向下键清空。
案例2:终止指定的进程
top命令下,输入“K”回车,再输入要结束的进程ID号
14.rpm和yun
rpm
rpm用于下载包的打包及安装工具,它生成具有.rpm扩展名的文件。RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,类似windows的setup.exe.
查询所有安装rpm软件包:rpm -qa
查询软件包是否安装:rpm -q 软件包名
查询软件包信息:rpm -qi 软件包
查询软件包中的文件:rpm -ql 软件包名
查询文件所属的软件包:rpm -qf 文件全路径名
卸载软件包:rpm -e 软件包
安装软件包:rpm -ivh 安装的全路径
yum
yum是个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
查询yum服务器是否有需要安装的软件:yum list | grep xx软件列表
安装指定的yum包:yum install xx下载安装。
最近听到一句话挺好,与君共勉;
路虽远行则将至,事虽难做则必成。