前言
由于大多音视频服务的编译和部署都是在Linux上进行的
所以我们先简单过下Linux常用指令
shell
shell是指可以控制操作系统内核的图形界面软件
sh和bash
sh和bash是Linux系统下的两个shell程序 它们的功能相似,bash是sh的增强版本,bash也是Linux下的默认shell工具
sh文件
sh文件和sh程序是两个不同的概念 sh文件是Linux下的脚本文件,可以通过其它shell程序打开并执行 如果在执行sh文件时不指定执行工具,默认使用bash程序来执行 通过编写并执行sh文件,可以批量执行shell指令,不需要通过命令行来一步步执行
sudo指令
以系统管理员身份执行指令 sudo xxx 以系统管理员身份执行xxx指令
find指令
用于文件查找 find xxx1 -name xxx2 在xxx1目录下,查找名为xxx2的文件 find xxx1 -user xxx2 在xxx1目录下,查找属于用户xxx2的文件 find xxx1 -size xxx2 在xxx1目录下,查找属于大小大于xxx2的文件
ls指令
用于文件列举 ls -a 显示当前文件夹下所有文件 ls -A 显示当前文件夹下所有文件,不包括以.或..开头的隐藏文件 ls -R 递归列举所有子文件 ls -S 按大小排序 ls -t 按时间排序
cd指令
用于切换目录 cd xxx 切换到xxx目录 cd ./xxx 切换到当前目录下的xxx目录 cd ../xxx 切换到上级目录下的xxx目录
tree命令
以目录树的形式显示全部文件,需要安装tree程序
cp命令
复制文件 cp -a xxx1 xxx2 连同文件属性一起复制 cp -r xxx1 xxx2 递归复制子文件 cp -u xxx1 xxx2 仅复制有差异的文件 cp -i xxx1 xxx2 文件已存在时,询问是否覆盖
rm命令
删除文件 rm -f xxx 强制删除,忽略不存在的文件 rm -r xxx 递归删除 rm -i xxx 删除前询问
mv命令
移动文件 mv -f xxx1 xxx2 若文件已存在,直接覆盖 mv -u xxx1 xxx2 若文件已存在,仅当比目标文件更新时,才覆盖 mv -i xxx1 xxx2 若文件已存在,询问是否覆盖
pwd命令
显示当前工作目录路径 pwd -P 如果当前目录是超链接,则显示真实路径
mkdir命令
创建目录 mkdir -p xxx 递归创建xxx目录 mkdir -m 777 xxx 创建xxx目录,并授予全部权限 在Linux中,目录权限分为read/write/execute,分别用数字4/2/1表示 7就表示他们相加的全部权限,三个7表示分别授予owner/group/other全部权限
rmdir命令
删除目录
rmdir -p xxx 递归删除xxx目录,及其下级文件,如果删除后父目录为空,也一并删除
rmdir -v xxx 显示删除指令执行具体过程
tar命令
打包或解包tar文件 tar -c -f xxx1 -C xxx2 打包x2到x1 tar -x -f xxx1 -C xxx2 解包x1到x2 tar -t -f xxx1 查看压缩文件 -c 打包 -x 解包 -t 查看 -C 指定打包或解包目录
gzip命令
压缩或解压文件,gzip不能压缩整个目录,可使用tar命令打包再压缩
gzip * 将目录下的每个文件压缩成一个gz文件
gzip xxx 将xxx文件压缩为xxx.gz
gzip -r xxx 将xxx目录下的所有文件都压缩成一个单独的gz文件
gzip -d xxx.gz 解压xxx.gz文件
gzip -d -r xxx 递归解压xxx目录下的所有gz文件
打包和压缩的区别
Linux中的压缩,并不是我们通常理解的压缩文件 打包是将多个文件合并成一个文件,总体积不变 压缩是将一个文件的体积压缩变小 我们在Windows中常见的zip文件,准确地说,其实是打包后再压缩生成的
ps命令
查看进程
ps -A 显示所有进程
ps -a 显示所有非Terminal进程
ps -u uid 显示指定用户的进程
ps -u username 显示指定用户的进程
ps -g gid 显示指定用户组的进程
ps -a -x 显示详细进程信息
kill命令
通过pid结束进程
kill -1 xxx 向pid为xxx的进程发出一个SIGHUP信号,进程可以拦截这个信号,自定义如何处理
一般普通进程收到这个信号时会结束进程,守护进程收到这个信号则会重新加载
kill -9 xxx 强制结束pid为xxx的进程,可能会导致数据丢失
kill -15 xxx 正常结束pid为xxx的进程
killall命令
通过pname结束进程,如果同名则全部结束,信号参数和kill命令一样
killall -9 xxx1 -u xxx2 结束用户xxx2所有名称为xxx1的进程
killall -9 xxx1 -g xxx2 结束xxx2进程组下面所有名称为xxx1的进程
crontab命令
crontab xxx 从xxx文件中导入定时计划
crontab -l 查看定时任务内容
crontab -l >> xxx 导出定时计划到xxx文件
crontab文件的具体格式,请仔细百度了解
free命令
显示内存使用情况
free 显示内存使用情况
free -b 以Byte为单位
free -k 以KB为单位
free -m 以MB为单位
free -g 以GB为单位
top命令
任务管理器,查看进程资源占用情况
top -u xxx 只显示用户xxx的进程
top -c 显示完整指令
top -p xxx 显示pid为xxx的进程
chmod命令
修改文件权限
chmod ugoa+rwx xxx 授予所有人xxx文件的全部权限
u 表示所有者
g 表示所有者的用户组
o 表示其它用户
a 表示全部用户
r 表示读权限
w 表示写权限
x 表示执行权限
chmod 777 xxx 授予所有人xxx文件的全部权限
这是一种数字表达方式,三个7分别表示所有者,用户组,其它用户的权限,即ugo的权限
rwx对应的数值分别为421,7=4+2+1=rwx,即表示全部权限
chown命令
修改文件所有者
chown uuu xxx 将文件xxx所有者设置为用户uuu
chown uuu:uuugroup xxx 将文件xxx所有者设置为用户uuu,使用者设置为uuugroup
chown -R uuu * 将当前目录下的所有子文件,所有者设置为用户uuu
chgrp命令
修改文件所属用户组
chgrp uuugroup xxx 将xxx文件所属用户组更改为uuugroup
useradd命令
添加用户账号
useradd xxx 添加xxx用户
useradd -g uuugroup xxx 添加xxx用户,并分配到uuugroup用户组
useradd -r xxx 添加xxx用户,并设置为系统账号
usermod命令
修改用户账号
usermod -c yyy xxx 修改xxx用户的备注为yyy
usermod -d yyy xxx 修改xxx用户的主目录为yyy
usermod -l yyy 修改xxx用户的账号为yyy
userdel命令
删除用户账号
userdel -f xxx 删除用户xxx,同时强制删除所有相关数据
userdel -r xxx 删除用户xxx,同时删除其主目录
groupadd命令
添加用户组
groupadd -g yyy xxx 创建名为xxx的用户组,并指定组id为yyy
groupadd -r xxx 创建名为xxx的用户组,并设置为系统用户组
groupdel命令
删除用户组
groupdel xxx 删除名为xxx的用户组
删除用户组之前,必须先保证该用户组不包含任何用户
passwd命令
修改用户密码
passwd xxx 设置用户xxx的密码
passwd -S xxx 显示用户xxx的密码信息
passwd -d xxx 删除用户xxx的密码
groups命令
显示用户所属用户组
groups xxx 显示用户xxx所属用户组
vi命令
调用vi编辑器打开文本文件
vi xxx 调用vi编辑器打开xxx文件
vi编辑器的具体使用方法,请自行百度学习
cat命令
将一个IO设备的内容输出到另一个IO设备
cat xxx1 > xxx2 将xxx1文件的内容输出到xxx2文件中
cat /dev/null > xx2 清空xxx2文件的内容
cat -n xxx1 > xxx2 将xxx1文件的内容,加上行号后,再输出到xxx2文件中
cat xxx1 xxx2 >> xxx3 将xxx1和xxx2文件的内容,附加到文件xxx3中
cat /dev/fd0 > xxx 将磁盘内容写到xxx镜像文件中
cat xxx > /dev/fd0 将xxx镜像文件写到磁盘中
more命令
按页查看文件,只能向后翻页
more -s xxx 按页查看xxx文件,如果有多个空行,则合并为一行显示
more +20 xxx 按页查看xxx文件,从第20行开始显示
less命令
按页查看文件,可以向前向后翻页
tail命令
显示文件尾部内容
tail xxx 显示文件最后10行内容
tail -f xxx 显示文件最后10行内容,并实时更新
tail -n 20 显示文件最后20行内容
tail -c 10 显示文件最后10个字符
head命令
显示文件头部内容
diff命令
diff xxx1 xxx2 比较文件xxx1和文件xxx2的内容
ping命令
检测与指定主机的网络连通性
ping xxx 检测与xxx主机的连通性
ping -c 2 xxx 检测与xxx主机的连通性,主机回应两次视为连通
ping -i 1 xxx 检测与xxx主机的连通性,每隔1秒发送一次数据包
ssh命令
远程登录Linux主机
ssh xxx@xxx 远程登录指定主机上的指定账号
telnet命令
远程登录Linux主机
telnet xxx 远程登录xxx主机,没有ssh安全
scp命令
远程复制文件
scp xxx user@host:folder 拷贝本地xxx文件,到远程host主机的folder文件夹下
scp xxx user@host:file 拷贝本地xxx文件,到远程host主机的的file文件位置
scp xxx host:folder 也可以不指定user,等待命令执行后,再在控制台输入用户名和密码
scp -r xxx user@host:folder 拷贝本地xxx文件夹,到远程folder目录下,r表示递归复制
scp user@host:file xxx 将远程的file文件,拷贝到本地xxx文件位置
scp -r user@host:folder xxx 将远程的folder文件夹,拷贝到本地xxx文件夹下
wget命令
从网络下载文件
wget xxx 下载xxx文件,保存到当前目录
wget -O zzz xxx 下载xxx文件,保存到当前目录,并命名为zzz
wget -c xxx 以断点续传的方式下载xxx文件
wget -b xxx 后台下载xxx文件,控制台会创建一个日志文件来记录下载进度
wget -tries=10 xxx 下载xxx文件,失败时最多重试10次
wget -o zzz xxx 下载xxx文件,并将日志存储到zzz文件
ifconfig命令
配置网卡
ifconfig eth0 up 启动网卡0
ifconfig eth0 down 关闭网卡0
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE 修改网卡0的MAC地址
route命令
修改路由规则
route print 打印路由规则
route delete 192.168.2.0 mask 255.255.0.0 删除ip为192.168.2.0,掩码为255.255.0.0的路由规则
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 添加一条到10.41.0.0的路由,掩码为255.255.0.0,网关为10.27.0.1
whereis命令
查找代码文件、二进制文件或帮助文件
whereis xxx 查找名称为xxx的代码文件、二进制文件或帮助文件
whereis -b xxx 查找名称为xxx的二进制文件
whereis -m xxx 查找名称为xxx的帮助文件
locate命令
查找文件
locate xxx 查找所有名为xxx的文件
locate -i xxx 查找所有名为xxx的文件,忽略大小写
locate /etc/xxx 查找etc文件夹下,所有以xxx开头的文件
locate ~/xxx 查找当前用户目录下,所有以xxx开头的文件
locate指令并不是实时查找硬盘,而且去查找文件索引数据库,所以它的查找结果不一定是准确的
可通过updatedb命令,来手动更新文件索引数据库
find命令
从硬盘查找文件
find . 查找当前目录下的所有文件
find . -name “*.c” 在当前目录下,查找后缀名为c的文件
which命令
在path系统变量中搜索指定程序所在位置
find java 查找java程序所在位置
clear命令
清除控制台
date命令
显示时间
date 显示当前时间
date ‘+%x’ 以年月日的格式显示时间
具体时间格式的控制方法,请自行百度了解
ln命令
为文件建立一个链接,类似于Windows中的快捷方式
ln -s xxx yyy 为当前目录下的xxx文件,建立一个名为yyy的链接