Linux命令笔记
Linux文件系统
-  
/home: 包含用户的文件:参数设置文件、个性化文件、文档、数据、EMALL、缓存数据等,每增加一个用户,系统就会根据其用户名在 home 目录下新建和其他用户同名的文件夹,用于保存其用户配置。 -  
/var: 包含在正常操作中被改变的文件、假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等。 -  
/bin: 包含系统启动时需要的执行文件(二进制),这些文件可以被普通用户使用。 -  
/etc:为操作系统的配置文件目录(防火墙、启动项) -  
/root:为系统管理员(也叫超级用户或根用户)的 Home 目录。 -  
/dev:为设备目录,Linux 下设备被当成文件,这样一来硬件被抽象化、便于读写、网络共享以及需要临时装载到文件系统中,正常情况下,设备会有一个独立的子目录,这些设备的内容会出现在独立的子目录下。 
Linux 命令操作
-  
查看当前目录:
pwd -  
打开文件夹:
cd-  
打开指定文件夹:
cd目录名称 -  
打开用户根目录:
cd ~ -  
打开根目录 :
cd / 
 -  
 -  
浏览目录下的文件列表:
ls-  
以列的方式查看当前目录下的文件列表:
ls -l -  
查看当前目录下的所有文件(包括隐藏文件):
ls -a -  
以列表方式查看所有文件:
ls -la 
 -  
 -  
创建文件目录:
mkdir-  
新建文件目录:
mkdir文件夹名称 -  
递归新建多级目录:
mkdir -p路径/文件夹名称 
 -  
 -  
删除文件或者目录:rm
-  
强制删除文件或者目录 rm -rf
目录或者文件 -  
在删除之前询问是否确认删除:
rm -ri目录或者文件Note:如果没有参数r则只能删除文件,无法删除目录
 
 -  
 -  
复制文件或者目录
-  
递归复制目录1下的所有东西到目录2:
cp -r目录1目录2 -  
执行复制操作时覆盖原目录前询问用户:
cp -ri目录1目录2 
 -  
 -  
移动文件、修改文件名
-  
将文件1更名为文件2:
mv文件1文件2 -  
将目录1的文件移动到目录2:
mv目录1目录2 
 -  
 -  
创建文件
touch文件名称
 -  
查看编辑可编辑文件:
vi-  
vi 命令为 UNIX 操作系统或者类 UNIX 操作系统都有具有的功能强大的文件编辑命令,用户输入 vi 文件名,便可以进入 vi 模式进行文件内容的查看和编辑,如果文件已经存在,则直接打开文件,如果文件不存在,则系统将打开一个全新的空文件。
 -  
vi 的三种模式如下:
-  
命令模式:当用户使用 vi 命令打开文件后,则进入命令模式,用户可以输入命令来执行各种功能。
取值 说明 L 光标移至屏幕最后一行 ^ 移动到行头 $ 移动到行尾 n- 光标向上移动 n 行 n+ 光标移下移 n 行 dd 删除当前行 d3d 删除包括光标行和光标下面两行 73G 移动到第73行 u 撤销,相当于ctrl+z G 移动到页尾 gg 移动到页头  -  
输入模式:如果用户要对文件做修改,则可以使用下面几种命令,进入输入模式,用户进入输入模式之后,可以任意修改文件,除了 Esc 键外,用户输入的任何字符都会被作为内容写入文件中,用户输入 Esc 可以对文件进行相关操作。
a i r o : 编辑模式
dd :删除当前光标
ndd :删除n行
 -  
末行模式:如果用户完成编辑命令,则可以按照 ESC + “:” 进入末行模式,用户可以对文件内容继续进行搜索,也可以输入 “:wq!” 进行文件保存并退出,或者输入 “:q!” 强制退出文件编辑。
命令 功能 :w 保存 :q 退出 :! 强制执行 : %s/旧的字符/新的字符 批量替换字符串 ? 要查找的词 n向下查找,N向上查找 ZZ 保存退出 :set nonu 显示行号  
 -  
 
 -  
 -  
查看、编辑文件
-  
显示一个小的文件的内容:
cat文件名称 -  
创建并打开一个新的文件:
cat >文件名称 
 -  
 -  
