linux基础命令新手版

  • 解释每个命令的释义
  • 让你知其所以然
  • 代码复制可直接使用
  • 让你零基础学linux

写在前面

# 一、指令的帮助即解释
# 1. man: manualsman ls# 可能对于内置命令以及外置命令加参数问题
man -f cdman 1p cdman 3 cd# 2. --helpls --help# 二、清屏
# 1
clear
# 2
ctrl + l# 3. bash
unix中:Bourne shell
linux:Bourne Again Shell # Bash# 4. shell内置命令 及 外部命令
# 一部分基础功能的系统命令是直接内嵌在shell中的,系统加载启动之后会随着shell一起加载,这部分命令被称为内置命令;其他的命令被称为外部命令
type 命令 # 判断属于哪种命令
type cd # 内部命令

用户的相关操作

# 为了安全,所以需要创建多个用户
# 创建用户时,如果没有指定组,还会默认创建一个组
# 创建用户时,如果没有指定目录,默认会在/home/ 下创建同名的目录# 然后用户登录时,自动进入自己的家目录(/home/xiaoming)
useradd xiaoming
useradd -d /home/tiger xiaoming # -d是指明目录的意思# 设置用户的密码
passwd xiaoming# 删除用户
userdel xiaoming # 不会删除 /home/xiaoming,一般用这个,可能需要这个人的文件
userdel -r xiaoming #会删除/home/xiaoming# 查询用户
id xiaoming # 查询用户名为xiaoming的信息# 切换用户
su - xiaoming # 切换到小明
exit  # 退出xiaoming用户,回到原来的用户
whoami # 查看当前登录用户# 用户组: 角色的感觉# 新增用户组
groupadd group1
groupadd group2# 添加用户时指定组
useradd -g group1 xiaohong# 修改用户所在的组
usermod -g group2 xiaohong# 修改组名: 目标 源
groupmod -n haircut meifa# 删除用户组
groupdel group1# 其实有个wheel组,其实是管理员组
可以从/etc/group查看,前面加了%# 用户和组的相关的配置文件
/etc/passwd 文件   # User Database
/etc/shadow 文件   # 口令配置文件(密码和登录信息)
/etc/group 文件  # Group Database

linux指令的运行级别(7)

# 在centos6中开机->BIOS->/boot->init进程->运行级别->运行级别对应的服务(常用3,5)0: 系统停机状态,系统默认运行级别不能设为0,否则不能正常启动。1: 单用户(找回丢失密码),root权限,用于系统维护,禁止远程登录2: 多用户无网络服务(无NFS)3: 多用户有网络服务(有NFS): ----最经常用4: 保留5: 图形化界面。   ----次常用6: 系统正常关闭并重启,默认级别不能设置为6,否则不能正常启动#  centos6 这个文件可以设置
运行级别配置文件:/etc/inittab
的id:5:initdefault:这一行的数字5决定了运行级别# centos7 运行级别简化了(3和5),target表示一组服务的集合
# centos7下这个文件设置就没有用了,需要systemd(system daemon)
#  multi-user.target: analogous to runlevel 3
#  graphical.target: analogous to runlevel 5
systemctl get-default   # 获取当前的运行级别 =>graphical.targetsystemctl set-default multi-user.target # 设置默认运行级别为命令行模式# centos 6 和7 皆可
#切换指令
init[012356]# 例子:从5->3->5->关机
init 3  # 进入到命令行模式了init 5 #进入到图形化界面了init 0 # 关机了# centos6 系统下
# 找回root密码
1.进入单用户模式-(此时root不需要密码就可以登录)
2.修改root密码
# 开机在引导时按住enter键,然后修改命令行,在后面加1,然后按b
# 其实就是修改当前的开启指令# centos7下
# e: edit启动指令
# ro 改为 rw init=/sysroot/bin/bash
# ctrl + x : 单用户启动
# chroot /sysroot : 访问系统
# passwd root: 修改root密码
# touch /.autorelabel  :让修改生效
# exit: 退出系统
# reboot: 重启

mkdir&rmdir

# 作用:创建文件夹# 命令解释: make directorymkdir  dir001          # 创建名为 dir001的文件夹mkdir -p dir002/dir003 # -p 是parents的意思,如果没有父目录dir002,就创建父目录dir002,然后创建dir003mkdir /test/{dir1,dir2,dir3,dir4} # 在test文件夹下面同时创建 dir1,dir2,dir3,dir4# 删除空目录
rmdir /test/dir1

查找之findlocategrep

# find
# 作用:查找某一个文件夹下具有某种特征的文件
# 解释 find 文件夹  文件夹名称/文件名称
# 可以用来查找某些符合某些特征的文件,然后删除
# 按名字
find dir1/ -name "a*"  # 查找文件夹dir1下的所有以a开头的文件及文件夹# 按所有者
find /dir/ -user 'zg' # 查找/dir下属于用户zg的所有文件# 按文件大小(+、-)
find / -size +20M #查找系统中文件大小 大于 20M的文件
find / -size -20M #查找系统中文件大小 小于 20M的文件
find / -size 20M #查找系统中文件大小 等于 20M的文件# locate
# 快速定位文件路径
# 前提:使用updatedb创建locate数据库
# 为什么快:利用事先建立的系统中所有的文件名称及路径的locate数据库实现快速定位给定的文件而无需遍历整个文件系统,查询速度快;但为了查询的准确度,管理员必须定期地更新locate时刻updatedb # 创建locate数据库locate hello.txt # 快速定位hello.txt文件# grep 及 |
# 管道符号 | 把前一个命令处理的结果传递给后面的命令处理# grep 语法
# grep [选项] 查找的内容 源文件
# 选项:-n:显示匹配行及行号;-i:忽略大小写grep -n "world" hello.txt  # 在hello.txt文件中查找world并显示行号ls -l | grep “hello.txt” # 查找当前目录下文件名为hello.txt的文件

ls


# 作用:列出文件夹下的内容# 命令解释: list directory contentsls          # 显示当前路径下的所有内容ls  a/b     # 显示当前路径下的路径a/b 下面的所有内容ls -l  # 列出当前文件夹下所有文件的详细信息(-l= --format=long)
ll  # 是ls -l的简写形式

