最全Linux 基础命令(2),2024年最新想转行当程序员的必看

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

-f //指定目录

-user username //根据属主来查找

-group groupname //根据属组来查找

-UID //根据UID进行查找,当用户被删除以后文件的属主会变为此用户的UID

-GID //根据GID进行查找,当用户被删除以后文件的属组会变为此用户的GID

-type //根据文件类型来查找(f,d,c,b,l,p,s)

-size //根据文件大小进行查找。如1k、1M,+10k、+10M,-1k、-1M,+表示大于,-表示小于

-mtime //修改时间

-atime

+5 //五天前

-5 //五天以后

-mmin //多少分钟修改过

-amin

+5 //五分钟前

-5 //五分钟以内


四、压缩与解压缩


压缩

gzip //压缩后的文件以.gz结尾;只能压缩文件不能压缩目录

bzip2 //压缩后的文件以.bz2结尾;bzip2是一款比gzip有着更大压缩比的压缩工具,使用格式近似

xz //压缩后的文件以.xz结尾;比bzip2有着更大压缩比的压缩工具,使用格式近似

zip //既归档又压缩的工具。zip可以压缩目录(跨平台)

//gz、bz2、xz都只能压缩文件,zip压缩后不会删除原文件

tar //打包

例:

-zcf test.tar.gz abc 123

-jcf test.tar.bz2 abc 123

-Jcf test.tar.xz abc 123

解压缩

gunzip

例:gunzip /path/to/some_compress_file.gz //解压完成后会删除原文件

例:zcat /path/to/somefile.gz //不解压的情况下查看文本文件的内容

bunzip2

例:bunzip2 /path/to/some_compress_file.bz2 //解压完成后会删除原文件

例:bzcat /path/to/somefile.bz2 //不解压的情况下查看文本文件的内容

unxz

例:xzcat /path/to/somefile.xz //不解压的情况下查看文本文件的内容

unzip

例:unzip filename.zip

xf

例:

-xf test.tar.gz

-xf test.tar.bz2

-xf test.tar.xz


五、I/O重定向、管道符


I/O重定向

          //覆盖输入
         //追加输出

管道符 //前一个命令的输出,作为后一个命令的输入。最后一个命令会在当前shell进程的子shell进程中执行

|

示例:

[root@hhr ~]# echo ‘hello world’ | cut -d ’ ’ -f 2

world

示例:

[root@hhr etc]# cat passwd | grep root

root❌0:0:root:/root:/bin/bash

operator❌11:0:operator:/root:/sbin/nologin

示例:

[root@hhr ~]# grep jjyy 123

jjyy


六、用户和组管理


  • 系统账户:为守护类进程获取系统资源而完成权限指派的用户(不需要登录)

  • 普通账户:为了完成交互式登录使用的用户

用户

useradd //创建用户

/etc/passwd 用户及其属性信息(名称、uid、基本组id等等)

/etc/shadow 用户密码及其相关属性

-u UID //指定用户uid

-g GID //指定用户所属基本组,可为组名或GID,组必须事先存在

-r //添加一个系统用户

userdel //删除用户

-r

示例:

[root@hhr ~]# userdel -r lisi

usermod //修改用户

-u //UID

示例:

[root@hhr ~]# usermod -u 1005 lisi

-s //修改用户登录shell

示例:

[root@hhr ~]# usermod -s /sbin/nolong lisi

[root@hhr ~]# usermod -s /bin/bash lisi

su //切换用户

su username //非登录式切换,即不会读取目标用户的配置文件

su -username //登录式切换,即会读取目标用户的配置文件。完全切换

id //查看用户信息

-u //查看UID

-g //查看GID

-G //查看Groups

groupadd //创建组

/etc/group 组及其属性信息

/etc/gshadow 组密码及其相关属性。在用户执行基本组切换时使用

-g //指定GID

-r //添加一个系统组

groupdel //删除组


七、密码管理命令


passwd //创建密码命令

su - //切换

passwd //管理员

–stdin //从标准输入获取用户密码

示例:

[root@hhr ~]# echo "redhat"|passwd --stdin lisi

-d //删除用户密码

破解密码过程

关机

开机

在内核所在行输入e键