查看文件结尾内容
-  
动态加载某个文件的内容(常用于查看日志文件):
tail -f 文件名称 -  
展示文件最后几行的数据:
tail -n 行数文件名称 
 -  
 
用户与用户组
用户是指在一个操作系统中,一系列权限的集合体,操作人员通过用户名和口令可以在系统中执行某一些被允许的操作。不同的用户可以具有不同的权限。Linux 操作系统中每个用户都具有唯一标识 UID,当使用命令创建用户时,如果不指定用户的 UID,则系统将自动为其分配 UID。
用户组就是具有相同特征的用户的集合体,在 Linux 系统中,每一个用户都属于至少一个用户组。Linux 操作系统中每个用户分组都具有唯一标识 GID,当使用命令创建用户组时,如果不指定用户组的 GID,则系统将自动为其分配 GID。当使用 -u 指定用户 id 时,用户 id 尽量大于500,以免冲突。因为 Linux 操作系统安装后,会默认建立一些用户,所以可能会占用 500 之内的 id 号。
Linux 权限机制有以下特点:
-  
系统有一个权限最大的用户,其名称为 root ,root 用户属于 root 用户组。
 -  
系统默认只有 root 权限可以添加和删除用户。
 -  
添加用户之后,如果没有给用户指定用户组,则系统会为用户添加一个同名的用户组,用户属于该组。
 -  
root 切换到普通用户无需登录,普通用户切换到 root 用户需要登陆。
 -  
root 可以给用户赋予和回收某一个文件的读、写、执行的权限。
 
用户操作命令
-  
切换用户命令
su [用户名]或者su -[用户名]su[用户名]和su -[用户名]都可以切换用户,前者类似于临时切换用户,当使用该命令进行切换新用户时,用户配置仍然沿用原来的用户配置,如环境变量、系统变量等。而后者进行切换用户时,环境变量、系统设置全部切换成新用户的用户配置。
 -  
查看当前登陆用户命令:
whoami -  
查看当前用户所属分组命令:
groups -  
查看当前用户 UID 和 GID 命令:
id用户名 -  
添加新用户命令:
useradd-g -m 用户组 用户名,-m创建用户目录 -  
修改用户密码:
passwd 用户名 -  
删除用户:
userdel -r 用户名, 不用 -r 不会删除用户主目录 -  
只有$的解决方法,将该用户使用的shell更改为bash:
1.登入root:su -
2.使用:usermod -s /bin/bash <需要更改bash的用户名>
 
Linux 进程管理
在 Linux 的应用中,我们需要对进程进行管理,如查看某个进程是否启动、以及在必要的时刻,杀掉某个线程。
-  
查看进程命令:ps
- ps 命令是 Linux 操作系统中查看进程的命令,通过 ps 命令我们可以查看 Linux 操作系统中正在运行的过程,并可以获得进程的 PID(进程的唯一标识),通过 PID 可以对进程进行相应的管理。  
ps -ef | grep [进程关键字] 
 - ps 命令是 Linux 操作系统中查看进程的命令,通过 ps 命令我们可以查看 Linux 操作系统中正在运行的过程,并可以获得进程的 PID(进程的唯一标识),通过 PID 可以对进程进行相应的管理。  
 -  
杀掉进程命令:kill
-  
当系统中有进程进入死循环,或者需要被关闭时,我们可以使用 kill 命令对其关闭。
kill -9 [PID]PID 为 Linux 操作系统中进程的标识 
 -  
 
Linux 其他常用命令大全
-  
清屏命令:clear
 -  
查询命令详细参数命令:man
 -  
挂载命令:mnt
 -  
远程连接服务 SSH 相关命令:
 -  