cd


# 作用:改变当前路径# 命令解释: change directorycd /   # 进入根目录cd a/b  # 进入a/b路径cd ~ 或者 cd # 进入家目录cd - 回到来的目录

pwd


# 作用:打开当前工作路径# 命令解释: print work directorypwd

vim

# 作用:编辑文件(若没有则新建然后打开进行编辑)# 命令解释: vi improved# 编辑器的三种模式
# a. 命令行模式# 通过vim刚进的时候就处于这个模式# 编辑后按esc也可以进入# 可以通过箭头进行行列的移动# dd 删除一行; 删除多行,比如5行 5dd# d$: 删除当前行光标及其后# d^: 删除当前行光标及其前# dw: 删除当前光标所在词# yy 复制当前行;5yy 拷贝当前向下的五行;并粘贴(p)# y$: 复制当前行光标及其后# y^: 复制当前行光标及其前# yw: 复制当前光标所在词# x/X: 剪切/删除单个字符,方向不一样,X从当前位置往前删,符合正常逻辑,x相反# r/R: r更改/替换当前光标的单个字符,R可以连续输入替换# /字符  查找字符 按n可以移动到符合选择字符的下一个,shift+n往回找 # 替换# :s/oloVal/newVal  替换光标所在行的第一个符合要求的# :s/oldVal/newVal/g 替换本行的所有符合要求的# :%s/oldVal/newVal 替换所有行的第一个符合要求的# :%s/oldVal/newVal/g 替换文档中所有符合要求的# ^: 光标移动到行头# $: 光标移动到行尾# w: 移动到下一个词# e: 当前词尾# b: 上个词头# 数字N+ G: 移动到目标行# G 文档的末尾 /  gg 文档的首行# u 撤销之前的操作,如同window的ctrl z# :set nu ->  20 shift+g 光标移动到第20行# :set nonu 关闭行号
# b. 编辑模式# 进入命令行模式后,按i可以进行当前光标前进行插入编辑# 按a可以进行当前光标后进行插入编辑# 按o可以进行当前光标下一行空白行进行插入编辑# 按I可以进行当前光标行前进行插入编辑# 按A可以进行当前光标行后进行插入编辑# 按O可以进行当前光标上一行空白行进行插入编辑
# c. 底行模式# 输如:即可进入# :set nu 可以设置行号/:set nonu 取消设置行号# 可以使用:q,:q!;:wq;:wq!进行退出# 其中w: write,即把缓冲区的东西写入到磁盘# 其中q: quit,退出编辑器# 其中!表示强制
# 下面的命令是按照步骤执行的vim hello.sh       # 编辑hello.sh,如果没有,创建hello.sh然后进行编辑:set nu    # set nu进入后输入可以显示编辑器的行号i    # 进入编辑模式# 编辑esc   # 退出编辑# 下面命令是或的关系
:q   # quit 不保存退出:q!  #  不保存强制退出:wq  # write quit 保存并退出:wq! # 保存并强制退出

touch

# 作用:主要是改变文件的时间戳,如果是没有的文件,则创建空的文件# 命令解释: change file timestampstouch hello.sh  # 改变hello.sh文件的时间属性为当前时间,若没有文件,则创建一个空文件,然后修改时间属性# 改变文件的时间属性为我们想要设定的值
# 时间格式为:[[CC]YY]MMDDhhmm[.ss] 如:201812051945.44
# 表示2018-12-05 19:45:44
touch -t "201812051945.44" hello.hello # -t 即time# 提供-c  -h参数:即使没有文件,也不新建
touch hello.sh -c      # -c 即--no-create        不创建touch hello.sh -h      # -h 即--no-dereference  没有间接引用

catmoreless

# cat
# 作用:连接文件,然后打印输出;常用来显示文件内容# 命令解释: cat - concatenate(连接,链接) files and print on the standard outputcat  hello.sh  # 输出hello.sh的内容cat hello.sh world.sh # 输出两者的内容cat -n hello.sh world.sh    # -n即number 输出两者的内容并显示行号# 一般cat和more搭配,其中more是分页的意思
cat hello.txt | more.  # 分页显示文件内容,而非一下子全部显示# more# 作用:以全屏的方式按页显示文本文件的内容# 这个指令里面内置了很多的指令# enter 一行一行查看# q 退出查看# 空格 一页一页查看# ctrl + b 上一页: back# ctrl + f 下一页: forward# = 显示当前行号# :f 输出文件名和当前行的行号# less
# 作用:分屏查看文件的内容;与more类似,但是功能比more强大
# 在显示内容时,并不是一次将整个文件加载后显示,而是根据需要加载内容,这对于大文件来说非常的好
# G:跳到结尾
# g: 跳到开头
# /字串: 向下查找,若有多个匹配,n向下,N向上
# ?字串: 向上查找,若有多个匹配,n向上,N向下

重定向>追加>>

  • 输入重定向:使用场合,往已存在文件里添加少量文件
# 作用:把输入的内容放到某个文件中,文件不存在,则会自动创建# 命令解释: 无# 上述学到的echo和cat在这里会有用哦# 假设有文件 hello.txt 里面的内容是 hello line001
cat hello.txt    # =>hello line001# 在此内容追加
echo "hello line002" >> hello.txt
#hello.txt 变成    hello line001  hello line002# 重写 hello.txt
echo 'hello line003' > hello.txt
#hello.txt 变成    hello line003
  • 输出重定向:使用场合,往已存在文件里添加大量文件
# 假设有文件 hello.txt 里面的内容是 hello line001
cat hello.txt   # =>hello line001# 如果此时我们想输入多行内容,可以这样做
cat >> hello.txt << EOF    #=>这行代码就是让你输入东西,然后输入EOF代表结束,当然EOF可以改成任意的,比如HELLO

运行结果如下

echotailhead