找到linux开头的行后面加上rd.break

ctrl+x

mount -o remount, rw /sysroot

chroot /sysroot

echo " redhat" Ipasswd --stdin root

touch /.autorelabel

exit

exit


八、vi/vim编辑器


vi/vim三种编辑模式

命令模式–>输入模式

i:insert,在当前光标所在字符的前面,转为输入模式

I:大写的i,在当前光标所在行的行首转换为输入模式

a:append,在当前光标所在字符的后面转换为输入模式

A:在当前光标所在行的行尾转换为输入模式

o:open,在当前光标所在行的下方新建一行并转为输入模式

O:大写的o,不是数字0,在当前光标所在行的上方新建一行并转换为输入模式

输入模式–>命令模式

ESC

命令模式–>末行模式

:

末行模式–>命令模式

ESC ESC

文本编辑模式

关闭文件方式:末行模式关闭文件

q //退出

wq //保存并退出

q! //不保存退出

w //保存但不退出

w! //强行保存

wq! //强行保存并退出

x //强行保存并退出

命令模式关闭文件

ZZ //保存退出

命令模式下移动光标的方式

以单词为单位移动

w //移动到下一个单词的词首

e //跳至当前或下一个单词的词尾

b //跳至当前或上一个单词的词首

行间跳转

gg //跳转到第一行

3gg //跳转到第三行

G //跳转到最后一行

命令模式下删除字符

dd //删除当前行

3dd //删除以当前行开始的一共3行

D //删除当前行的内容

命令模式下复制命令

yy //复制当前行

3yy //复制当前行在内的一共3行

命令模式下粘贴命令

p 小写p //粘贴在当前行的下一行

P 大写P //粘贴在当前行的上一行

命令模式下替换命令

R //替换模式,替换多个字符

命令模式下撤销编辑

#u //直接撤销此前的#次编辑操作

ctrl+r //还原最近一次的撤销操作

.(点) //重复前一次编辑操作

可视化模式

v //按字符选取内容

V //按矩形块(行)选取内容

末行模式下查找并替换

s //替换

示例:

1,5 s/abc/def/g 表示把第一行到第五行的所有abc替换为def

末行模式下显示或取消显示行号

set nu //显示行号

set nonu //取消显示行号


九、进程管理


ps

ps -le

F //进程标志,说明进程的权限,常见的标志:1:进程可以复制,但是不能执行4:进程使用超级用户权限

S //进程状态。具体的状态和“ps aux”命令中 STAT 状态一致

UID //进程是哪个 UID 用户调用运行的

PID //进程的 ID 号

PPID //父进程的 ID 号

C //该进程的 CPU 使用率,单位是百分比

PRI //进程的优先级,数值越小该进程优先级越高,越快被 CPU 执行;动态值由内核决定

NI //进程的优先级,也是数值越小越早被执行;静态值管理员手动设置,NI值的范围-20到19之间;

//调整已经启动的进程的nice值的命令:renice NI PID:

//在启动时指定nice值的命令:nice -n 数字 COMMAND

ADDR //该进程在内存的哪个位置

SZ //该进程占用多大内存

WCHAN //该进程是否运行。“-”代表正在运行

TTY //该进程由哪个终端产生

TIME //该进程占用 CPU 的运算时间,注意不是系统时间

CMD //产生此进程的命令名

ps -aux

示例:

[root@hhr ~]# ps -aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.7 179700 14044 ? Ss 15:21 0:02 /usr/lib/systemd/systemd --switched-root --system

root 2 0.0 0.0 0 0 ? S 15:21 0:00 [kthreadd]

pidof //根据进程名查找其PID号

示例:

[root@hhr ~]# pidof sshd | xargs kill -9

示例:

[root@hhr ~]# pidof sshd


十、top


| 命令 | 含义 |

| :-- | :-- |

| ?或h | 显示交互模式的帮助 |

| P | 以 CPU 使用率排序,默认就是此项 |

| M | 以内存的使用率排序 |

| N | 以 PID 排序 |

| T | 按照 CPU 的累积运算时间排序,也就是用 TIME+项排序 |

| k | 按照 PID 号,给予某个进程一个信号。一般用于

