第一章 Linux基本命令

本文详细介绍了Linux系统中常用的基础命令,包括编辑命令如vi/vim,用户管理操作如切换用户、添加用户,文件目录指令如pwd、ls、cd等,以及权限管理、网络配置、进程管理、压缩解压和定时任务调度。此外,还涵盖了查找指令、管道和重定向、防火墙设置等内容,是学习和使用Linux系统的重要参考。

目录

1.编辑命令

2.用户管理

3.文件目录指令

pwd指令

ls指令

cd指令

mkdir指令

rmdir指令

touch指令

cp指令

rm指令

mv指令

cat指令

more指令

less指令

head指令

tail指令

echo指令

ln指令

history指令

4.日期指令

5.查找指令

find指令

locate指令

which指令

grep指令

6.管道

7.重定向

输入重定向 (<)

输出重定向(>)

8.压缩和解压指令

gzip和gunzip指令

zip和unzip指令

tar指令

9.Linux组

所有者和组

权限

修改权限chmod

修改文件所有者

10.定时任务调度

任务调度分类

重启任务调度

at定时任务

 at指定时间的方式

11.网络配置

自动获取ip地址;(ip地址有可能变更,每次虚拟机重启后需重新配置获取ip)

指定ip地址;

12.进程管理

查看当前系统中那些进程正在执行

终止进程

查看进程树

指定运行级别

chkconfig指令

systemctl指令

防火墙

firewall指令

13.动态监控进程

14.rpm和yun

rpm

yum


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当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
-latq(显示系统中待执行的任务列表)的别名
-datrm(删除待执行任务队列中的任务)的别名
-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下载安装。

最近听到一句话挺好,与君共勉;

路虽远行则将至,事虽难做则必成。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值