# 作用:展示文件的前几行(head)或者后几行(tail);平常使用场景是输出日志的实时更新的情况
# 命令解释:tail:尾巴     head: 头# 假如有默认文件 hello1.txt,里面的内容每行内容为 line 1 ~ line 13tail hello1.txt   # 默认显示前十行,即输出line 1 ~ line 10tail -n 8 hello1.txt # 通过指定数字来让他显示几行# head 的命令使用和上面的一样# 下面介绍tail常用场景:打印日志的实时输出tail -f -n 10 my_out.log # 显示日志的最新的十行日志# -f 是 follow的意思,output appended data as the file grows;# echo# 作用:输出字符串 或者 变量# 命令解释: echo: 再现echo   'hello world'  # 答应 字符串‘hello world’echo $PATH  # PATH是系统变量,它决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接。

ln

# 作用:创建连接 link# 本质上是个文件,里面存在的是别的文件/文件夹的地址# 辅助解释:类似window下的快捷方式# 官方解释:make links between files# 语法: ln -s 原文件/夹 连接名称ln -s /root myRootLink # 创建到root目录到快捷方式
cd myRootLink
pwd # 显示的是/myRootLinkcd myRootLink # 进入到root文件夹
pwd -P # 显示/root# 建议使用
rm -rf myRootLink # 不会删除链接的文件,
# 而非
rm -rf myRootLink/  # 会删除链接的文件# 关于文件
# 文件文件时一个INode,都有index索引,可以通过ls -i 文件名
# ln 文件/目录 硬连接名  创建硬连接,它不是文件,指向的是INode

history

# 作用: 查看执行过的历史指令# 语法: history [n]history #显示所有的历史指令history 10 # 显示最近的10条指令
#输出为:# 969  cd ~#970  pwd#971  man mkdir#972  cd ~#973  ls#974  cd Desktop#975  ls#976  cd linux-learn-space#977  ls#978  cd test001!978  # 快速执行978号指令# 清空历史记录
history -c 删除所有命令历史记录

stat

# 作用:显示文件或者文件系统的状态;没有目录哦# 命令解释: display file or file system status stat hello.sh  # 展示hello.sh文件的状态# 常用的是按照格式输出
# -c --format=FORMAT
# %a   access rights in octal:十进制输出文件的访问权限
stat -c  %a hello.sh  # 展示hello.sh文件的状态# %A   人能够读懂的方式,即rwx(read,write,excute)
stat -c  %A hello.sh  # 展示hello.sh文件的状态stat -f /  # 显示文件系统的状态

移动、复制、删除、重新命名命令

# 作用:文件或者文件夹从一个文件夹复制或者移动到另外一个文件夹
# 可以加参数 -f  :force 强制移动或者copy
# 可以加参数 -r  :recursion 递归 ,就是如果复制的文件夹,连同他下面所有的文件和文件夹都复制到目标文件夹里# 命令解释: cp 源文件/文件夹  目的文件/文件夹
# cp: copy之意# 假设 dir001 下有 hello1.txt文件
#     dir002下为空
#     当前所在目录 current
ls current     # => dir001 dir002cp dir001/hello.txt dir002    # 复制ls dir002   # => hello.txt  cp dir001/hello.txt dir002/hellocopy.txt  # 复制并改名cp -r dir001/ dir002/  # 复制dir001目录及其下面的所有东西到目录dir002下\cp -r dir001/ dir002/ # 复制并强制覆盖ls dir002   # => hello.txt hellocopy.txt# 命令解释: mv 源文件/文件夹  目的文件/文件夹
# 命令解释: mv 1. 改名或者是移动文件mkdir dir003# 查看各个文件夹下面已经有的内容ls dir003 #=> 空的ls dir001   # => hello.txtls dir002 # => hello.txt hellocopy.txt# 移动或者改名
# mvmv hello.txt world.txt # 将hello.txt改名为world.txtmv dri001/hello.txt  dir003/hello.txt # 移动# 再次查看文件夹的状态ls dir003 #=> hello.txt ,移动过去了ls dir001   # => 空ls dir002 # => hello.txt hellocopy.txtmv dir003/hello.txt dir002/hellocopy2.txt  # 移动并改名# 命令解释: rm 源文件/文件夹
# rm: remove之意
# -r ecursion 递归之意
# -f force 强制之意,没有交互rm -rf dir003     #=>删除dir003文件夹及其下所有的文件rm -rf dir002/hello.txt  #=>删除dir002文件夹下的hello.txt文件

ps|grep与与kill结合


# 因为两者常常放在一起使用,所以我们放在一起介绍# 符号  |
# 符号"|"作用:管道命令符"|",将其左边的输出作为其右边的输入
# 命令解释: display file or file system status # 命令  grep
# 符号grep作用:通过正则表达式搜索符合条件的内容并打印出来
# 命令解释: Globally search a Regular Expression and Print# 命令 ps
# 作用:将现在所有的激活的进程的快照打印出来
# 命令解释: report a snapshot of the current processes# To see every process on the system using BSD syntax
# 查看系统上的每个进程
ps aux#To see every process on the system using standard syntax:
ps -ef# 常用的是查找进程名 然后杀掉它ps aux | grep bash   # ps aux是输出所有的进程的状态,grep是在它输出的信息中查找 叫bash的进程
# ps aux :see every process on the system using BSD syntax# terminate a process
# pid 可以从ps命令中查出
kill -Signal pid
kill -9 pid

which以及里面alias

# which:
# 作用:which用于展示我们所执行的命令是在哪个目录下定义的
# 命令解释:shows the full path of shell commands# alias:
# 作用:alias命令其实为了让我们更加无感的操作,让我们的操作更加安全,比如我们们的命令默认加参数
# 命令解释:alias,别名which pwd    #=> /usr/bin/pwd    显示命令pwd所在的地址      which ls   #=>  alias ls='ls --color=auto'  #=>   /usr/bin/ls#=>  显示命令ls所在的地址,如果有别名,#=>  就先显示alias,然后才显示路径which ll # => alias ll='ls -l --color=auto'#  =>  /usr/bin/ls

scp