终止某个进程,信号 9是强制终止的信号 |

| r | 按照 PID 号,给某个进程重设优先级(Nice)值 |

| q | 退出 top |


十一、信号控制进程


| 信号代号 | 信号名称 | 含义 |

| — | — | — |

| 1 | SIGHUP | 该信号让进程立即关闭,然后重新读取配置文件之后重启 |

| 2 | SIGINT | 程序终止信号,用于终止前台进程。相当于输出 ctrl+c 快捷键 |

| 9 | SIGKILL | 用来立即结束程序的运行.本信号不能被阻塞、处理和忽略。

一般用于强制终止进程(常用) |

| 15 | SIGTERM | 正常结束进程的信号,kill 命令的默认信号。有时如果进程已经发生问题,

这个信号是无法正常终止进程的,我们才会尝试SIGKILL 信号,也就是信号 9 |

| 18 | SIGCONT | 该信号可以让暂停的进程恢复执行。本信号不能被阻断 |

| 19 | SIGSTOP | 该信号可以暂停前台进程,

相当于输入 ctrl+z 快捷键。本信号不能被阻断 |


十二、权限管理


chmod 基础

例:

chmod u|g|o|a +|-|= rwx test

例:

[root@hhr ~]# chmod u+r test

[root@hhr ~]# ll

总用量 4

-rw-r–r–. 1 root lisi 0 7月 7 20:07 test

例:

[root@hhr ~]# chmod o+r test

[root@hhr ~]# ll

总用量 4

-rw-r–r–. 1 root root 40 7月 7 16:52 123

-rw-r–r–. 1 root lisi 0 7月 7 20:07 test

例:

[root@hhr ~]# chmod o=rw test

[root@hhr ~]# ll

总用量 4

-rw-r–r–. 1 root root 40 7月 7 16:52 123

-rw-r–rw-. 1 root lisi 0 7月 7 20:07 test

chmod number test

例:

[root@hhr ~]# chmod 777 test

[root@hhr ~]# ll

总用量 4

-rw-r–r–. 1 root root 40 7月 7 16:52 123

-rwxrwxrwx. 1 root lisi 0 7月 7 20:07 test

chmod 特殊权限

字母表示含义

u //用户

g //组

o //其它

a //所有人

特殊权限的字母表示方式

suid 应用程序 4 //运行程序时,这个程序启动的进程的属主是程序文件自身的属主,而不是发起者为属主

例:

[root@hhr ~]# chmod u+s file

[root@hhr ~]# ll

总用量 0

-rwSr–r–. 1 root root 0 7月 7 20:16 file

-rw-r–r–. 1 root lisi 0 7月 7 20:07 test

[root@hhr ~]# chmod u-s file

[root@hhr ~]# ll

总用量 0

-rw-r–r–. 1 root root 0 7月 7 20:16 file

-rw-r–r–. 1 root lisi 0 7月 7 20:07 test

<如果file本身原来就有执行权限,则SUID显示为s,否则显示为S>

sgid 目录 2 //运行程序时,这个程序启动的进程的属组是程序文件自身的属组,而不是启动者所属的基本组

//一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件或目录,其所属的组为此设定了SGID的目录的属组

例:

[root@hhr ~]# chmod g+s file

[root@hhr ~]# ll

总用量 0

-rw-r-Sr–. 1 root root 0 7月 7 20:16 file

-rw-r–r–. 1 root lisi 0 7月 7 20:07 test

[root@hhr ~]# chmod g-s file

[root@hhr ~]# ll

总用量 0

-rw-r–r–. 1 root root 0 7月 7 20:16 file

-rw-r–r–. 1 root lisi 0 7月 7 20:07 test

<如果file本身原来就有执行权限,则SGID显示为s,否则显示为S>

stucky 目录 1 //公共目录,每个人都能创建文件,删除自己的文件,但是不能删除别人创建的文件

例:

[root@hhr ~]# chmod o+t file

[root@hhr ~]# ll

总用量 0

-rw-r–r-T. 1 root root 0 7月 7 20:16 file

-rw-r–r–. 1 root lisi 0 7月 7 20:07 test

[root@hhr ~]# chmod o-t file