启动 SSH 服务命令:
service sshd start -  
重启 SSH 服务命令:
service sshd restart -  
关闭 SSH 服务命令:
service sshd stop 
Linux 大多数情况下都是远程服务器,开发者通过远程工具连接 Linux ,启动了某个项目的 JAR,一旦窗口关闭,JAR 也就停止运行了,因此一般通过如下命令启动 JAR:nohup java -jar jar-0.0.1-SNAPSHOT.jar & 这里多了 nohup ,表示当前窗口关闭时服务不挂起,继续在后台运行
压缩与解压缩
-  
解压压缩命令:
tar -  
语法:
tar [选项] [压缩包] -  
解压 gzip 包:
tar -zxvf [包名] -  
解压 bz 包:
tar -jxvf [包名] -  
解压普通包:
tar -xvf [包名] 
| 取值 | 说明 | 
|---|---|
| -c | 指定特定目录压缩 | 
| -x | 从备份文件中还原文件 | 
| -t | 列出备份文件的内容 | 
| -r | 添加文件到已经压缩的文件 | 
| -z | 有 gzip 属性的(后缀是 gz 的) | 
| -j | 有 bz2 属性的(后缀是 bz 的) | 
| -Z | 有 cpmpress 属性的 | 
| -v | 显示所有进程 | 
| -O | 将文件解压到标准输出 | 
| -f | 使用档案名称 | 
安装卸载命令:rpm
-  
语法:
rpm [选项] [软件包] -  
查询是否已经安装了某软件包:
rpm -qa|grep [软件包关键词] -  
卸载已经安装的软件包:
rpm -e 软件包全名 -  
安装软件包并查看进度:
rpm -ivh 软件包路径 
| 取值 | 说明 | 
|---|---|
| -ivh | 安装显示安装进度 | 
| -Uvh | 升级软件包 | 
| -qpl | 列出 rpm 软件包内的文件信息 | 
| -qpi | 列出 rpm 软件包的描述信息 | 
| -qf | 查找指定文件属于哪个 rpm 软件包 | 
| -Va | 校验所有的 rpm 软件包,查找丢失的文件 | 
| -e | 删除包 | 
| -qa | 查找已经安装的 rpm 包 | 
Linux常用缩写
ls:list(列出目录内容)
cd:change directory(改变目录)
su:switch user 切换用户
pwd:print work directory 打印当前目录 显示出当前工作目录的绝对路径
ps: process status(进程状态,类似于windows的任务管理器) ps -auxf 显示进程状态
df: disk free 其功能是显示磁盘可用空间数目信息及空间结点信息。
rmdir:Remove Directory(删除目录)
rm:Remove(删除目录或文件)
cat:concatenate连锁 cat file1 file2>>file3把文件1和文件2的内容联合起来放到file3中
ln: Link files ln -s : link -soft 创建一个软链接,相当于创建一个快捷方式
mkdir:Make Directory(创建目录)
mv: Move file
cp: Copy file
bg: Background
apt:Advanced package tool(Debian或基于Debian的发行版中提供)
/usr:Unix Shared Resources
 
常用Linux命令
-  
apt-get
apt-get,是一条linux命令,适用于deb包管理式的操作系统(例如Ubuntu系统),主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
apt-get update // 更新源文件,并不会做任何安装升级操作 apt-get upgrade // 升级所有已安装的包 apt-get install packagename // 安装指定的包 apt-get install packagename --only-upgrade // 仅升级指定的包 apt-get install packagename --reinstall // 重新安装包 apt-get -f install // 修复安装 apt-get build-dep packagename // 安装相关的编译环境 apt-get source packagename // 下载该包的源代码 apt-get dist-upgrade // 升级系统 apt-get dselect-upgrade // 使用 dselect 升级 apt-get remove packagename // 删除包 apt-get remove packagename -- purge // 删除包,包括删除配置文件等 apt-get autoremove packagename --purge // 删除包及其依赖的软件包+配置文件等(只对6.10有效,推荐使用) apt-get clean // 清理无用的包 apt-get autoclean // 清理无用的包 apt-get check // 检查是否有损坏的依赖 -  
查看ip信息:ifconfig
 -  
重启服务器:reboot -f 强制重启;shutdown -r now|分钟
 -  
pwd:查看所在目录绝对路径
 -  
touch:创建一个空文件
 -  
mv: 移动文件,具有重命名和剪切的功能
 -  
df -h :查看文件系统容量
 -  
ps -aux|grep xxx : 查看内存占用率和所有进程
 