# 作用:允许在不同操作系统通过ssh安全的复制文件
# 命令解释:secure copy
# scp  源   目的# 在window 10 系统下从linux中复制文件到windows 10
scp  root@192.168.136.130:/zgsouth/2020-12-15/dir001/*   G:\linuxFile
# 其中root :linux用户名
#     192.168.136.130 为linux的ip地址;可通过ifconfig获取
#     /zgsouth/2020-12-15/dir001/   为路径
# G:\linuxFile    为 window系统下G盘linuxFile文件下# 在window 10 系统下从window 10 复制文件到linux中
scp "G:\linuxFile\hello1 - 副本.txt" root@192.168.136.130:/zgsouth/2020-12-15/dir001

du


# 作用:查看磁盘使用情况
# 命令解释:disk usage# 假设当前执行目录下面有文件hello.txt   hello2.txtdu -ah   # => 输出 4.0K  ./hello.txt#4.0K    ./hello2.txt#8.0K   .
du -sh  #=> 输出 8.0K .#  参数 a: all 展示所有文件的意思
#  参数 h: human readable, 可爱的人能够读懂的,其实就是单位,比如K
#  参数 s: summarize   ,总计,总数

top实时监控系统进程状态netstat显示网络统计信息和端口占用

# 一、top
# 作用:查看系统实时的状况,是动态刷新的# 命令解释:display Linux processes 或者table of  processes # 就如同我们电脑管家一样,可以查看我们的硬盘使用,内存使用,以及各个进程的状态# 语法: top [-d|i|p]
# 选项说明:d: 刷新频率,默认三秒
# i: 不显示任何闲置或者僵死的进程
# p: 指定进程id来监控某个进程的状态# 执行之后 可以交互
# P: 以CPU的使用率排序
# M: 以内存的使用率排序
# N: 以PID排序
# q: 退出toptop   # 运行结果如下所示

# 2.netstat
# 查看系统网络情况netstat
# 语法:netstat [选项]
# 选项:[an|p]
# -a: 所有正在监听(listen)和未监听的套接字(socket)
# -n: 拒绝显示别名,能显示数字的全部转化为数字
# -l: 仅列出在监听的服务状态
# -p:显示哪个进程在调用netstat -anp | grep 进程号 # 查看该进程网络信息netstat -nlp | grep 进程号 # 查看网络端口号占用情况

时间(date,cal,hwclock,ntpdate)

# 综述
# date : 系统时间和日期
# hwclock: 硬件时钟,hardware clock
# ntpdate: 网络时间,network time protocol date# 命令:date
# 作用:显示/设置系统的当前时间# 命令解释:date 时间date  # 显示当前时间
[root@bogon dir004]# date
2020年 12月 15日 星期二 00:17:28 PST# date +"格式的字符串"  # 以某种格式输出时间
date +"%Y-%m-%d %H:%M:%S"
2020-12-15 00:20:06# 设置时间
date -s "2018-08-08 10:10:10"# cal
# 作用: 查看日历信息cal # 显示当月的日历cal 2022 # 显示2022一整年的日历# 命令:hwclock
# 作用:显示硬件时间# 命令解释:硬件 时间
[root@bogon ~]# hwclock
2020年12月15日 星期二 01时32分13秒  -0.740299 秒# 命令:ntpdate server
# 作用:同步时间为某个服务器地址的时间# 命令解释:网络 时间
[root@bogon etc]# ntpdate time.stdtime.gov.tw
15 Dec 03:21:30 ntpdate[8748]: adjust time server 118.163.81.61 offset 0.003032 sec

下载文件

# 命令: wget
# 作用: 从网络上下载文件
# 使用方法: wget 网路地址#下载百度的首页 https://www.baidu.comwget -r https://www.baidu.com # -r是递归recursion的意思# 执行结果
[zgsouth@bogon ~]$ wget -r https://www.baidu.com
--2020-12-15 03:37:28--  https://www.baidu.com/
正在解析主机 www.baidu.com (www.baidu.com)... 110.242.68.4, 110.242.68.3
正在连接 www.baidu.com (www.baidu.com)|110.242.68.4|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2443 (2.4K) [text/html]
正在保存至: “www.baidu.com/index.html”100%[=============================================>] 2,443       --.-K/s 用时 0s      2020-12-15 03:37:28 (373 MB/s) - 已保存 “www.baidu.com/index.html” [2443/2443])正在载入 robots.txt;请忽略错误消息。
--2020-12-15 03:37:28--  https://www.baidu.com/robots.txt
再次使用存在的到 www.baidu.com:443 的连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2814 (2.7K) [text/plain]
正在保存至: “www.baidu.com/robots.txt”100%[=============================================>] 2,814       --.-K/s 用时 0s      2020-12-15 03:37:28 (583 MB/s) - 已保存 “www.baidu.com/robots.txt” [2814/2814])正在载入 robots.txt;请忽略错误消息。
--2020-12-15 03:37:28--  http://www.baidu.com/robots.txt
正在连接 www.baidu.com (www.baidu.com)|110.242.68.4|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2814 (2.7K) [text/plain]
正在保存至: “www.baidu.com/robots.txt”100%[=============================================>] 2,814       --.-K/s 用时 0s      2020-12-15 03:37:28 (512 MB/s) - 已保存 “www.baidu.com/robots.txt” [2814/2814])FINISHED --2020-12-15 03:37:28--
Total wall clock time: 0.1s
Downloaded: 3 files, 7.9K in 0s (478 MB/s)
[zgsouth@bogon ~]$ cat www.baidu.com/
cat: www.baidu.com/: 是一个目录
[zgsouth@bogon ~]$ ls  www.baidu.com/
index.html  robots.txt

打包和压缩(3种)

# 第一组
# gzip 与 gunzip
# 作用: 对单个文件进行压缩;# 原来的文件会没有,而是只留有新的压缩文件
gzip hello.txt   # => hello.txt.gz# 输入多个文件,则会分开压缩
gzip hello.txt world.txt # => hello.txt.gz world.txt.gz# 第二组
# zip 与 unzip
# 作用: 压缩文件或文件夹,原来的文件也会保留
# 工作中常用
# 语法:zip [选项] 文件名.zip 原始文件(可多个)  文件夹(可多个)
zip -r myzip.zip hello.txt world.txt zz/  # 递归压缩文件hello.txt world.txt及文件夹zz# unzip [选项] 压缩的文件
unzip -d target myzip.zip # 解压到target文件目录 # 第三组
# tar
# 是打包指令
# 通过加选项来进行压缩的操作
# 也可以压缩多个
# 语法: tar [选项] 文件名(xxx.tar.gz) 打包的内容(文件/文件夹)
# 文件后缀格式
.tar: 打包后的文件后缀
.gz: 压缩后的文件格式
.tar.gz: 打包并压缩后的文件格式# 选项:#z:调用gzip压缩命令进行压缩:--gzip#c:打包文件: --create  create a new archive#v:显示运行过程: verbosely list files processed#f:指定文件名: --file=ARCHIVE#x: 解压: --extract,  extract files from an archive# 压缩
tar -zcvf aa.tar.gz  hello.txt ./zz # 把zz文件夹下的所有文件以及hello.txt文件打包生成aa.tar.gz文件# 解压
tar -zxvf aa.tar.gz (-C 位置) # 解压aa.tar文件到(位置)目录下tar -zxvf aa.tar.gz  # 解压到当前目录tar -zxvf aa.tar.gz -C /opt/my/  # 解压到目录/opt/my/下;这个目录必须存在,否则报错

用户操作与执行命令

# su
# 解释:switch user
# 解释:当前会话嵌入另一个用户的会话# sudo
# 解释:super user do
# 解释: 临时给用户赋予超级管理员权限
# 需要超级管理员先设置 /etc/sudoers
sudo ls# 退出登录,即注销
logout

vmware提供的3种网络连接模式

  • 桥接

    • 虚拟机直接连接外部物理网络的模式,主机起到了网桥的作用。这种模式下,虚拟机可以直接访问外部网络,并且对外部网络是可见的(也就是建立了和你本机同级别的虚拟机器)
  • NAT模式
    • 虚拟机和主机构建一个专用网络,并通过虚拟地址转换(NAT)设备对ip进行转换,虚拟机通过共享主机IP可以访问外部网络,但外部网络无法访问虚拟机(相当于在电脑创建了一个路由器)(vmnet8: 保证主机和虚拟机内通信)
  • 仅主机模式
    • 虚拟机只与主机共享一个专用网络,与外部网络无法通信:(pc下创建了一个交换机)(vmnet1)

网络相关的指令

# 查看网卡和ip地址
ifconfig      # window下是ipconfig;if:interface# 测试和某条主机的连通性
ping ip/域名
ping www.baidu.com# 查看系统的端口占用情况
netstat -an
# 和grep及|搭配
netstat -an | grep 80# 重启系统服务-网络
service network restart# 关闭防火墙
chkconfig iptables off

重启与关机


sync
# 把内存的数据保存到磁盘中
# 关机和重启之前都应该执行这个操作# 关机 默认一分钟后关机(需要做sync操作:因为linux是预读与延迟与buffer,buffer满之后才操作)
shutdown
shutdown -c # 取消之后的关机
shutdown now 立刻关机
shutdown 3 # 3min后关机
shutdown 17:00 # 定时关机
# 或者
poweroff # 关机,断电
# 或者
halt  # 停机,关闭系统,但不断电[root@bogon etc]# shutdown
Shutdown scheduled for 二 2020-12-15 03:23:58 PST, use 'shutdown -c' to cancel.
[root@bogon etc]#
Broadcast message from root@bogon (Tue 2020-12-15 03:22:59 PST):The system is going down for power-off at Tue 2020-12-15 03:23:58 PST!# 重启
reboot
# shutdown -r now 立即重启
# r是rebot的意思# shutdown -h now 立即关机
# shutdown -h 1 1min后关机
# 其中h是halt的意思

用户、组和权限管理

# 文件的所有者,所在组和其他组# 第一:文件所有者
# 模拟某个组中的某个用户创建一个文件,我们来查看它的权限
groupadd tj
useradd tom -g tj
passwd tom
su tom
touch hello.txt
ls -ahl  # all human list# 第二:改变文件所有者
# 语法:chown [选项] 用户名 文件名
# 假设一个文件是root创建的,修改这个文件的拥有者为tom
chown tom hello.txtchown -R tom test/  #=> test目录下的所有的所有文件的所有者设置为tom,注意:R是大写# 第三: 改变文件所在组
# 语法: chgrp [选项] 组名 文件名
chgrp tj hello.txtchgrp -R bj /test #=> test目录下的所有的所有文件的所有组设置为bj,注意:R是大写# 插曲: 改变文件所有者同时改变所在组
# 语法:chown newowner:newgroup 文件
chown zwj:shaolin hell.txt# 第四:改变用户所在组
# 语法:usermod -g 组名 用户名
usermod -g root tom# 第五: 改变用户初始的登录目录
# 语法:usermod -d 目录 用户名
usermod -d /home/jack tom# 权限
# 当使用ls -alh 时
-rw-r--r--. 1 root root       87 8月  19 00:50 1.txt
lrwxrwxrwx. 1 root root        8 8月  22 06:54 mm -> xajh.txt
drwxr-xr-x. 3 root root       45 8月  20 23:08 target# 其中第一个字母有-|l|d|c|b五种;代表的是文件类型
# - :代表普通文件
# l : 代表软连接文件:如使用ln -s xajh.txt mm
# d : 目录文件
# c: 字符文件: 如键盘,鼠标
# b: 块文件,如硬盘# 后来的三个字母rwx:代表文件所有者:读|写|执行三个权限# 再后来的三个字母rwx:代表文件所在组的用户的权限:读|写|执行三个权限# 再后来的三个字母rwx:代表文件其他组的用户的权限:读|写|执行三个权限# 再后面的数字代表了如果是文件,就代表了硬链接的个数,一般为1,如果是目录了,则是他下面的子目录(不包括文件)# 文件拥有者 文件所属组 文件大小 最后修改时间 文件名# 注: rwx作用到文件和文件夹的效果是不一样的# 文件:r-读取和查看;w-修改但不一定能删除取决于他所在的目录;x-文件可以被系统执行# 目录:r-可以读取即ls;w-可以写即创建,删除,重命名其下的文件及目录;x-可以进入该目录即cd
# rwx: 对应于数字 4,2,1  因此后面我们设置权限时可以使用数字快速设置:如777

文件权限chmodchatrr

# 文件和文件夹的权限管理(读写和执行)
# 综述:两者都是对文件的一些属性或者权限进行操作# chattr : 改变文件属性,常用来对文件进行锁定 chattr +i hello1.txt
# 命令解释: change attributes # 尝试模拟新建一个文件,然后加锁,尝试删除,解锁,删除# 用到的命令解释
# 列出文件属性: lsattr 文件名
# 加锁: chattr +i 文件名
# 解锁: chattr -i 文件名# 开始模拟[root@bogon dir004]# ls
hello99.txt
[root@bogon dir004]# chattr +i hello99.txt
[root@bogon dir004]# rm hello99.txt -f
rm: 无法删除"hello99.txt": 不允许的操作
[root@bogon dir004]# lsattr hello99.txt
----i----------- hello99.txt
[root@bogon dir004]# chattr -i hello99.txt
[root@bogon dir004]# rm hello99.txt -f
[root@bogon dir004]# ls
[root@bogon dir004]# # chmod : 修改文件读写执行权限的模式: 常用的 chmod 777 hello1.txt
# 命令解释: change mode
#   xx    文件拥有者的mode  文件拥有者所在组的mode   其他用户的mode
# 777来源:    rwx(421)         rwx(421)                rwx(421)# r :read   w: write  x: excute
#   读          写       执行
#  rwx------   空的赋值为 -
# 赋值为读写执行所有权限  可以 chmod 777 hello.sh 或者 chomd u=rwx,g=rwx,o=rwx hello.sh# 加减以及权限赋值
# 语法:方式1:通过rwx:chmod [ugo][+-=][rwx] file/directory
chmod u+x hello.sh
chmod u-x,g+w,o+w hello.sh
chmod u=rwx,g=xr hello.sh
chmod u+x less/# 语法: 方式2: 通过数字:421chmod 751 hello.sh #=>等价于 chmod u=rwx,g=rx,o=x hello.sh# 我们模拟新建一个脚本文件,然后往里面写东西,然后执行的过程root@bogon dir003]# touch hello.sh
[root@bogon dir003]# echo 'echo hello world' >> hello.sh
[root@bogon dir003]# ./hello.sh
bash: ./hello.sh: 权限不够
[root@bogon dir003]# chmod 777 hello.sh
[root@bogon dir003]# ./hello.sh
hello world

任务调度

# 进行任务调度
# crontab: cron-时间,tab-列表
# 语法:crontab -[elr]   : e:edit-编辑一个任务;l:list-列出任务列表;r:remove-终止任务
# service crond restart # 重启调度任务
# 使用场景:如:定时备份mysql数据库# 例子:每隔一分钟,输出/tmp文件下的目录到文件/home/zz.txt
crontab -e  #=> 编辑任务,进入编辑,来编写要执行的命令
*/1 * * * * ls -l /tmp =>> /home/zz.txt # 每分钟执行命令,保存退出后就生效了# 1、五个占位符
# 分钟 | 小时 | 日 | 月 | 周几(0和7代表星期日)# 2、特殊符号# *: 任意时间# ,: 不连续的时间,如 (10,20 * * * * )代表每个小时的第十分钟和第十二分钟执行# -: 代表连续第时间:(0 5 * * 1-5 ): 每周1到周五的五点执行# */n: 每隔多久执行一次:(*/10 * * * * ):每隔十分钟就执行一次# 