[root@hhr ~]# ll

总用量 0

-rw-r–r–. 1 root root 0 7月 7 20:16 file

-rw-r–r–. 1 root lisi 0 7月 7 20:07 test

<如果file本身原来就有执行权限,则Sticky显示为t,否则显示为T>

修改属主

例:

[root@hhr ~]# chown .lisi test

[root@hhr ~]# ll

总用量 4

-rw-r–r–. 1 root lisi 0 7月 7 20:07 test

例:

[root@hhr ~]# chown :hehe test

例:

[root@hhr ~]# chown lisi test

例:

[root@hhr ~]# chown root:hehe test

特殊权限的数字表示方式

4755 //有SUID,文件权限为755

2755 //有SGID,文件权限为755

1755 //有Sticky,文件权限为755

<这里前面的4、2、1分别表示SUID、SGID、Sticky>

acl访问控制 setfacl

-m //设定权限条目

例:

[root@hhr ~]# setfacl -m u:lisi:rwx test

[root@hhr ~]# ll

总用量 0

-rw-r–r–. 1 root root 0 7月 7 20:16 file

-rw-rwxr–+ 1 root lisi 0 7月 7 20:07 test

例:

[root@hhr ~]# setfacl -m g:lisi:rw file

如果要为某个目录设定默认的访问控制列表,只需要设定时在u或g前面加上d即可

例:

[root@hhr ~]# setfacl -m d:u:lisi:rw file

-x //删除权限条目

例:

[root@hhr ~]# setfacl -x u:lisi test

例:

[root@hhr ~]# setfacl -x g:lisi file

权限委派 sudo

添加 (vim编辑器里添加)

[root@hhr ~]# visudo

Allow root to run any commands anywhere

lisi ALL=(ALL) /sbin/useradd, /sbin/userdel

删除 (vim编辑器里添加)

[root@hhr ~]# visudo

Allow root to run any commands anywhere

lisi ALL=(ALL) /sbin/useradd, /sbin/userdel


十三、PRM包管理


RPM包安装 //安装软件包, 需要指定软件包绝对路径

例:

[root@hhr ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm

RPM包查询

-qa 过滤 //查询已经安装的所有包

示例:

[root@hhr ~]# rpm -qa |grep ftp

python3-requests-ftp-0.3.1-11.el8.noarch

-qc //查询指定已安装的包的配置文件

示例:

[root@hhr ~]# rpm -qc vsftpd

/etc/logrotate.d/vsftpd

/etc/pam.d/vsftpd

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

/etc/vsftpd/vsftpd.conf

-ql //查询指定软件包安装后生成的文件列表

示例:

[root@hhr ~]# rpm -ql vsftpd

/etc/logrotate.d/vsftpd

/etc/pam.d/vsftpd

/etc/vsftpd

-qd //查询指定已安装的包的帮助文件

-qf //查询指定的文件是由哪个rpm包安装生成的

示例:

[root@hhr ~]# rpm -qf /etc/vsftpd/vsftpd.conf

vsftpd-3.0.3-31.el8.x86_64

-q //查询指定的已安装的软件包

示例:

[root@hhr ~]# rpm -q vsftpd

vsftpd-3.0.3-31.el8.x86_64

RPM包升级

-Uvh 如果装有老版本的,则升级;否则,则安装

示例:

[root@hhr ~]# rpm -Uvh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm

-Fvh 如果装有老版本的,则升级;否则,退出

RPM包卸载


十四、YUM管理


yum/dnf命令

常用选项

-y

常用的command

list //列出所有的包

all //默认项

updates //可用的升级

clean //清理缓存

all //清除所有缓存

packages //清除包缓存

metadata //清除元数据缓存

repolist //显示repo列表及其简要信息

allall //列出所有仓库

install //安装,可以一次安装多个包

示例:

[root@hhr ~]# yum install ftp httpd

remove | erase //卸载,可以一次卸载多个包

info //查看包的信息,显示rpm -qi package的结果

示例:

[root@hhr ~]# yum info vsftpd

Updating Subscription Management repositories.

Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

上次元数据过期检查:0:22:41 前,执行于 2021年07月07日 星期三 20时36分48秒。

已安装的软件包

名称 : vsftpd

版本 : 3.0.3

发布 : 31.el8

架构 : x86_64

大小 : 343 k

源 : vsftpd-3.0.3-31.el8.src.rpm

仓库 : @System

来自仓库 : AppStream

概况 : Very Secure Ftp Daemon

URL : https://security.appspot.com/vsftpd.html

协议 : GPLv2 with exceptions

描述 : vsftpd is a Very Secure FTP daemon. It was written completely from
scratch.

update //升级

update_to //升级为指定版本

列出软件包

列出软件仓库中可用的软件

例:

[root@hhr ~]# yum list all

Updating Subscription Management repositories.

Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

上次元数据过期检查:0:24:03 前,执行于 2021年07月07日 星期三 20时36分48秒。

已安装的软件包

GConf2.x86_64 3.2.6-22.el8 @AppStream

ModemManager.x86_64 1.10.8-2.el8 @anaconda

进行模糊查找

例:

[root@hhr ~]# yum list all | grep “ftp”

python3-requests-ftp.noarch 0.3.1-11.el8 @AppStream

vsftpd.x86_64 3.0.3-31.el8 @AppStream

ftp.x86_64 0.17-78.el8 AppStream

lftp.i686 4.8.4-1.el8 AppStream

列出软件包详情

示例:

[root@hhr ~]# yum info vsftpd

Updating Subscription Management repositories.

Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

上次元数据过期检查:0:33:34 前,执行于 2021年07月07日 星期三 20时36分48秒。

已安装的软件包

名称 : vsftpd

版本 : 3.0.3

发布 : 31.el8

架构 : x86_64

大小 : 343 k

源 : vsftpd-3.0.3-31.el8.src.rpm

仓库 : @System

来自仓库 : AppStream

概况 : Very Secure Ftp Daemon

URL : https://security.appspot.com/vsftpd.html

协议 : GPLv2 with exceptions

描述 : vsftpd is a Very Secure FTP daemon. It was written completely from
scratch.

安装软件包

安装仓库内的软件,只需要给出软件名称

示例:

[root@hhr ~]# yum install vsftpd

安装过程中分析依赖关系后, 直接安装

示例:

[root@hhr ~]# yum install vsftpd

安装本地的rpm包, 如果有依赖关系, 会自动从软件仓库中下载所需依赖

示例:

[root@hhr ~]# yum -y localinstall /mnt/cdrom/Packages/httpd-2.4.6-67.el7.x86_64.rpm

安装网络上rpm包

示例:

[root@hhr ~]# yum install https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm

Updating Subscription Management repositories.

Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

上次元数据过期检查:0:39:17 前,执行于 2021年07月07日 星期三 20时36分48秒。

[MIRROR] vsftpd-3.0.2-25.el7.x86_64.rpm: Status code: 404 for https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm (IP: 58.215.146.118)

[MIRROR] vsftpd-3.0.2-25.el7.x86_64.rpm: Status code: 404 for https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm (IP: 58.215.146.118)

[MIRROR] vsftpd-3.0.2-25.el7.x86_64.rpm: Status code: 404 for https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm (IP: 58.215.146.118)

缓存命令

缓存仓库的元数据文件

示例:

[root@hhr ~]# yum makecache

Updating Subscription Management repositories.

Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

BaseOS 2.7 MB/s | 2.8 kB 00:00

AppStream 3.1 MB/s | 3.2 kB 00:00

元数据缓存已建立。

缓存rpm包

1.安装yum插件,实现只下载软件包不安装

示例:

[root@hhr ~]# yum -y install yum-plugin-downloadonly

Updating Subscription Management repositories.

Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

上次元数据过期检查:0:01:55 前,执行于 2021年07月07日 星期三 21时16分57秒。

2.将软件下载至指定目录

示例:

[root@hhr ~]# yum -y install --downloadonly --downloaddir=/tmp httpd

Updating Subscription Management repositories.

Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

上次元数据过期检查:0:01:18 前,执行于 2021年07月07日 星期三 21时16分57秒。

软件包 httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.x86_64 已安装。

依赖关系解决。

无需任何处理。

完毕!

清除所有yum缓存

示例:

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值