Linux学习笔记
Linux学习
补充内容
-----------------2022-6-29补充--------------------------
在linux下查看目录的剩余空间大小```df -hl```
--------------------------------------------------------
1.Linux目录结构
- linux的目录结构:
目录结构具体介绍:
- /bin 是Binary的缩写,存放着最经常使用的命令
- /home 存放着普通用户的主目录,Linux中每个用户都有一个自己的目录,一般是以用户的账号命名的
- /root 该目录为系统管理员,
- /boot 启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
- /tmp 用来存放一些临时文件
- /media 自动识别一些设备
- /usr/local 这是利一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的目录
- /var 这个目录存放着不断扩充的东西
2.vi和vim编辑器
- 所有的linux系统都会内建vi文本编辑器
- vim可以看成是vi的增强版本
- vi和vim三种模式的相互转化图
3.开机,重启,和用户登入注销
a关机&重启命令
- 基本操作:
shutdown
shotdown -h now:表示立即关机
shutdown -h 1:表示一分钟后关机
shotdown -r now:立即重启
halt
就是直接使用,等价于关机
reboot
重启系统
syn
把内存的数据同步到磁盘
用户登入和注销
- 登入是尽量少用root账号登入,可以用普通用户登录,后再用"su- 用户名"切换成管理员身份
- 在提示符下输入logout即可注销用户
用户管理:
- linux操作系统示意图
- linux的用户需要至少属于一个组
- 添加用户
useradd [选项] 用户名
例如:useradd xiaoming
- 给用户指定或修改密码
基本语法:
passwd 用户名
例如: passwd xiaoming
- 删除用户
基本语法:
userdel 用户名
1)删除用户xiaoming,但要保留家目录:
userdel xiaoming
2)删除用户xiaoming以及用户主目录:
userdel -r xiaoming
- 查询用户信息
基本语法:
id 用户名
例如:
id root
uid=0(root) gid=0(root) 组=0(root):分别为用户id号,所在组的id号,组名
注:当用户不存在时,返回“无此用户”
- 切换用户:
基本语法:
su - 切换用户名
由权限高的用户切换到权限低的用户不需要密码,反之需要
但需返回到原来用户时,使用exit指令
- 用户组:
1.增加组:
groupadd 组名
2.删除组:
groupdel 组名
3.增加用户时直接加上组
useradd -g 用户组 用户名
4.修改用户的组
usermod -g 用户组 用户名
- 配置文件
1. /etc/passwd
用户的配置文件,记录用户的各种信息
2. /etc/shadow
口令的配置文件
3. /etc/group
组的配置文件:记录Linux包含的组的信息
实用指令
1.运行级别说明
- 0:关机
- 1:单用户
- 2:多用户状态没有网络服务
- 3:多用户状态由网络服务
- 4:系统未使用保留给用户
- 5: 图形界面
- 6:系统重启
2.切换到指定级别的指令
- 基本语法:
init[012356]
- 面试题:如何找回root密码,如果不小心忘记了root密码,怎么找回
思路:进入到单用户模式,然后修改root密码
因为进入单用户模式。root不需要密码就可以登入
3.帮助指令:
- man 获得帮助信息
基本语法:
man [命令或配置文件]
- help指令
基本语法:
help 命令
4.文件目录类:
- pwd指令
基本语法:显示当前工作目录的绝对路径
pwd
- ls指令
基本语法:
ls [选项] [目录或文件]
常用选项:
-a : 显示当前所有的文件和目录,包括隐含的
-l : 以列表的形式显示信息
- cd指令
基本语法:
cd [参数] (功能描述:切换到指定目录)
切换到家目录: cd 或者 cd ~
- mkdir指令:用于创建目录
基本语法
mkdir [选项] 要创建的目录
常用选项
-p : 创建多级目录
- rmdir指令:删除空目录
基本语法:
mkdir [选项] 要删除的空目录
提示:如果需要删除非空目录,需要使用rm -rf 要删除的目录
- touch指令
基本语法:
touch 文件名称
- cp指令[重要]
基本语法:
cp[选项] source dest
常用选项
-r : 递归复制整个文件夹
- rm指令
基本语法:
rm [选项] 要删除的文件或目录
常用选项
-r : 递归删除整个文件夹
-f : 强制删除不提示
- mv指令:移动文件于目录或重命名
基本语法:
mv oldNameFile newNameFile(移动文件)
mv /temp/movefiel/targetFolder(功能描述:移动文件)
- cat指令
- cat查看文件内容,是以只读的方式打开
基本语法:
cat [选项] 要查看的文件
常用选项:
-n:显示行号
使用细节
cat只能浏览文件不能修改文件,为了浏览方便一般会带上管道 | more
cat 文件名 | more(分页浏览)
- more指令
- 以全屏幕的方式按页显示文本文件的内容
基本语法:
more 要查看的文件
应用实例:
more /etc/profile
- more快捷键
- less指令
- 分屏查看文件内容,对于大型文件具有较高效率
基本语法
less 要查看的文件
- '> 指令和 >>指令'
> 输出重定向:会将原来的文件内容覆盖
>> 追加:追加到文件的尾部
基本语法:
1) ls-l>文件(功能描述:列表中内容写入到a.txt中)
2) ls-al>>文件(功能描述:列表中内容追加到a.txt中)
3) cat 文件1>文件2(功能描述:将文件1的内容覆盖到文件2)
4) echo "内容" >> 文件
- echo指令
基本语法:
echo [选项] [输出内容]
应用案例
使用enho输出环境变量 echo $PATH
- head指令
基本语法
head 文件 (功能描述: 查看文件头10行)
head -n 5 文件 (功能描述: 查看文件头5行)
- tail指令
基本语法:
1) tail 文件 (功能描述:查看文件后10行)
2) tail --n 5 文件 (功能描述:查看文件后5行)
3) tail -f 文件 (功能描述:实时追踪该文档的所有更新。工作中经常使用)
- ln指令
基本语法:
ln -s [原文件或目录][软连接名] (功能描述:给原文件按创建一个软连接)
- history指令
基本语法:
history (功能描述:查看已经执行过的历史命令)
案例:history 10(查看最近使用过的10个指令)
时间日期类:
- date指令-显示当前日期
基本语法:
1)date (功能描述:显示当前时间)
1)date+%Y (功能描述:显示当前年份)
1)date+%m (功能描述:显示当前月份)
1)date+%d (功能描述:显示当前是哪一天)
1)date "+%Y-%m-%d %H:%M:%S"(功能描述:显示当前年月日时分秒)
- date指令-设置日期
基本语法:
date -s 字符串时间
案例:
date -s "2018-10-10 11:22:22"
- cal指令
基本语法:
cal[选项] (功能描述:不加选项,显示本月日历)
搜索查找类
- find指令
基本语法:
find [搜索范围] [选项]
选项说明:
-name<> 按照指定的文件名查找模式查找文件
-user<用户名> 查找属于指定用户名所有文件
-size<文件大小> 按照指定的文件大小查找文件
案例:
find /home -name hello.txt
find /opt -user nobody
find / -size +20M(-20M 20M)
- locate指令
基本语法:
locate 搜索文件
注意:
第一次运行前,必须updatedb指令创建locate数据库
案例:
使用locate快速定位hello.txt:locate hello.txt
- grep指令和管道符号|
- grep过滤查找,管道符|表示将前一个命令的处理结果输出传递给后面的命令处理
基本语法:
grep[选项] 查找内容 源文件
常用选项
-n 显示匹配行及行号
-i 忽略字母大小写
案例:
cat hello.txt | grep -n haha
cat hello.txt | grep -ni haha
压缩和解压
- gzip/gunzip 指令
- gzip用于压缩文件,gunzip用于解压的
基本语法:
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
- zip/unzip指令
- zip用于压缩文件,unzip用于解压的。这个在项目打包发布中很有用
基本语法:
zip [选项] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录)
unzip [选项] XXX.zip(功能描述:解压缩文件)
zip常用选项
-r:递归压缩,及压缩目录
unzip常用选项
-d<目录>:指定解压后文件的存放目录
案例:
zip -r mypackage.zip /home/
unzip -d /opt/tmp/ mypackage.zip
- tar指令
- tar指令时打包指令,最后打包后的文件时.tar.gz的文件。
基本语法:
tar [选项] XXX.tar.gz 打包的内容 (功能描述:打包目录。解压后的文件格式.tar.gz)
选项说明
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包.tar文件
案例:
tar -zcvf a.tar.gz a1.txt a2.txt(打包后的文件名 对那些文件打包)
tar -zcvf myhome.tar.gz /home/ (将/home的文件夹压缩成myhome.tar.gz)
tar -zxvf z.tar.gz (将z.tar.gz解压到当前目录)
组管理和权限管理
Linux组基本介绍
- 在Linux中每个用户必须属于一个组,不能独立于组外
- 所有者
- 所在组
- 其他组
- 改变用户所在的组
- 修改文件所有者
基本语法:
chown 用户名 文件名
案例:
chown tom apple.txt (将apple.txt所有者变为tom)
- 修改文件所在组
- 单某个用户创建一个文件后,默认这个文件所在组就是改用户所在组
基本语法:
chgrp 组名 文件名
案例:
chgrp police orange.txt
- 其他组
- 除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
- 改变用户所在组
基本语法:
usermod -g 组名 用户名
usermod -d 目录名 用户名 改变该用户登入的初始目录
权限基本介绍
ls -l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0-9位说明:
1) 第0位确定文件类型(d,-,l,c,b)
2) 第1-3位确定所有者(该文件所有者)拥有该文件的权限 --User
3) 第4-6位确定所属组(同用户组的)拥有该文件的权限 --Group
4) 第7-9位确定其他用户拥有该文件的权限 --Other
- 权限详解
- rwx作用到文件
1) [r]代表可读(read):可以读取,查看
2) [w]代表可写(write):可以修改,但是不能删除改文件,删除一个文件的前提条件是对该文件的所在目录有写权限,才能删除该文件
3)[x]代表可执行(execute):可以被执行
- rwx作用到目录
1)[r]代表可读(read):可以读取,ls查看目录内容
2)[w]代表可写(write):可以修改,目录内创建+删除+重命名目录
3)[x]代表可执行(execute):可以进入该目录
- 数字表示
可用数字表示为:r=4 w=2 x=1 因此rwx=4+2+1=7
- 修改权限-chmod
- 通过chmod指令,可以修改文件或者目录的权限
- 第一种方式:+,-,=变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u,g,o的总和)
1)chmod u=rwx,g=rx,o=x 文件目录名
2)chmod o+w 文件目录名
3)chmod a-x 文件目录名
- 第二种方式
规则:r=4 w=2 x=1 , rwx=4+2+1=7
rwx = 4+2+1=7
r-x = 4+1 = 5
- 修改文件所有者
基本语法:
chown newowner file 改变文件的所有者
chown newowner:newgroup file 改变用户的所有者和所有组
-R 如果时目录 则使其下所有子文件或目录递归生效
- 修改文件所在组-chgrp
基本语法:
chgrp newgroup file 改变文件的所有组
案例:
chgrp -R bandit /home/kkk(将/home/kkk目录下所有的文件和目录所在组都修改成bandit)
crond任务调度
- 原理示意图
- 任务调度:是指系统在某个时间执行的特定的命令或程序
基本语法:
crontab[选项]
常用选项
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
- 快速入门
- 任务的要求
设置任务调度文件:/etc/crontab
设置个人任务调度。执行crontab -e命令
接着输入任务到调度文件
如:*/1 * * * * ls -l /etc/>/tmp/to.txt
意思是说每小时的每分钟执行ls-l/etc/>>/tmp/to.txt
- 步骤如下:
cron -e
*/1 * * * * ls-l/etc>tmp/to.txt
保存退出
在每一分钟就会自动的调用ls-l/etc>>/tmp/to.txt
- 参数细节说明
- 五个占位符的说明
项目 含义 范围
第一个* 一个小时中的第几分钟 0-59
第二个* 一天当中的第几小时 0-23
第三个* 一个月中的第几天 1-31
第四个* 一年中的第几个月 1-12
第五个* 一周当中的星期几 0-7(0和7都代表星期日)
- 特殊符号说明
* 代表任何时间
, 代表不连续的时间
- 代表连续的时间范围
*/n 代表每隔多久执行一次
- 特定时间执行任务案例
时间 含义
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,5 * 1 每月1号和15号,每周一的0点0分都会执行命令
Linux磁盘分区,挂载
分区基础知识
- 分区的方式
- mbr分区
1. 最多至此四个主分区
2. 系统只能安装在主分区
3. 扩展分区要占一个主分区
4. MBR最大只支持2TB但拥有最好的兼容性
- gtp分区
1. 支持无限多个主分区
2. 最大支持18EB的大容量
3. windows7 64位以后支持gtp
- 使用lsblk(老师不离开)指令查看当前系统的分区情况
- 如何增加一块硬盘
1. 虚拟机添加硬盘
2. 分区 fdisk/dev/sdb
3. 格式化 mkfs -t ext4 /dev/sdb1
4. 挂载 先创建一个/home/newdisk 挂载mount /dev/sdb1 /home/newdisk
5. 设置可以自动挂载
vim /etc/fstab
/dev/sdb1 /home/newdisk ext4 defaults
- 查询系统整体磁盘使用情况
基本语法:
df -h
案例
df -lh
- 查询指定目录的磁盘占用情况
基本语法:
du -h /目录
# 查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出目录的同时,增加汇总值
案例:查询/opt目录的磁盘占用情况,深度为1
du -ach --max-depth=1 /opt
- 磁盘情况-工作使用指令
1. 统计/home文件夹下文件的个数
ls -l /home | grep "^d" wc -l
2. 统计/home文件夹下目录的个数
ls -l /home | grep "^d" | wc -l
3. 统计/home文件夹下文件的个数,包括子文件夹里的
ls - lR /home | grep "^-" | wc -l
4. 统计文件夹下目录的个数。包括子文件夹里面的
ls - lR /home | grep "^d" | wc -l
5. 以树状显示目录结构
tree
网络配置
- 测试主机之间网络联通 ping 目的主机
进程管理
显示系统执行的进程
- 查看进行使用的指令是ps,一般来说使用的参数是ps -aux
ps 显示的信息选项
字段 说明
PID 进程标识号
TTY 终端机号
TIME 此进程所消耗CPU时间
CMD 正在执行的命令或进程名
ps -a: 显示当前终端的所有进程信息
ps -u: 以用户的格式显示进程信息
ps -x: 显示后台进程的参数
终止进程kill和killall
基本语法:
kill [选项] 进程号 (功能描述:通过进程号杀死进程)
killall 进程名字 (功能描述:通过进程名称杀死进程,也支持通配符)
常用选项:
-9:表示强迫进程立即停止
查看进程树pstree
基本语法:
pstree[选项]: 可以更加直观的来看进程信息
常用选项:
-p: 显示进程的PID
-u:显示进程的所属用户
服务(Service)管理
service管理指令
swevice 服务名 [start | stop | restart | reload | status]
动态监控进程
- top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程
基本语法:
top[选项]
选项说明:
选项 功能
-d 秒数 指定top命令每隔几秒更新
-i 使top不显示任何闲置或者僵尸进程
-p 通过指定监控进程id来监控某个进程状态
交互操作说明:
操作 功能
P 以CPU使用率排序(默认就是此项)
M 以内存使用率排序
N 以PID排序
q 退出top
查看系统网络情况netstat(重要)
基本语法:
netstat[选项]
netstat -anp
选项说明
-an 按一定顺序排列输出
-p 显示那个进程在调用
Python: apt软件管理和远程登入
- Ubuntu软件操作的相关命令
sudo apt-get update 更新源***
sudo apt-get install package 安装包***
sudo apt-get remove package 删除包***
sudo apt-cache search package 搜索软件包
sudo apt-cache show package 获取包的相关信息:说明 大小 版本等***
sudo apt-get install package --reinstall 重新安装包
sudo apt-get -f install 修复安装
sudo apt-get remove package --purge 删除包,包括配置文件等
sudo apt-get build-dep package 安装相关的编译环境
sudo apt-get upgrade 更新已安装的包***
sudo apt-get dist-upgrade 升级系统
sudo apt-chche depends packages 了解使用该包依赖那些包
sudo apt-chche rdepends package 查看该包被那些包依赖
sudo apt-get source package 下载该包的源代码
Linux知识补充(更新时间: 2021-7-22 20:12)
tail命令
从文件尾部向上查看最后n行的内容
使用方式:tail -n[行数] 文件名
如果没有指定行数,默认显示最后10行内容
*****
一个比较重要的应用:显示日志 : tail -f test.log
一个终端tail -f test.log , 另一个终端: echo “hello world” >>test.log
*****
软链接 -- 源文件要使用绝对路径
* 软连接类似于windows下的快捷方式
* 如何创建软连接:
ln -s 文件名 快捷方式的名字
例如:ln -s aa aa.soft
目录也可以创建软连接
例如:ln -s tmp tmp.link
*****
创建软链接应注意事项:
ln创建软连接要用绝对路径,因为如果不使用绝对路径,一旦这个连接文件发生位置变动,就不能找到那个文件了。(如果使用相对路径软连接或者原文件移动位置都找不到了)
软连接文件的大小是: 路径+文件名的总字节数
硬链接
* ln 文件名 硬链接的名字
* ln test.log test.log.hard
* 使用硬链接应注意事项
* 硬链接不能建在目录上 目录不能建立硬链接
* 硬连接对绝对路径没有要求
* 硬连接不能跨文件系统
硬链接文件和源文件的inode是相同的,文件系统的inode要求唯一,跨文件系统可能会使inode不同, 所以硬链接不能跨文件系统
* 硬链接的本质
* 硬连接的本质是不同的文件名所在的inode节点是相同的,相同的inode节点指向了相同的数据块,所以他们的文件内容是一样的,文件内容会同步。
软件的安装和卸载
11.1 在线安装 -- 建议安装前update下
软件安装:sudo apt-get install 软件名
软件卸载:sudo apt-get remove 软件名
更新软件列表:sudo apt-get update
清理安装包:sudo apt-get clean
清理的是缓存路径:/var/cache/apt/archives
11.2 软件包安装
在Ubuntu系统下必须有deb格式的安装包
软件安装
sudo dpkg -i xxx.deb
软件卸载
sudo dpkg -r 软件名
-------------2021-7-26更新
linux查看cuda版本
cuda一般安装在 /usr/local/cuda/ 路径下,该路径下有一个version.txt文档,里面记录了cuda的版本信息
cat /usr/local/cuda/version.txt
---------------2021-9-26更新
- wget命令下载文件
https://www.cnblogs.com/sx66/p/11887022.html
- linux之间复制文件和目录命令scp
https://www.runoob.com/linux/linux-comm-scp.html
######################2023年11月30号更新###################################