Linux学习笔记

Linux学习

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关机&重启命令

  1. 基本操作:
shutdown
    shotdown -h now:表示立即关机
    shutdown -h 1:表示一分钟后关机
    shotdown -r now:立即重启
halt
    就是直接使用,等价于关机
reboot
    重启系统
syn
    把内存的数据同步到磁盘

用户登入和注销

  • 登入是尽量少用root账号登入,可以用普通用户登录,后再用"su- 用户名"切换成管理员身份
  • 在提示符下输入logout即可注销用户

用户管理:

  • linux操作系统示意图
  • linux的用户需要至少属于一个组
  1. 添加用户
useradd [选项] 用户名
例如:useradd xiaoming
  1. 给用户指定或修改密码
基本语法:
passwd 用户名
例如: passwd xiaoming
  1. 删除用户
基本语法:
userdel 用户名

1)删除用户xiaoming,但要保留家目录:
userdel xiaoming
2)删除用户xiaoming以及用户主目录:
userdel -r xiaoming
  1. 查询用户信息
基本语法:
id  用户名
例如:
id root
uid=0(root) gid=0(root) 组=0(root):分别为用户id号,所在组的id号,组名
注:当用户不存在时,返回“无此用户”
  1. 切换用户:
基本语法:
su - 切换用户名
由权限高的用户切换到权限低的用户不需要密码,反之需要
但需返回到原来用户时,使用exit指令
  1. 用户组:
1.增加组:
groupadd 组名
2.删除组:
groupdel 组名
3.增加用户时直接加上组
useradd -g 用户组 用户名
4.修改用户的组
usermod -g 用户组 用户名
  1. 配置文件
1. /etc/passwd
用户的配置文件,记录用户的各种信息
2. /etc/shadow
口令的配置文件
3. /etc/group
组的配置文件:记录Linux包含的组的信息

实用指令

1.运行级别说明

  • 0:关机
  • 1:单用户
  • 2:多用户状态没有网络服务
  • 3:多用户状态由网络服务
  • 4:系统未使用保留给用户
  • 5: 图形界面
  • 6:系统重启

2.切换到指定级别的指令

  1. 基本语法:
init[012356]
  1. 面试题:如何找回root密码,如果不小心忘记了root密码,怎么找回
思路:进入到单用户模式,然后修改root密码
因为进入单用户模式。root不需要密码就可以登入

3.帮助指令:

  1. man 获得帮助信息
基本语法:
man [命令或配置文件]
  1. help指令
基本语法:
help 命令

4.文件目录类:

  1. pwd指令
基本语法:显示当前工作目录的绝对路径
pwd
  1. ls指令
基本语法:
ls [选项] [目录或文件]
常用选项:
-a : 显示当前所有的文件和目录,包括隐含的
-l : 以列表的形式显示信息
  1. cd指令
基本语法:
cd [参数] (功能描述:切换到指定目录)
切换到家目录: cd  或者 cd ~
  1. mkdir指令:用于创建目录
基本语法
    mkdir [选项] 要创建的目录
常用选项
    -p : 创建多级目录
  1. rmdir指令:删除空目录
基本语法:
mkdir [选项] 要删除的空目录
提示:如果需要删除非空目录,需要使用rm -rf 要删除的目录
  1. touch指令
基本语法:
    touch 文件名称
  1. cp指令[重要]
基本语法:
    cp[选项] source dest
常用选项
    -r : 递归复制整个文件夹
  1. rm指令
基本语法:
    rm [选项] 要删除的文件或目录
常用选项
    -r : 递归删除整个文件夹
    -f : 强制删除不提示
  1. mv指令:移动文件于目录或重命名
基本语法:
    mv oldNameFile newNameFile(移动文件)
    mv /temp/movefiel/targetFolder(功能描述:移动文件)
  1. cat指令
  • cat查看文件内容,是以只读的方式打开
基本语法:
    cat [选项] 要查看的文件
常用选项:
    -n:显示行号
使用细节
    cat只能浏览文件不能修改文件,为了浏览方便一般会带上管道 | more
    cat 文件名 | more(分页浏览)
  1. more指令
  • 以全屏幕的方式按页显示文本文件的内容
基本语法:
    more 要查看的文件
应用实例:
    more /etc/profile
  • more快捷键
  1. less指令
  • 分屏查看文件内容,对于大型文件具有较高效率
基本语法
    less 要查看的文件
  1. '> 指令和 >>指令'
> 输出重定向:会将原来的文件内容覆盖
>> 追加:追加到文件的尾部
基本语法:
1) ls-l>文件(功能描述:列表中内容写入到a.txt中)
2) ls-al>>文件(功能描述:列表中内容追加到a.txt中)
3) cat 文件1>文件2(功能描述:将文件1的内容覆盖到文件2)
4) echo "内容" >> 文件
  1. echo指令
基本语法:
    echo [选项] [输出内容]
应用案例
    使用enho输出环境变量 echo $PATH
  1. head指令
基本语法
    head 文件 (功能描述: 查看文件头10行)
    head -n 5 文件 (功能描述: 查看文件头5行)
  1. tail指令