MySQL
-  
启动MySQL
sudo service mysql start 或 sudo systemctl start mysql.service -  
重启MySQL数据库服务
sudo service mysql restart 或 sudo systemctl restart mysql.service -  
停止MySQL数据库服务
sudo service mysql stop 或 sudo systemctl stop mysql.service -  
查看运行状态
systemctl status mysql -  
设置MySQL服务开机自启动
sudo service mysql enable 或 sudo systemctl enable mysql.service -  
停止MySQL服务开机自启动
sudo service mysql disable 或 sudo systemctl disable mysql.service -  
MySQL的配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf -  
创建用户和授权
# 登录mysql并输入密码 mysql -u root -p # mysql8 修改密码方式 alter user 'root'@'localhost' identified by '这里填你要的密码'; #username:你将创建的用户名 #host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符% 注意,使用%通配符创建外网访问用户后,登录时需要明确访问的IP地址,例如 mysql -u test -h 115.28.203.224 -p password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器 CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 
Redis
-  
默认安装目录:/usr/local/bin
 -  
前台启动:redis-server
 -  
后台启动:
- cp ./redis-6.2.1/redis.conf myredis.conf
 - myredis.conf 配置文件中 daemonize no改成yes(L247)让服务在后台启动
 - 后台启动:redis-server ./myredis.conf
 - 连接使用:redis-cli
 - 关闭:redis>>shutdown ; Linux>>redis-cli shutdown;
 
 -  
网络配置:默认情况bind=127.0.0.1只能接受本机的访问请求;不写的情况下,无限制接受任何ip地址的访问,protected-mode 改成 no;
 -  
Redis命令
-  
String
- set name chen
 - setex second name chen
 - get name
 - append name jie
 - strlen name
 - incr 将key中数字+1
 - decr 将key中数字-1
 
 -  
List 双端队列,链表实现
- lpush/rpush
 - lpop/rpop
 - rpoplpush 从列表右边吐出一个值,插到列表左边
 - lrange 
      
按照索引下标获得元素(从左到右)  - lindex 取index的元素
 - llen 列表长度
 - linsert before 在的后面插入插入值
 - lrem 从左边删除n个value(从左到右)
 - lset将列表key下标为index的值替换成value
 
 -  
Set String类型的无序集合,底层Hash表实现。
- sadd … 添加元素
 - smembers 取出该集合的所有值
 - sismember 判断集合是否为含有该值,有1,没有0
 - scard返回该集合的元素个数。
 - srem … 删除集合中的某个元素。
 - spop 随机从该集合中吐出一个值。
 - srandmember 随机从该集合中取出n个值。不会从集合中删除 。
 - sinter 返回两个集合的交集元素。
 - sunion 返回两个集合的并集元素。
 - sdiff 返回两个集合的差集元素(key1中的,不包含key2中的)
 
 -  
Hash 键值对集合,string类型的field和value的映射表,hash特别适合用于存储对象。类似Java里面的Map<String,Object>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZKr9Atzv-1685710098444)(.\八股文自己整理\imgs\image-20230411184943971.png)]
- hset 给集合中的 键赋值
 - hget 从集合取出 value
 - hmset … 批量设置hash的值
 - hexists查看哈希表 key 中,给定域 field 是否存在。
 - hkeys 列出该hash集合的所有field
 - hvals 列出该hash集合的所有value
 - hincrby 为哈希表 key 中的域 field 的值加上增量 1 -1
 - hsetnx 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在 .
 
 -  
Zset (sorted set)有序集合zset与普通集合set非常相似,不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。底层使用Hash表和跳跃表实现,跳跃表的目的在于给元素value排序,根据score的范围获取元素列表。
- zadd … 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
 - zrange 
      
[WITHSCORES] 返回有序集 key 中,下标在 之间的元素。带WITHSCORES,可以让分数一起和值返回到结果集。  - zrangebyscore key min max [withscores] [limit offset count]返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。
 - zrevrangebyscore key max min [withscores] [limit offset count] 同上,改为从大到小排列。 limit 0 2 分页返回数据,从0开始,返回2个。
 - zincrby 为元素的score加上增量
 - zrem 删除该集合下,指定值的元素
 - zcount 统计该集合,分数区间内的元素个数
 - zrank 返回该值在集合中的排名,从0开始。
 
 
 -  
 