磁盘的分区与挂载

# 一、分区的方式(2种):
1)mbr分区:
1.最多支持四个主分区
2.系统只能安装在主分区
3.扩展分区要占一个主分区
4.MBR最大只支持2TB,但拥有最好的兼容性2)gtp分区:
1.支持无限多个主分区(但操作系统可能限制,比如 windows下最多128个分区)
2.最大支持18EB的大容量(EB=1024 PB,PB=1024 TB)
3.windows7 64位以后支持gtp# 二、linux的分区
1)Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
2)Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。# 三、硬盘说明
1、Linux硬盘分IDE硬盘和SCSI硬盘和SATA硬盘,目前服务器基本上是SCSI硬盘,个人基本上是SATA硬盘,我们的linux是SCSI硬盘
2、对于IDE硬盘,驱动器标识符为“hdx~”其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘)“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
3、对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。lsblk -f   # 列出块设备信息# 四、举个例子
# 场景:新增了一个硬盘,我们要把它挂载到/home/newdisk 目录下
# 这样以后我们在这个目录下的操作,都相当于是对这块硬盘进行操作了
# 步骤:
# a、虚拟机添加硬盘、
# b、分区: fdisk /dev/sdb
# c、格式化: mkfs -t ext4 /dev/sdb1
# d、挂载: mount /dev/sdb1 /home/newdisk  (暂时的挂载,不能永久,重启即失效)
# e、设置自动挂载:编辑/etc/fstab 文件,往里面增加记录;
# f、然后执行mount -a来进行自动挂载# 卸载分区:umount /dev/sdb1# 五、磁盘查询
# 语法:df [选项(lh)]:disk free
# 作用:查看整个文件系统的信息,查看磁盘占用,还有多少剩余空间
df -lh# 语法:du [选项(lh)] 文件夹:disk usage
# 作用:查看文件夹du -ach --max-depth=1 /opt
# a,所有;c,汇总;h:human;max-depth:文件夹深度# 统计:wc -- word, line, character, and byte count