基本语法:
1) tail 文件 (功能描述:查看文件后10行)
2) tail --n 5 文件 (功能描述:查看文件后5行)
3) tail -f 文件 (功能描述:实时追踪该文档的所有更新。工作中经常使用)
  1. ln指令
基本语法:
    ln -s [原文件或目录][软连接名] (功能描述:给原文件按创建一个软连接)
  1. history指令
基本语法:
    history (功能描述:查看已经执行过的历史命令)
案例:history 10(查看最近使用过的10个指令)

时间日期类:

  1. date指令-显示当前日期
基本语法:
    1)date (功能描述:显示当前时间)
    1)date+%Y (功能描述:显示当前年份)
    1)date+%m (功能描述:显示当前月份)
    1)date+%d (功能描述:显示当前是哪一天)
    1)date "+%Y-%m-%d %H:%M:%S"(功能描述:显示当前年月日时分秒)
  1. date指令-设置日期
基本语法:
    date -s 字符串时间
案例:
    date -s "2018-10-10 11:22:22"
  1. cal指令
基本语法:
    cal[选项] (功能描述:不加选项,显示本月日历)

搜索查找类

  1. find指令
基本语法:
    find [搜索范围] [选项]
选项说明:
    -name<> 按照指定的文件名查找模式查找文件
    -user<用户名> 查找属于指定用户名所有文件
    -size<文件大小> 按照指定的文件大小查找文件
案例:
    find /home -name hello.txt
    find /opt -user nobody
    find / -size +20M(-20M 20M)
  1. locate指令
基本语法:
    locate 搜索文件
注意:
    第一次运行前,必须updatedb指令创建locate数据库
案例:
    使用locate快速定位hello.txt:locate hello.txt
  1. grep指令和管道符号|
  • grep过滤查找,管道符|表示将前一个命令的处理结果输出传递给后面的命令处理
基本语法:
    grep[选项] 查找内容 源文件
常用选项
    -n 显示匹配行及行号
    -i 忽略字母大小写
案例:
    cat hello.txt | grep -n haha
    cat hello.txt | grep -ni haha

压缩和解压

  1. gzip/gunzip 指令
  • gzip用于压缩文件,gunzip用于解压的
基本语法:
    gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)
    gunzip 文件.gz (功能描述:解压缩文件命令)
  1. 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
  1. 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中每个用户必须属于一个组,不能独立于组外
  • 所有者
  • 所在组
  • 其他组
  • 改变用户所在的组
  1. 修改文件所有者
基本语法:
    chown 用户名 文件名
案例:
    chown tom apple.txt  (将apple.txt所有者变为tom)
  1. 修改文件所在组
  • 单某个用户创建一个文件后,默认这个文件所在组就是改用户所在组
基本语法:
    chgrp 组名 文件名
案例:
    chgrp police orange.txt
  1. 其他组
  • 除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
  1. 改变用户所在组
基本语法:
    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

  • 权限详解
  1. rwx作用到文件
1) [r]代表可读(read):可以读取,查看
2) [w]代表可写(write):可以修改,但是不能删除改文件,删除一个文件的前提条件是对该文件的所在目录有写权限,才能删除该文件
3)[x]代表可执行(execute):可以被执行
  1. rwx作用到目录
1)[r]代表可读(read):可以读取,ls查看目录内容
2)[w]代表可写(write):可以修改,目录内创建+删除+重命名目录
3)[x]代表可执行(execute):可以进入该目录
  1. 数字表示
可用数字表示为:r=4 w=2 x=1 因此rwx=4+2+1=7
  1. 修改权限-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
  1. 修改文件所有者
基本语法:
    chown newowner file 改变文件的所有者
    chown newowner:newgroup file 改变用户的所有者和所有组
    -R 如果时目录 则使其下所有子文件或目录递归生效
  1. 修改文件所在组-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
  • 参数细节说明
  1. 五个占位符的说明
项目        含义                范围
第一个*     一个小时中的第几分钟  0-59
第二个*     一天当中的第几小时    0-23 
第三个*     一个月中的第几天      1-31
第四个*     一年中的第几个月      1-12
第五个*     一周当中的星期几      0-7(0和7都代表星期日)
  1. 特殊符号说明
* 代表任何时间
, 代表不连续的时间
- 代表连续的时间范围
*/n 代表每隔多久执行一次
  1. 特定时间执行任务案例
时间            含义
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磁盘分区,挂载

分区基础知识

  • 分区的方式
  1. mbr分区
1. 最多至此四个主分区
2. 系统只能安装在主分区
3. 扩展分区要占一个主分区
4. MBR最大只支持2TB但拥有最好的兼容性
  1. gtp分区
1. 支持无限多个主分区
2. 最大支持18EB的大容量
3. windows7 64位以后支持gtp
  • 使用lsblk(老师不离开)指令查看当前系统的分区情况
  1. 如何增加一块硬盘
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
  1. 查询系统整体磁盘使用情况
基本语法:
    df -h
案例
    df -lh
  1. 查询指定目录的磁盘占用情况
基本语法:
    du -h /目录
# 查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出目录的同时,增加汇总值
案例:查询/opt目录的磁盘占用情况,深度为1
    du -ach --max-depth=1 /opt
  1. 磁盘情况-工作使用指令
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
原文地址:https://www.cnblogs.com/zranguai/p/13934166.html