Linux指令
软件管理相关命令
Debian平台代表
-
Ubuntu命令
- dpkg:可以离线或在线安装软件,并且自动安装依赖
- apt:可以离线或在线安装软件,并且自动安装依赖
- .deb基于Debian平台的软件安装包后缀名
Fedora平台代表
-
CentOS命令
- rpm:用来安装离线安装包,不会自动安装依赖
- yum:可以离线或在线安装软件,并且自动安装依赖
- .rpm基于Fedora平台的软件安装包后缀名
windows的软件安装包后缀名
- .exe
- .msi
安装软件的三种方式
-
1.下载离线安装包
- dpkg/rpm
-
2.直接在线安装
- apt/yum
-
3.把代码的源代码下载下来,然后编译安装。下载源码.tgz文件,是一个压缩包,相当于windows里的zip / rar
-
- 从官网上下载源代码,一般都是c语言的
-
- tar -zxvf 打包文件名.tgz 将 .tgz 文件 进行解压并拆包
-
- 进入解压后的文件夹,执行./configure --prefix=<安装路径> 进行配置文件
-
–prefix 用来指定安装路径
-
配置的目的是为了查看当前系统是否能够安装此软件。在此过程中,可能会出现错误提示,提示需要安装第三方的依赖包。
- 此时需要手动的运行命令安装依赖包
-
依赖包安装完成后 再次执行./configure --prefix=<安装路径> 进行配置文件
-
- configure 命令执行成功后,会生成一个Makefile文件
-
- 执行 sudo make && sudo make install 来进行编译和安装
-
CentOS软件安装的相关命令
-
rpm安装方式
-
rpm -ivh <包名.rpm> (只能安装离线安装包)
- 不会自动依赖,一般会安装失败
-
rpm -qa
- 列出已安装的所有软件
-
rpm -e <包名> 卸载已安装的软件
- 也不会卸载成功,不会自动删除依赖
-
-
yum安装方式
-
yum install <包名.rpm> (在线、离线 安装都可,会自动依赖)
-
yum list installed
- 列出已安装的所有软件
-
yum remove <包名>
- 卸载已安装的软件,会自动删除依赖关系
-
yum check-update
- 查看可更新的软件
-
yum update <包名>
- 更新软件
-
-
wget 网址/软件包
- 从网址软件包
CentOS查看正在运行的软件
-
ps -aux|grep 进程名
- 查看指定进程的运行状况及信息
Linux目录结构
/ 根目录
-
bin
- 是binary的缩写 包含了一些二进制文件,即可执行文件。即可执行命令。
-
sbin
- 存储了一些需要root权限的命令,使用这些命令需要root权限,要么使用root用户,要么在命令前加上sudo。
-
etc
- 用于存储软件的配置文件
-
home
- 用于存储用户的家目录,Linux支持多用户模式,每新建一个用户,home中就会多一个家目录,目录名即用户名
-
opt
- 此文件夹是第三方软件的默认安装位置
-
root
- root用户的家目录
-
usr
- 用于存储用户的配置信息和用户相关的可执行文件。
~ 当前用户的家目录
- 在root用户代表 /root
- 在一般用户中代表 /home/<用户名>
添加新用户
useradd <用户名> -m -s /bin/bash
- 创建用户
passwd <用户名>
- 修改指定用户密码
sudo gpasswd -a <用户名> root
- 将指定用户加入到root分组中
文件(夹)操作相关命令
cd
-
cd -
- 返回上次跳转的目录
-
cd …
- 返回上级目录
-
cd /
- 返回根目录
-
cd ~
- 返回家目录
-
直接cd 等价于 cd ~
-
相对路径,不以 / 开始
-
cd xxx
- 进入当前文件夹里的xxx文件夹里
-
cd …/xxx
- 进入上级文件夹里的xxx文件夹里
-
-
绝对路径,以 / 开始
pwd
- 打印当前工作目录
ls
-
多个选项可同时使用
-
列出当前文件夹里的所有文件(夹)(不包含隐藏的文件(夹))
-
ls /文件夹名
- 列出指定文件夹里的文件(夹)(不包含隐藏的文件(夹))
-
ls -a /文件夹名
- 列出指定文件夹里所有文件(夹)(包含隐藏的文件(夹))
-
ls -l
-
用来显示当前文件夹的详细信息
-
drwxrwxr-x. 2 myuser myuser 6 8月 20 09:41 test
-
drwxrwxr-x
-
第一个字母表示文件类型
- d:表示为一个文件夹
- -:表示为一个普通的文件
- l:表示为一个链接文件(快捷方式)
- c:表示为一个字符设备文件。即串行端口的接口设备,如鼠标、键盘等。
- b:表示为一个块设备文件,存储数据的接口设备,即硬盘。
- s:表示为一个套接字文件,用于网络数据连接
- p:表示为一个管道文件,用于解决多个文件同时存取同一个文件所发生的错误。
-
rwxrwxr-x
-
表示权限,9个字符三个一组,分别表示所有者,所属组和其它权限
-
第一个rwx
- r:读取权限
- w:写入权限
- x:执行权限
- -:表示没有该权限
-
第二个rwx
-
表示所属组的权限,组名与用户名一致
- 创建的文件(夹)所属当前所登录用户的组
-
-
-
-
2
-
如果是一个文件夹,表示这个文件夹里有几个子文件夹
-
创建文件夹里默认有两个子文件夹
-
.
- 记录当前目录位置
-
…
- 记录上级目录位置
-
-
-
如果是一个文件,表示用来表示文件硬链接的个数
-
-
第一个myuser
- 表示所有者
-
第二个myuser
- 表示所属组
-
4096
- 文件夹显示的都是4096,4kb
- 文件显示文件的大小
-
6 8月 20 09:41
- 表示该文件(夹)最后一次修改的时间
-
test
- 表示文件(夹)的名称
-
-
-
mkdir
-
mkdir
- 创建一个文件夹
-
mkdir .
- 创建一个隐藏文件夹
-
mkdir -p /xxx/yyy/zzz
- 创建一个多级目录 创建一个文件夹xxx,在xxx中创建一个文件夹yyy,在yyy中创建一个文件夹zzz。
touch
-
touch
- 创建一个空文件
alias
-
查看命令的别名
-
alias la=‘ls -a’
- 给ls -a 命令 起别名la
-
alias 别名=‘命令 选项’
- 给指定命令的指定选项起别名
- 如果直接在终端输入,那么‘这个别名是临时的,终端关闭后别名自动清除。
命令 --help
- 查看指定命令的解释文档
rmdir
- 删除指定空文件夹,若文件夹不为空,会报错
rm
-
rm -rf
- 强制、递归删除指定文件(夹)
-
rm -r
- 递归删除指定文件(夹)
-
rm -f
- 强制删除指定文件(夹),文件(夹)不存在删除不会报错。
-
rm -rf *.txt
- 强制删除所有后缀名为.txt的文件
-
rm -rf *
- 强制删除所有文件(夹)
cp
-
cp 源文件 目标路径/新文件名
- 复制源文件到指定路径
mv
-
mv 文件(夹) 目标路径
- 将指定文件(夹)移到目标路径
查看文件相关的命令
-
cat
- 从上到下,查看指定文件的所有的内容
-
tac
- 从下到上,查看指定文件的所有的内容
-
head -
- 查看指定文件前num行内容,默认为10行
-
tail -
- 查看指定文件后num行内容,默认为10行
-
nl
- 从上到下,带行号的查看指定文件的所有内容
-
more
- 查看指定文件一页内容,Enter查看下一行,空格查看下一页,查看完毕后自动退出。
-
less
-
less -N
- 查看指定文件一页内容,带行号,Enter查看下一行,空格查看下一页,查看完毕后,按q退出
-
chgrp <组名> 文件(夹)名
- 将指定的文件(夹)的所属组修改为指定组(需要root权限)
chown <用户名> 文件(夹)名
- 将指定的文件(夹)的所有者修改为指定用户(需要root权限)
用户管理的相关的命令
useradd <选项> <用户名>
-
新建一个用户
-
选项-m:创建用户的家目录,会在/home文件下创建一个与用户名同名的文件夹。
- Ubuntu需要加上此选项才会创建同名文件夹。CentOS不加此选项会自动创建。
-
选项-M:不创建用户的家目录
-
选项-d:指定用户的家目录的名称
-
选项-s:指定用户登录时的shell解析脚本,一般指定 /bin/bash
userdel <选项> <用户名>
- 删除指定用户(需要root权限)
- 选项-r:删除用户的同时,删除用户的家目录等信息
- 选项-f:强制删除
su
- 切换到指定用户
- su 或 su -:切换到root用户
passwd
- 修改指定用户的密码
- 直接 passwd 表示修改当前用户的密码
- 只有root用户或者本用户才能修改本用户的密码
kill -9 进程号
- 强制杀死指定进程(需要root权限)
在命令前加上sudo
-
表示使用root用户的权限执行当前命令
- is not in the sudoers file. This incident will be reported.用户不在sudoers文件中,此事件将被上报。
-
只有被添加到了 /etc/sudoders 文件中的指定用户才能申请执行root对应的权限。
-
如果一个用户想要有sudo权限,必须先使用root用户把此用户添加到 /etc/sudoers 文件中。
-
将用户添加到有sudo权限的组
- Ubuntu:groups -a <用户名> sudo/admin
- CentOS:groups -a <用户名> wheel
用户组的概念
-
当创建用户时,会自动创建一个和它同名的分组
-
groups
- 查看当前用户所在的分组
- groups <用户名> 查看指定用户所在分组
-
gpasswd
- -a <用户名> <组名> 将指定用户添加到指定的分组中
- -d <用户名> <组名> 将指定组里的指定用户删除
用户和组相关的一些文件
- /etc/passwd ==> 存储了系统中所有的用户信息myuser❌1001:1001::/home/myuser:/bin/bash用户名:密码:用户ID:组ID:主机名:/home/家目录:用户登录的脚本
- /etc/shadow ==> 存储了用户的密码
- /etc/group ==> 存储了分组相关的信息
vim的使用
vim是一个文件编辑工具,相当于记事本。第一步应该安装这个软件 yum install vim
vim有三种模式
-
命令模式
-
默认模式,只能接收命令,不能编辑文件内容
-
shift+z+z 保存并退出
-
dd 删除当前行的数据
-
ndd 持续删除当前行数据n次
-
u 撤销上一次操作
-
ctrl+r 取消上次的撤销动作
-
x
- 删除当前光标所在字符
-
nx
- 删除持续当前光标所在字符n次
-
yy
- 复制当前行
-
nyy
- 复制当前行以及后n-1行
-
p
- 粘贴当前所复制或剪切的内容
-
np
- 粘贴当前所复制或剪切的内容n次
-
shift+g 定位到最后一行
-
gg 定位到第一行
-
ngg 定位到第n行
-
shift+4 / end 定位到行尾
-
0 / home 定位到行首
-
ctrl+b 上翻一页
-
ctrl+f 下翻一页
-
ctrl+u 上翻半页
-
ctrl+d 下翻半页
-
-
-
插入模式
-
i 在当前光标位置前插入数据
- 退出必须先按 Esc 进入命令模式才能退出
-
I 在当前行第一个非空字符前面插入数据
-
a 在光标的下一个字符插入数据
-
A 在当前行的行尾插入数据
-
s 删除当前光标所在位置字符,并插入数据
-
S 删除当前光标所在位置行,并插入数据
-
o 在光标所在行的下一行插入数据
-
O 在光标所在行的上一行插入数据
-
-
底线命令模式
-
:w 保存
-
:q 退出
-
:q! 不保存,强制退出
-
:wq 保存并退出,等价于shift+z+z
-
:e! 放弃修改,恢复到上次保存后的状态
-
:set nu 设置行号
-
在命令后加上 ! 表示强制执行
-
:n 光标定位到第n行
-
:/内容 查找指定内容,查找后,n查看下一次匹配的内容,N查看上一个匹配的内容
-
:%s/原内容/新内容
- 默认查找所有行的第一个匹配到的内容进行替换
- 加上/g 表示查找所有匹配到的内容替并替换
-
m,ns/原内容/新内容
- 默认查找从第m到第n行中每行的第一个匹配到的内容进行替换
- 加上/g 表示从第m到第n行中查找所有匹配到的内容替并替换
-
vim
- 使用vim打开指定文件进行编辑
- 在后面加上 +n 表示在第n行打开文件
- 如果编辑了一个不存在的文件,会先创建文件再打开。
vim的配置文件
-
/etc/vimrc
- 使用vim 打开vimrc文件,在最后一行添加 set nu 即可永久设置 vim打开后显示行的序号。
- 在此文件修改可对所有用户生效
-
~/.vimrc
- 修改此文件只对当前登录的用户生效,对其它用户不生效
Linux里的配置文件介绍
/etc/bashrc
- 修改此文件可进行某些操作,在此文件修改可对所有用户生效。
- 进入root用户 vim /etc/bashrc 在最后一行输入alias 别名=‘命令 选项’ 然后退出终端再打开即可永久配置命令别名。
~/.bashrc
- 在普通用户的家目录添加代码,代码只会在此用户生效
每次打开终端,都会自动执行配置文件里的代码
文件(夹)权限管理
chmod
-
用来修改文件(夹)的权限
-
o:其他用户
- chmod o+w 文件(夹)名 给指定文件(夹)的其他用户添加写入权限
-
u:所有者
- chmod u+x 文件(夹)名 给文件(夹)的所有者添加执行权限
-
g:所属组
- chmod g-w 文件(夹)名 去除指定文件(夹)所属组的写入权限
-
a:全部用户
- chmod a-r 文件(夹)名 去除指定文件(夹)在全部用户的可读权限
-
chmod 775 文件(夹)名
-
权限值
-
r对应数字4,表示可读
- 子主题 1
-
w对应数字2,表示可写
-
x对应数字1,表示可执行
默认权限
-
文件:-rw-rw-r-- 664
-
文件夹:drwxrwxr-x 775
-
umask 命令用来查看文件夹的默认权限,默认值是 0002,只看后三位,转换为九位数的二进制然后取反,即文件夹的权限。
-
umask 0022
- 修改默认权限为755
-
压缩解压命令
zip / uzip
-
zip <压缩文件名> <[路径]/文件名>
- 将指定文件进行压缩,并指定压缩文件名称,若指定路径,那么会将文件名前的文件夹包含指定文件进行压缩。
-
unzip <压缩文件名>
- 将压缩文件进行解压
gzip / gunzip
-
gzip <文件名>
- 将原来替换成 .gz 文件
- 加上-k:保留原有的文件,生成一个新的压缩文件
- 加上-r:将文件夹内所有文件替换成 .gz 文件
-
gunzip <文件名>
- 将 .gz 文件替换会原来压缩前的文件
tar 打包命令,不会将内容进行压缩,反而还会变大。
-
三种模式,不能同时使用
-
-c
- 打包文件
-
-x
- 拆包
-
-t
- 查看文件内容
-
-
-f 指定文件
-
-v 查看过程
-
-z 使用gzip压缩、解压
-
tar -czvf 打包文件名.tgz 文件(夹)名
- 将文件(夹)打包后压缩成一个 .tgz 文件
-
tar -zxvf 打包文件名.tgz
- 将 .tgz 文件 进行解压并拆包
-
-
-j 使用bzip2进行压缩、解压
-
tar -cjvf 打包文件名.tbz 文件(夹)名
- 将文件(夹)打包后压缩成一个 .tbz 文件
-
tar -jxvf 打包文件名.tbz
- 将 .tbz 文件 进行解压并拆包
-
-
tar -cf 打包文件名 文件(夹)名
- 将文件(夹)打包成一个 .tar 文件
-
tar -xf 打包文件名
- 将打包好的 .tar 文件进行拆包
-
tar -tvf 打包文件名
- 查看打包文件内的内容
nginx服务器
1. yum install nginx 安装nginx服务器
-
或者
-
- 在官网下载源码 http://nginx.org/en/download.html
-
- 使用 tar -zxvf nginx-1.21.1.tar.gz 将文件 进行解压并拆包
-
- 进入解压后的文件夹,执行./configure --prefix=/usr/local/nginx进行配置
-
–prefix 用来指定安装路径
-
配置的目的是为了查看当前系统是否能够安装此软件。在此过程中,可能会出现错误提示,提示需要安装第三方的依赖包。
- 此时需要手动的运行命令安装依赖包
-
依赖包安装完成后 再次执行./configure --prefix=/usr/local/nginx进行配置文件
-
- configure 命令执行成功后,会生成一个Makefile文件
-
- 执行 sudo make && sudo make install 来进行编译和安装
-
- 启动nginx
-
- cd /usr/local/nginx/sbin
-
- 执行 nginx文件 sudo ./nginx
-
2. systemctl start nginx.service 启动nginx服务器
- firewall-cmd --zone=public --add-port=80/tcp --permanent 防火墙开放80端口的服务
- systemctl restart firewalled.service 重启防火墙服务
3. 读取 /etc/nginx/nginx.conf 这个配置文件,此文件存放了nginx的配置信息。
-
有两行配置信息非常重要
- listen 80 default_server ==> 设置监听的端口
- root /usr/share/nginx/html ==> 静态页面的存放路径
4. 当访问此主机IP时,会读取 /usr/share/nginx/html 里的文件。
管道和重定向
重定向
-
操作符1 ’ > ':
- 将指令的查询结果重定向到文件中,python环境所用的模块规定重定向到requirements.txt文件中。如果文件已存在,会将其覆盖。
-
操作符2 ’>>‘
- 将指令的查询结果重定向到文件中,如果文件已存在,会将执行结果追加到指定文件的最后方。
-
分类
- 标准输出,> / 1> 默认重定向标准输出
- 错误输出,2> 将错误信息重定向到文件中
- 全部输出,&> 将全部信息重定向到文件中
管道
-
管道操作符是 ’ | ‘
-
处理前一个指令传出的正确信息,并将其传递给管道符后的指令,作为这个命令的标准输入
-
例如:ps -aux|grep nginx
- 从正在运行的进程中,查询nginx服务
-
多个命令先后执行
命令1;命令2;命令3
- 以’ ; ’ 分号分隔,执行完分号前的命令后再执行分号后的命令,按先后顺序执行命令
命令1 || 命令2
- 先执行前面的命令,前面的命令执行失败后,才会执行后面的命令
命令1 && 命令2
- 前后命令同时执行,如果前面的命令出错,那么后面的命令不会执行,前面的命令执行成功才会执行后面的命令。
服务监听
netstat:用来监听网络链接状态
-
-a 显示所有socket,包括正在监听的
-
-n 以网络IP地址代替名称,显示出网络连接情形
-
-o 显示与网络计时器相关的信息
-
-t 显示TCP协议的连接情况
-
-u 显示UDP协议的连接情况
-
-p 显示建立相关连接的程序名和PID
-
-anop[|grep :<端口号>]
- 查看[指定端口号]网络连状态显示详细信息
Linux中的命令都对应了一个可执行文件
基本命令都在 /bin 目录下,python命令也在 /bin 目录下
ln 软件名 链接名
- 给软件起别名
source <脚本文件名>
- 执行脚本文件
ps -aux
-
查看所有正在运行的进程
-
|grep <软件名>
- 查看指定软件名正在运行的进程
Python3的安装
1. sudo yum install epel-release 安装epel扩展软件库
2. sudo yum -y install python3
- -y 所有问题默认yes
python3 包的默认地址 /usr/local/lib/pyhton3.6/site-packages
sudo pip3 uninstall <模块名> 卸载已安装的指定python模块
配置python虚拟环境
-
- 执行 sudo pip3 install virtualenv 安装virtualenv
-
- 执行 sudo pip3 install virtualenvwrapper 安装virtualenvwrapper
-
- 使用sudo vim 编辑 ~/.bashrc 这个文件,在文件最后面添加
-
- export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.6
- 指定新虚拟环境默认的python版本为python3.6
-
- export WORKON_HOME=~/.envs
- 指定创建新的虚拟环境保存的位置
-
- source /usr/local/bin/virtualenvwrapper.sh
- 执行 virtualenvwrapper.sh 脚本
-
- 执行mkvirtualnev <文件夹名> 就能创建一个新的虚拟工作环境,放在了~/.envs中
- 若文件夹虚拟环境已存在,那么会开启此文件夹的虚拟环境
-
- workon <虚拟环境文件夹名>
- 切换指定文件夹的虚拟环境
- 运行文件夹内的文件时,需要先运行同名文件夹的虚拟环境
-
- 使用 deactivate 退出虚拟环境
-
- rmvirtualenv <虚拟环境名> 移除指定虚拟环境
在Linux中默认
- python == python2 == python2.7
- python3 == python3.6
pip install -r requirements.txt
- 下载文件内所列出的模块