网络配置

# 要是在window下安装虚拟机,然后在虚拟机里面安装linux
# 此时我们vmwarenet8,有网络地址,虚拟网卡
# linux此时和它处于同一网段
# 一般来说,我们有两种方式设置ip地址,一种是自动,一种是手动(设置成固定的:建议)# 第一种: 动态的
网络设置成自动获取即可
每次获取的地址可能不一样,不利于开发
# 第二种:静态的
直接修改配置文件来指定IP,并连接外网
centos6 下的
编辑文件/etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=
GATEWAY=
DNS1=GATEWAY# 然后重启网络服务
service network restart

进程管理(重点)

# 1、进程介绍
1)、在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一
个ID号。
2)、每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例
如www服务器。
3)、每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目
前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法
看到的进程,通常使用后台方式执行。
4)、一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到
关机才才结束。
5)、一个正在执行的程序或命令,被叫做进程,process
6)、启动之后一直存在,常驻内存的进程,一般被称作服务,service# 2、查看进程状态(查询)
# 语法:ps [选项] -- process status
# 选项(free bsd风格:macos):a: 带有终端的所有用户的进程;x:当前用户的所有进程,包括没有有终端的进程; u: 面向用户友好的显示风格
# 选项(unix风格): -e: 列出所有进程; -u 列出某个用户关联的所有进程; -f:显示完整格式的进程列表
ps aux# 显示的信息说明:
# uesr pid %cpu %mem vsz(虚拟内存,swap) rss(物理内存) tty(哪个终端中运行的) stat start time command
# vsz: 进程占用虚拟内存大小,单位KB
# rss: 进程占用实际物理内存大小,单位KB
# TTY(tity type writer 打字机早期交互时): 该进程在哪个终端中运行的,对于centos来说,tty1是图形化终端;tty2-tty6是本地的字符界面终端;pts/0-255代表虚拟终端(比如通过shell)
# stat: 进程状态;R:运行;S:睡眠;T:暂停;Z:僵尸;s:包含子进程;l:多线程;+:前台显示;
# start: 进程的启动时间
# time: 进程占用cpu的运算时间
# command: 产生此进程的命令# 查看当前系统中运行的进程
ps aux | grep sshd # 搭配使用# 查看进程及其父进程对信息
ps -ef# 显示的信息说明:
# UID PID PPID C STIME  tty(哪个终端中运行的)  time cmd
# UID: 哪个用户启动的
# PID: 进程ID(PID为1: 守护进程;PID为2的为:kthreadd,它是管理其他线程的)
# PPID: 父进程(发现PID为1和2都是PID为0的启动的,PID为0的是IDLE
# TTY(tity type writer 打字机早期交互时): 该进程在哪个终端中运行的,对于centos来说,tty1是图形化终端;tty2-tty6是本地的字符界面终端;pts/0-255代表虚拟终端(比如通过shell)
# time: 进程占用cpu的运算时间
# cmd: 产生此进程的命令# 关于使用ps aux 及 ps -ef 如何选择
# 若想看cpu的占用率和内存的占用率,可以使用aux
# 若想看进程的父进程ID可以使用ef# 案例: 查看多少个用户使用远程登录ssh
ps -ef | grep sshd
systemctl status sshd# 3、杀死进程(删除)
# 语法: kill & killall# kill [选项] 进程号   :通过进程号杀死进程
kill -9 进程号   # -9表示强迫进程立即停止
# 比如起了一个命令行终端,不用-9,是杀不死的
# sshd 这个进程是负责远程登录的,可以用此命令踢人# killall 进程名称(支持通配符) ,杀父进程,子进程也就没了
# 如停止多个编辑器gedit
killall gedit# 4、查看进程树,进程之间的关系
pstree [选项]
-p: 显示进程的pid
-u: 显示进程的所属用户# 5、总结,一般都是先找,然后再杀

服务管理

# service 本身也是进程,但是是运行在后台的,通常都会监听某个端口,等待其他进程的请求,比如mysql(3306),防火墙,sshd(22)等,因此我们又称之为守护进程# 查看linux中的服务
# 方式1: 指令setup -> 图形化界面查看服务及设置自启动
# 方式2(centos6): 文件:目录 /etc/init.d/# 我们可以通过telnet指令检测linux系统的哪个端口在监听,可以访问
telnet ip 端口# service 管理指令 centos6版本 ,可以在/etc/init.d/下查看启动的服务
service 服务名 start|stop|restart|reload|status# centos7之后service变了,变成了systemctl,在/etc/init.d/下的service很少了,转为别的管理方式(/usr/lib/systemd/[service/])
systemctl start|stop|restart|reload|status 服务名# systemd: system deamon# 比如网络服务
# 在centos7中既有network也有NetworkManager;他俩功能基本一样,我们只需要他们其中之一运行起来即可。
systemctl stop network
systemctl restart NetworkManager# 防火墙的操作(centos6)
service iptables status|stop|start# 注意
# 关闭或者启动防火墙,立即生效;但这只是临时的,系统重启,还是恢复成之前的设置
# 如果希望设置某个服务自启动或者永久关闭生效,需要用到chkconfig指令(checkconfig)#chkconfig :给每个运行级别设置自启动/关闭
# 第一步:查看服务,chkconfig  --list | grep xxx(iptables): 查看服务在各个运行级别下的开启关闭状态
[# 第二步:chkconfig 服务名(iptables) --list]
# 第三步:chkconfig [--level 5] 服务名(iptables) on/off
# 第四步:重启生效# centos7 查看开机自启服务列表 设置 运行/关闭开机自启服务
systemctl list unit files
systemctl enable/disable NetworkManager# 防火墙:状态/开始/关闭
systemctl status firewalld
systemctl stop firewalld # 本次停止
systemctl disable firewalld # 取消开机自启
systemctl enable firewalld # 开机自启
systemctl start firewalld # 本次自启# 系统开机发生了什么
开机->BIOS->/boot->init进程1->运行级别->运行级别对应的服务

rpmyum

# 一、rpm
# 可以理解为软件管理
# rpm: redhat package manager
# 包的格式:Apache-1.3.23-11.i386.rpm
# Apache: 软件名称
# 1.3.23-11: 软件的版本号,主版本和次版本
# i386:软件所运行的硬件平台,intel 32位处理器的统称
# rpm: 文件扩展名,代码RPM包
# 查询本机已经安装的软件
rpm -qa  # 查询所有已经安装的rpm -qa | grep firefox  # 查所有已经安装的rpm -q firefox  # 查询是否安装了firefoxrpm -qi firefox #查看firefox软件包安装的详细信息rpm -ql firefox # 安装位置(一个软件可能安装到很多的目录下)rpm -qf 全路径名  # 查询某个文件属于哪个软件包的# 卸载软件
rpm -e 软件包名 [--nodeps]# --nodeps 强制删除,不建议,可能导致某些软件没法运行rpm -e firefox # 安装
rpm -ivh 软件包名
# i: install 安装; v: verbose 提示; h: hash 进度# 本地安装
# 1.加载光驱->2./media下找到光驱->找到包安装即可# ------------------------------# yum
# 介绍: shell 前端包管理器;基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的包
# 语法:yum [选项] [参数]# 选项: -y 对所有提问都回答yes# 参数
# install: 安装
# update: 更新
# check-update:检查是否有可用的更新
# remove: 删包
# list: 显示软件包信息
# clean:清理yum过期的缓存
# deplist: 显示yum软件包的所有依赖关系
# 查询
yum  list | grep xxx  # 查看yum服务器是否有我要安装的软件# 安装
yum  -y install 包名   # 安装# 修改网络yum源
# 1.安装wget,wget用来从指定的URL下载文件
yum install wget
# 2. 备份默认的源:/etc/yum.repos.d
cp CentOS-Base.repo CentOS-Base.repo.backup# 3.下载网易163或者阿里的repos文件
wget http://mirrors.aliyun.com/repo/Centos-7.repo
# 或
wget http://mirrors.163.com/.help/Centos7-Base-163.repo# 4.进行替换
mv Centos7-Base-163.repo  CentOS-Base.repo# 5.清除旧的缓存数据,缓存新数据
yum clean all
yum makecache

linux指令-一看就懂相关推荐

  1. 转载: linux awk 一看就懂 - 薰衣草的旋律 - 博客园

    转载: linux awk 一看就懂 - 薰衣草的旋律 - 博客园 https://www.cnblogs.com/wangqiguo/p/5863266.html 阅读目录 awk是什么 awk命令 ...

  2. yolov5使用2080ti显卡训练是一种什么样的体验我通过vscode搭建linux服务器对python-yolov5-4.0项目进行训练,零基础小白都能看得懂的教程。>>>>>>>>>第二章番外篇

    第二章番外篇:yolov5通过vscode搭建linux服务器对python-yolov5-4.0项目进行训练,零基础小白都能看得懂的教程.YOLOv5搭建的最快搭建方式,踩坑经历详谈 前期准备: 2 ...

  3. git指令如何葱master转到dev_小姐姐用动画图解Git命令,一看就懂!

    「 点击图片获取最近两年爆款好文 」 无论是开发.运维,还是测试,大家都知道Git在日常工作中的地位.所以,也是大家的必学.必备技能之一.之前公众号也发过很多git相关的文章: Git这些高级用法,喜 ...

  4. Linux / Windows系统中安装最新版 ElasticSearch (es)搜索引擎 超详细图文教程【一看就懂】

    "You Know, for Search"  相信来到这里的朋友们已经对ElasticSearch(es)有了一个大致的了解.关于Elasticsearch的介绍就不在此做过多赘 ...

  5. linux输出重定向跨服务器,【一看就懂,一听就会】Linux重定向详解——输出重定向...

    一.啥是重定向?? Linux重定向定向分为两种,一种输入重定向,一种是输出重定向: 从字面上理解,输入输出重定向(重新定义方向) 就是「改变输入与输出的方向」的意思. 总结: 输入方向就是我们人类从 ...

  6. 在虚拟机中安装Linux系统 (附上每一步操作截图及说明)【一看就懂】

    我们在电脑上安装虚拟机后,一般会在虚拟机上安装Linux系统搭配使用,本文附上每一步操作流程截图及说明 虚拟机安装教程:VMware15虚拟机超详细安装教程(附上每一步操作流程截图及说明)[一看就懂] ...

  7. 用OpenStack界面轻松创建虚拟机的你,看得懂虚拟机启动的这24个参数么?

    用OpenStack界面轻松创建虚拟机的你,看得懂虚拟机启动的这24个参数么? 看这篇文章之前,保证看过以下文章: 我是虚拟机内核我困惑?! Qemu,KVM,Virsh傻傻的分不清 裸用KVM创建虚 ...

  8. 前端app调起摄像头 只显示在页面_猫也能看得懂的教程之一分钟使用Vue搭建简单Web页面...

    本教程适合人群: 已经了解过过html.js.css,想深入学习前端技术的小伙伴 有前端开发经验.但是没有使用过Vue的小伙伴 有过其他编程经验,对前端开发感兴趣的小伙伴 学习本教程之后你将会: 了解 ...

  9. linux tac sed,Day08 - 一些常用 Linux 指令 - 3-7 (cat、tac、head、tail、vi、sed)

    前言 此為 Linux 相關的 3-7 篇,都是很常用的指令,每天學一點,並常使用,便會記下成為反射動作之一 cat 將該檔案內容印在終端機上 command | cat cat -n file ca ...

最新文章

  1. jupyter notebook xdg-settings 错误
  2. python实现二分查找(折半查找)算法
  3. 生活永远这样,在自己放松自己的时候,会让你摔个跟头,忍耐生老练,老练生盼望...
  4. 用 Ganglia 监控基于 Biginsights 的 HBase 集群性能
  5. easyDarwin--开源流媒体实现
  6. 安卓开发中RelativeLayout中的各个属性
  7. 「Self-driving: KITTI」KITTI数据集简介
  8. python基于happybase对hbase增删改查-thrift1
  9. 重邮2021计算机复试,2021复试调剂信息七
  10. python文字游戏源代码求年纪_Python实现猜年龄游戏代码实例
  11. echarts 3d饼图_echarts构建关系图,节点可收缩和展开,可添加点击事件
  12. Cocos2d手机游戏引擎介绍
  13. 图像数集据增广的15+种功能总结和Python代码实现
  14. [转]网店博客营销之微博实战技巧:还没有做微博的掌柜看过来
  15. Maven 打包错误:%JAVA_HOME%/../lib/tools.jar
  16. 时间与时间戳之间的转换
  17. 看完即会,抓取微信小程序数据包教程
  18. 【书评】《技术垄断:文明向技术投降》
  19. phpstorm关闭语法检查的解决方案
  20. python五角星程序显示错误_python画五角星和六角星程序

热门文章

  1. 层自动命名模块检测未通过
  2. C# 实现对PPT编辑
  3. 【Labplus 3】掌控板-电子钢琴
  4. Ralink wifi driver WPA四次握手可能的问题
  5. 养殖场如何实现温湿度监控?
  6. 【洛谷】P2708 硬币翻转(配数学证明)
  7. 人体姿态估计-DeepPose
  8. 什么是灵活用工?适用于哪些行业?
  9. Ubuntu16.04下联想R720的无线网卡开启问题及信号不稳定
  10. [从 0 开始写一个操作系统] 一、准备知识