linux常用命令

谷歌国内开发平台地址:

https://developer.android.google.cn/?hl=zh-cn

免费SSL证书签发:

https://letsencrypt.org/

系统可用性计算方法:

可用性 = 系统正常运行时间/(系统正常运行时间+停机时间)
#比如:如果系统可用性目标为99.99%,那么一年中的停机时间大约为52分钟,计算方法是360/360+x=99.99%,计算出x即可

公共DNS地址:

8.8.8.8          #谷歌公司
8.8.4.4          #谷歌公司
1.1.1.1          #Cloudflare公司
1.0.0.1          #Cloudflare公司
4.2.2.1          #美国Level 3 Parent公司
4.2.2.2          #美国Level 3 Parent公司
4.2.2.3          #美国Level 3 Parent公司
4.2.2.4          #美国Level 3 Parent公司
4.2.2.5          #美国Level 3 Parent公司
4.2.2.6          #美国Level 3 Parent公司
94.140.14.14     #AdGuard提供
94.140.15.15     #AdGuard提供
94.140.14.15     #AdGuard提供
94.140.15.16     #AdGuard提供
9.9.9.9          #IBM
149.112.112.112  #IBM
101.101.101.101  #台湾网络资讯中心
101.102.103.104  #台湾网络资讯中心
180.76.76.76     #百度
223.5.5.5        #阿里
223.6.6.6        #阿里
119.29.29.29     #腾讯

centos镜像下载地址:

https://vault.centos.org/
https://mirrors.ustc.edu.cn/help/centos.html #中国科学技术大学

Linux应用商店:https://flathub.org/

开源音视频转换工具:

  • ffmpeg #在命令行工作的
ffmpeg -i input.mp4 -c:v libx264 -s 1920x1080 -r 25 -b:v 1024k -c:a aac -b:a 128k output.mp4

-i input.mp4:指定输入文件。
-c:v libx264:指定视频编码器为 H.264。
-s 1920x1080:设置视频分辨率。
-r 25:设置帧率为 25 帧/秒。
-b:v 1024k:设置视频码率为 1024Kbps。
-c:a aac:指定音频编码器为 AAC。
-b:a 128k:设置音频码率为 128Kbps。
output.mp4:指定输出文件名。

SSH工具:

  • Xshell
  • Tabby
  • WindowTerm
  • Remmina #在Linux系统上运行的可链接linux和win的工具https://remmina.org/

软件包下载地址:

https://pkgs.org/                          #全平台
https://ubuntu.pkgs.org/24.04/ubuntu-universe-amd64/ #ubuntu
https://centos.pkgs.org/7/centos-x86_64/   #centos7
https://vault.centos.org/6.8/isos/x86_64/  #centos6
http://ftp.osuosl.org/pub/centos/
http://mirrors.163.com/centos/7/os/x86_64/Packages/
https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/os/x86_64/Packages/

openjdk下载地址:

https://jdk.java.net/archive/

Lustre分布式存储系统

rpm命令:

rpm -ivh filename.rpm               #安装rpm包
rpm -ivh --nodeeps package.rpm      #安装rpm包而忽略依赖关系警告
rpm -e package.rpm                  #删除rpm包
rpm -Uvh package.rpm                #更新rpm包不改变配置
rpm -qa  package.rpm                #查看所有已安装的rpm软件包
rpm -qi  package.rpm                #查看rpm包的详细信息
rpm -qc  package.rpm                #查看已安装的rpm包提供的配置文件列表
rpm -ql  package.rpm                #查看已安装的rpm包提供的文件列表

yum命令:

  1. yum repolist all //列出所有仓库
  2. yum list all //列出仓库中所有软件包
  3. yum info 软件包名称 //查看软件包信息
  4. yum install 软件包名称 //安装软件包
  5. yum localinstall package.rpm //安装一个rpm包,使用自己的仓库解决依赖关系
  6. yum reinstall 软件包名称 //重新安装软件包
  7. yum update 软件包名称 //升级软件包
  8. yum remove 软件包 //移除软件包 ,保留配置文件和数据文件
  9. yum erase 软件包 //删除软件和它所有的文件
  10. yum clean all //清除所有仓库缓存
  11. yum clean packages //清理rpm缓存删除下载的包
  12. yum check-update //检查可更新的软件包
  13. yum grouplist //查看系统中已经安装的软件包组
  14. yum groupinstall 软件包组 //安装指定的软件包组 ,例如安装桌面
  15. yum groupremove 软件包组 //移除指定的软件包组
  16. yum groupinfo 软件包组 //查询指定的软件包组信息
  17. yum search 软件包 //查找软件包名称
  18. yum deplist 软件包 //显示软件包对应的依赖包

systemctl命令:

  1. systemctl start foo.service //启动服务
  2. systemctl restart foo.service //重启服务
  3. systemctl stop foo.service //停止服务
  4. systemctl reload foo.service //重新加载配置文件(不终止服务)
  5. systemctl status foo.service //查看服务状态
  6. systemctl enable foo.service //开机自动启动
  7. systemctl disable foo.service //开机不自动启动
  8. systemctl is-enabled foo.service // 查看特定服务是否为 开机自动启动
  9. systemctl list-unit-files –type=service // 查看各个级别下服务 的启动与禁用情况
  10. systemctl set-default multi-user.target //将图形界面模式切换为命令行模式
  11. systemctl set-default graphical.target //将命令行模式切换为图形界面模式
  12. systemctl enable foo.service –now //设置开启自启动并启动,等价于enable+start
  13. systemctl daemon-reload //重新加载所有修改过的配置文件
  14. systemctl list-unit-files | grep enabled //查看已启动的服务列表

基本命令:

echo Linux   #echo 命令用于在终端输出字符串或变量提取后的值
date         #date 命令用于显示及设置系统的时间或日期
date "+%Y-%m-%d %H:%M:%S"  #按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间
date "+%Y-%m-%d %H:%M:%S"   #按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间 
date -s "20170901 8:30:00"  #将系统的当前时间设置为 2017 年 9 月 1 日 8 点 30 分 
reboot        #reboot 命令用于重启系统,其格式为 reboot 
poweroff      #poweroff 命令用于关闭系统,其格式为 powerof f
wget          #wget 命令用于在终端中下载网络文件 ps  -aux    //查看系统中的进程状态 
top           #top 命令用于动态地监视进程活动与系统负载等信息 
top i         #不显示没有使用CPU的进程
top d 2 n 5   #每2秒输出一次,输出5次
pidof         #pidof 命令用于查询某个指定服务进程的 PID 值,例如:pidof sshd
kill          #kill 命令用于终止某个指定 PID 的服务进程  kill -9  pid
killall       #用于终止某个指定名称的服务所对应的全部进程 
ifconfig      #用于获取网卡配置与网络状态等信息 
uname         #用于查看系统内核与系统版本等信息  uname -a/r
cat  /etc/redhat-release #查看当前linux版本信息
cat           #用于查看纯文本文件   cat -n 文件名   可以查看文件编号
cat anaconda-ks.cfg | tr [a-z] [A-Z] #把某个文本内容中的英文全部 替换为大写
cat > output.txt <<EOF abcdefg EOF #向文件中写入多行内容,以<<EOF开始,遇到EOF结束
uptime        #用于查看系统 1 分钟、5 分钟、15 分钟 的负载信息 
free          #显示当前系统中内存的使用量信息  free -m/h
who           #查看当前登入主机的用户终端信息 
last          #查看所有系统的登录记录 
history       #用于显示历史执行过的命令  !+编号可以重新执行
sosreport     #用于收集系统配置及架构信息并输出诊断文档 
pwd           #用于显示用户当前所处的工作目录 
cd            #用于切换工作路径  例如:cd - 返回上层目录
cd ~user      #进入个人主目录  
ls            #用于显示目录中的文件信息  ls -a查看隐藏文件 ll -d /etc  查看目录权限
ls -lSr |more #以尺寸大小排列文件和目录
tac file      #从下往上反向查看文件
more          #用于查看纯文本文件 ,内容较多的,不支持上翻
less          #用于查看纯文本文件 ,内容较多的,支持上翻 
head          #用于查看纯文本文档的前 N 行  head -n 10 file   查看前10行
tail          #用于查看纯文本文档的后 N 行或持续刷新内容  tail -n 10 file
tail -f 文件名#实时查看最新日志文件
tr            #用于替换文本文件中的字符     
wc            #用于统计指定文本的行数、字数、字节数  常用wc -l  文件(统计行数)
stat file     #查看文件时间(访问时间如:vim打开但是不修改,修改时间,状态改变时间,如:chmod命令)
cut           #用于按“列”提取文本字符  
diff          #用于比较多个文本文件的差异
touch         #用于创建空白文件或设置文件的时间  -m(修改时间)/-a(读取时间)/-d(同时改变读取时间和修改时间)
mkdir         #用于创建空白的目录    mkdir -p a/b/c/d/e 创建多层目录
cp            #用于复制文件或目录  cp -a  文件名
mv            #用于剪切文件或将文件重命名
rm            #用于删除文件或目录  rm -i/rf  文件名,rm -rf 文件
dd            #用于按照指定大小和个数的数据块来复制文件或转换文件
file          #用于查看文件的类型    file   文件名
tar -zcvf  + 压缩后的名字  要压缩的文件或者目录,默认情况下tar压缩是采用相对路径的,如果绝对路径,此时需要使用P参数,命令为tar -zcvPf 进行打包
tar  -zxvf   + 压缩包   
tar  -zxvf  压缩包 -C   目录  #解压到指定目录
tar -xf 包名 --force-local    #包名中包含冒号时候解压会报错,加上--force-local即可解决
tar -zcvf a.tgz -C /data/abcd . #打包abcd路径下内容,但是不包括abcd路径,注意后面有个点(.)
tar -zcvf a.tgz --directory=/data/abcd . #跟上面-C 功能一样,写法不同而已,注意后面有个点(.)
grep          #用于在文本中执行关键词搜索,并显示匹配的结果,常用参数-n表示显示行号,  -v  表示反向选择
find  / -type f  -mtime +10 -size +20M  #表示查找修改时间10天以前大于20M的文件   
find / -type f -mtime -10   -size -20M  #表示查找修改时间10天以内小于20M的文件    -atime表示访问时间,用法一样,再次不列举
find / -type f -name "*.txt" -mmin +30  #查找根目录下30分钟之前的txt文件
find  /  -type f -name file1  -or -name file2 -or -name file3 -or -name file4 #查询多个文件
find /root   -name install.sh  -exec cp -a {}  /data/   \;  #查找文件名字为install.sh  并将其复制到/data目录下     -exec的用法
find ./* -type f -name "*.png" -print | tar -zcvf png.tgz -T -   #查找当前目录下png文件,并压缩,-T后面如何跟"-"表示从标准输入读取文件列表,此命令就是find后通过管道传递过来,-T后还可以跟文件名,文件中包含了要打包的文件列表,比如-T abc.txt,这个abc.txt中的内容是a.go b.go c.go这类文件,表示将这三个文件打包
find / -user gong 搜索属于用户 'gong' 的文件和目录
find /usr/bin -type f -atime +10 搜索过去100天内未被使用过的执行文件,atime表示访问时间
find / -name \*.abc -exec chmod 755 '{}' \; 搜索以 '.abc' 结尾的文件并定义其权限
find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备
alias         #设置别名  用法:alias  别名='命令 ' 取消:unalias  别名
env           #查看所有环境变量
mount         #挂载文件系统   参数: -t 指定文件系统类型,可写入/etc/fstab
mount -o loop file.iso /mnt/cdrom  #挂载一个文件或ISO镜像文件
mount -t cifs -o username=user,password=pass //192.168.1.1/share /mnt/share #挂载一个windows网络共享到Linux的/mnt/share目录
umount        #用于卸载已经挂载的设备文件   umount -l /dev/sdb2
umount -n /mnt/data #卸载磁盘并不写入/etc/fstab  
fdisk         #用于管理磁盘分区 ,常用参数fdisk -l
partprobe     #手动将分区信息同步到内核,连续两次执行该命令,效果更好
mkfs          #用于格式化操作的命令     mkfs.xfs /dev/sdb1 
du            #用来查看一个或多个文件占用了多大的硬盘空间    du -sh /abc/  
ln            #创建连接文件 ln -s  file1  file2 不加-s为硬链接,加-s为软链接
scp           #将文件传送到远程服务器或者从远程服务器下载到本地,例如:scp  root@192.168.1.1:/root/a.txt   /root/  表示将远程主机的a.txt文件下载到本地/root目录下,scp -P 2300 /root/b.txt  root@192.168.1.1:/root 表示将b.txt传送到远程机器的/root目录下,参数-P可以指定远程主机端口、参数-r可以用来传送文件夹(递归)
echo -e "\003"#一般在脚本中使用,表示ctrl +c
lsof  /home | grep -i delete #查找哪个应用对应的inode没有释放,一般用于处理清理磁盘空间后空间还是满的,实际大小与显示大小不一致
hdparm -t /dev/sda  #查询磁盘的读取速度
vmstat        #报告内存以及cpu使用情况
dmesg         #显示开机信息
lscpu         #显示cpu信息
getconf LONG_BIT    #获取主机的位数
sed '0,/happy/{//d}' file   #删除所有匹配行的第一行
sed -n '/2021-08-21 20:50:05/,/2021-08-21 21:42:05/p'  info.log   #匹配时间段内日志,要精确到秒,否则不准, 后面还可以跟grep搜素要检索的具体字段
sort 文件名 | uniq           #将文件内容排序并去除重复的内容
sort 1.txt 2.txt             #排序两个文件的内容
sort 1.txt 2.txt | uniq      #取出两个文件并集(重复的行只保留一份)
sort 1.txt 2.txt | uniq -u   #删除交集行(行内容一模一样),留下其他行
sort 1.txt 2.txt | uniq -d   #保留交集行,其余行不要
md5sum     文件名            #查看文件的md5值,用来文件数据做对比是否有缺失
sha256sum  文件名            #查看文件的sha256值,用于对比文件是否有缺失
yum provides  */netstat      #找到提供netstat命令的软件包 
:set paste                   #原样粘贴,解决粘贴位置乱的问题
ll -hrS                      #将文件大小按照升序方式进行排序
jar -xvf abc.jar             #解压jar包
jar -cvf0M abc.jar  BOOT-INF/  META-INF/  org/              #重新打成Jar包
jar -uvf hello-0.0.1-SNAPSHOT.jar BOOT-INF/classes/abc.yml  #将文件abc.yml添加进入jar包中
cat /sys/class/net/ens33/address           #查看机器的mac地址,与ifconfig等效
openssl x509 -in server.crt -noout -dates  #查看证书过期时间
cat error.log | egrep "2022/01/10 11" | awk -F':' '$2 >= 20 && $2 <= 40' #打印11点20到40分日志,注意,标点符号要是英文状态下的才可以,否则报错
touch {1..100}.txt                         #批量创建100个文件                     
grep -l  linux   a.txt b.txt c.txt         #搜索多个文件,找出linux位于哪个文件中
dmidecode -t processor | grep 'ID' | head -1 | awk -F : '{print $2}' #获取cpuid
dmidecode -t 4 | grep ID |head -1            #获取cpuid
bash -c  "ps -ef |grep nginx"  // bash 加-c  #可以将字符串作为命令
bash   shell.sh                              #bash后只能加脚本,不可以加命令
dmidecode -s system-serial-number | tail -n 1#获取机器的sn
grep -w  abc            #精确匹配abc字符串
:set ff=unix            #设置换行符为unix格式
:set ff=dos             #设置换行符为windows格式
cat -e a.sh             #查看文件换行符方式如果结尾为^M,说明为windows,如果为$说明为windows
ulimit -n               #查看当前系统打开文件数,默认为1024,也可以使用ulimit -a
ulimit -n 65535         #设置打开文件数,只是临时生效,如果永久可以设置limit.conf或者在服务中配置
mtr  www.baidu.com      #探测网络是否有丢包,需要提前安装mtr,直接yum -y install mtr
pidof   dockerd         #查看docker进程的pid
ls -li                  #获取文件的节点号,然后可根据节点号删除文件
find -inum 节点号 -delete #根据节点号删除文件
grep -w "abcd" --exclude-dir=logs ./* -r #精准查询内容排除目录logs
lsof -i   :3306         #查看3306端口被哪些进程使用,注意有冒号
wget -m    url地址      #递归下载此地址下的全部文件
wget -c   url 地址      #下载,并实现断点续传
wget -P  /root/test url #下载文件到/root/test目录下,目录如果不存在会自动创建
journalctl --disk-usage #检查journal使用的磁盘量
journalctl --vacuum-time=2d     #只保留journal 2天内的日志
journalctl --vacuum-size=500M   #日志最大500M,大于500M的都会被清理掉
zip -r -o file.zip   abc/ def/  #将abc和def目录压缩到file.zip中
zip -r -j  a.zip /tmp/a.txt /tmp/b.txt  #将a.txt和b.txt压缩进a.zip中,不带目录/tmp
uname -m                 #查看处理器架构
uname -r                 #查看内核版本
demidecode -d            #查看系统硬件部件
cat /proc/cpuinfo        #显示cpu信息
cat /proc/meminfo        #显示内存信息
cat /proc/swaps          #显示哪些swap正在被使用
cat /proc/version        #显示内核版本
cat /proc/net/dev        #显示网络适配器以及统计
cal 2010                 #显示2010年的日历表
clock -w                 #将时间修改保存到BIOS
shutdown -h now          #关机
init 0                   #关机
telinit 0                #关机
shutdown -h hour:minute  #按预定时间关闭系统
shutdown -c              #取消按预定时间关闭系统
shutdown -r now          #重启系统
reboot                   #重启系统
logout                   #注销
whereis halt             #显示一个二进制文件、源码、或者man的位置
which   halt             #显示一个二进制文件或者可执行文件的完整位置             
fuser -km /mnt/data      #当设备繁忙时强制卸载
unoconv  -f  png   a.jpg #将jpg格式转换为png,也可以转换doc、pdf等
chattr +a  file          #只允许以追加的方式读写文件
chattr +c  file          #允许这个文件能被内核自动压缩和解压
chattr +d  file          #在进行文件系统备份时,dump程序将忽略这个文件
chattr +i  file          #设置成不可变的文件,不能被删除、修改、重命名或者链接
chattr +s  file          #允许一个文件被安全地删除
chattr +S  file          #应用程序对这个文件执行了写操作,系统立刻把修改的结果写到磁盘
bzip2 -d  abc.bz2        #解压bz2压缩包,通过bzip2命令(需要单独安装)
gunzip    file.gz        #解压gz压缩包
gzip      file           #压缩file文件
gzip -9   file           #最大程度压缩
paste 1.txt 2.txt > 3.txt#合并文件1.txt和2.txt到3.txt中
paste -d "+" 1.txt 2.txt > 3.txt #合并后中间使用+连接
badclocks -v /dev/sda1   #检查磁盘sda1上的坏磁块
fsck /dev/hda1           #修复/检查hda1磁盘上linux文件系统的完整性
fsck.ext2 /dev/hda1      #修复/检查hda1磁盘上ext2文件系统的完整性
e2fsck /dev/hda1         #修复/检查hda1磁盘上ext2文件系统的完整性
e2fsck -j /dev/hda1      #修复/检查hda1磁盘上ext3文件系统的完整性
fsck.ext3 /dev/hda1      #修复/检查hda1磁盘上ext3文件系统的完整性
fsck.vfat /dev/hda1      #修复/检查hda1磁盘上fat文件系统的完整性
fsck.msdos /dev/hda1     #修复/检查hda1磁盘上dos文件系统的完整性
dosfsck /dev/hda1        #修复/检查hda1磁盘上dos文件系统的完整性
mkfs /dev/hda1           #在hda1分区创建一个文件系统
mke2fs /dev/hda1         #在hda1分区创建一个linux ext2的文件系统
mke2fs -j /dev/hda1      #在hda1分区创建一个linux ext3(日志型)的文件系统
mkfs -t vfat 32 -F /dev/hda1 #创建一个 FAT32 文件系统
fdformat -n /dev/fd0     #格式化一个软盘
mkswap /dev/hda3         #创建一个swap文件系统
split -b 10M a.txt b_    #将a.txt切割为以b_开头,大小为10M的文件,split后加--verbose显示过程
cat b_aa b_ab > a.txt    #将split切割的文件,通过cat命令重新合并为a.txt
fc-cache -fv             #刷新字体缓存
chage -M -1 username     #设置用户密码用不过期,-1表示永不过期
chage -M 1000 username   #设置用户过期时间为1000天
chage -l    username     #查看是否设置成功,-l是L的小写
lsof |grep deleted       #查找被进程占用的已删除文件的id,可停止或重启释放inode
ftp ip 21                #登陆ftp,会提示输入账号密码
usermod -aG groupname username #将用户加入到新的组并保留原来的组
ll /proc/pid/fd | wc -l  #查看进程打开的文件描述符
echo "hello" | tee file.txt   #在终端输出内容并同步写入到file.txt中,文件不存在会自动创建
echo "world" |tee -a file.txt #在终端显示后追加到文件file.txt中,文件不存在会自动创建
echo "abcd" | tee file.txt file1.txt #输出到多个文件中
find ./*  -name "*.txt" | xargs rm -rf #将find结果传给xargs变成命令行参数,作为rm -rf的参数
du --inodes -s /data/abc  #查看目录abc以及子目录占用的inode数量
kill -TERM pid #请求进程正常终止,允许进程执行清理操作、释放资源等,等于kill -15
kill -9 pid    #强制杀掉进程
kill -QUIT pid #请求进程推出并生成核心转储文件 等于kill -3
awk 'END {print NR}' filename #统计文件有多少行
cat filename | wc -l          #统计文件有多少行
wc -l filename                #统计文件有多少行
grep -c  '^' filename         #统计文件有多少行
ss -tnp                       #查看所有远程链接
ss -tnp dst :443              #查看连接到远程443端口的所有链接
netstat -tnp | grep ESTABLISHED | grep 443 #查看连接到远程443端口的所有链接
ss -tnp src :22               #查看本地的22端口正在被哪些远程服务连接过来
ss -antp | grep ':9092'       #查看本地的9092端口被哪些远程机器连接中
export TMOUT=3600             #配置shell终端会话超时时间,在/etc/profile
curl ifconfig.me              #查看linux服务器本机的公网出口IP
curl icanhazip.com            #查看linux服务器本机的公网出口IP
pgrep -x haproxy              #精确找到haproxy
pgrep -x -o nginx             #精确找到最新启动的nginx,一般为master进程
pgrep -x -n nginx             #精确找到最后启动的Nginx,一般为worker进程
iostat -xmt 1 每秒刷新数据,如果%iowait>10%说明磁盘拖慢系统,await > 10 ms + aqu-sz > 1 + %util > 80% 同时出现,基本锁定磁盘问题
bash -c 'exec 3<>/dev/tcp/127.0.0.1/3306 && echo "3306 is open" && exec 3<&-' #Bash 内置的网络端口检测技巧​​,它不依赖外部工具(如 telnet或 nc),直接通过 Bash 的 /dev/tcp特性检查本地 3306 端口(通常是 MySQL)是否开放,如果检测其他端口,就把3306换成其他端口即可,此命令适合容器内,如果没有telnet,那么可以用此命令
grep -Fxf file1.txt file2.txt #查看两个文件共同的行(交集)
npm install --unsafe-perm   #安装时保持当前用户权限
npm rebuild node-saas       #重构下node-saas

输入输出重定向:

  1. 命令 < 文件 : 将文件作为命令的标准输入
  2. 命令 << 分界符 : 从标准输入中读入,直到遇见分界符才停止
  3. 命令 < 文件 1 > 文件 2:将文件 1 作为命令的标准输入并将标准输出到文件 2
  4. 命令 > 文件 : 将标准输出重定向到一个文件中(清空原有文件的数据)
  5. 命令 2> 文件 : 将错误输出重定向到一个文件中(清空原有文件的数据)
  6. 命令 >> 文件 : 将标准输出重定向到一个文件中(追加到原有内容的后面)
  7. 命令 2>> 文件: 将错误输出重定向到一个文件中(追加到原有内容的后面)
  8. 命令 >> 文件 2>&1或者 命令 &>> 文件 : 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

管道命令符: 把前一个命令原本要输出到屏幕的数据当作是后一个命令的标准输 入

  1. ls -l /etc/ | more :将/etc/目录下的文件传递给more命令
  2. echo “linux” | passwd –stdin root //修改root密码,编写脚本时使用

常用的转义符:

  1. 反斜杠(\): 使反斜杠后面的一个变量变为单纯的字符串echo “Price is \$5”
  2. 单引号(”): 转义其中所有的变量为单纯的字符串
  3. 双引号(“”): 保留其中的变量属性,不进行转义处理
  4. 反引号(“): 把其中的命令执行后返回结果

环境变量:

  1. HOME : 用户的主目录(即家目录)
  2. SHELL: 用户在使用的 Shell 解释器名称
  3. HISTSIZE: 输出的历史命令记录条数
  4. HISTFILESIZE: 保存的历史命令记录条数
  5. MAIL: 邮件保存路径
  6. LANG : 系统语言、语系名称
  7. RANDOM: 生成一个随机数字
  8. PS1: Bash 解释器的提示符
  9. PATH : 定义解释器搜索用户执行命令的路径
  10. EDITOR : 用户默认的文本编辑器

Vim命令:

  1. dd : 删除(剪切)光标所在整行
  2. 5dd : 删除(剪切)从光标处开始的 5 行
  3. yy : 复制光标所在整行
  4. 5yy : 复制从光标处开始的 5 行
  5. n : 显示搜索命令定位到的下一个字符串
  6. N : 显示搜索命令定位到的上一个字符串
  7. u : 撤销上一步的操作
  8. p : 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面
  9. :w : 保存
  10. :q : 退出
  11. :q! : 强制退出 ,不保存
  12. :wq :保存并推出
  13. :wq! 强制保存退出
  14. :set nu : 显示行号
  15. :set nonu : 不显示行号
  16. :整数 : 跳转到该行
  17. 10G 跳转到第10行
  18. :s/a/b :将当前光标所在行的第一个 a 替换成 b
  19. :s/a/b/g : 将当前光标所在行的所有a 替换成b
  20. :%s/a/b/g : 将全文中的所有a 替换成b
  21. :n,ms/a/b/g : 将行号n到m之间的所有a替换为b
  22. ?字符串 : 在文本中从下至上搜索该字符串 ,反向查找
  23. /字符串 : 在文本中从上至下搜索该字符串,正向查找
  24. /\<字符串\> : 在文本中精确查找字符串,严格匹配,\表示转义字符
  25. a/i/o:按住键盘a或i或o进入编辑模式
  26. Esc:从编辑模式返回命令模式,此时可以执行保存
  27. ctrl +v 然后移动光标选择要操作的行,打开大写键,点击i,输入内容,按两次esc,可以实现批量添加内容(比如注释或其他特殊符号)
  28. shift + zz //在vim普通模式(按了ESC)下输入shift zz即可实现快速保存并退出
  29. ggdG //在vim普通模式(按了ESC)下输入此内容可清空文件全部内容

用户身份与权限:

uid: 表示用户标识,root的uid为0,普通用户uid从1000开始,id root可查看
gid: 表示组标识  root的gid为0
useradd: 用于创建新的用户,  useradd -d /home/linux -u 8888 -s /sbin/nologin linux  参数:-d表示指定用户家目录,-u表示指定用户的UID,-s表示指定默认shell解释器,-g表示指定基本组  -G表示指定扩展组
groupadd  group_name: 创建用户组
groupdel group_name: 删除用户组
groupmod -n new_group_name old_group_name: 重命名一个用户组
usermod:  用于修改用户的属性 参数: -g更改基本组,-G更改扩展组,-L锁定用户禁止其登录,-U解锁用户,-u修改UID,-s改成默认解释器,例如:useradd -a G group user 将用户user加入到组group中
passwd: 用于修改用户密码、过期时间、认证信息,-l(L的小写)表示锁定指定用户,也无法通过FTP登录 如: passwd -l admin,-u解除锁定,-e强制下次登录修改密码,--stdin允许标准输入修改密码
userdel: 用于删除用户 ,参数:-f强制删除,-r同时删除家目录
chattr: 用于设置文件的隐藏权限 主要参数: i(无法对文件进行修改),a( 允许追加内容,无法覆盖/删除内容 ), 使用方法:chattr +i/-i  文件名
lsattr: 用于显示文件的隐藏权限, 按照显示的隐藏权限的类型(字母),使用 chattr 命令将其去掉
chage -E 2005-12-31 user1 设置用户口令的失效期限
pwck: 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户

文件权限

find / -perm -u+s : 系统中所有使用了SUID控制的文件
chown: 设置文件或目录的所有者和所属组  chown -R root:root 文件/目录
chown user file:  修改文件的所有人属性
chgrp group file: 修改文件的群组
chmod u+s /bin/file: 设置一个二进制文件的 SUID
chmod u-s /bin/file: 禁用一个二进制文件的 SUID
chmod g+s /home: 设置一个目录的SGID
chmod g-s /home: 禁用一个目录的SGID
chmod o+t /test: 设置一个目录的 STIKY
chmod o-t /test: 取消一个目录的 STIKY
chmod +x 文件路径: 为所有者、所属组和其他用户添加执行的权限
chmod -x 文件路径: 为所有者、所属组和其他用户删除执行的权限
chmod u+x 文件路径: 为所有者添加执行的权限
chmod g+x 文件路径: 为所属组添加执行的权限
chmod o+x 文件路径: 为其他用户添加执行的权限
chmod ug+x 文件路径: 为所有者、所属组添加执行的权限
chmod =wx 文件路径: 为所有者、所属组和其他用户添加写、执行的权限,取消读权限
chmod ug=wx 文件路径: 为所有者、所属组添加写、执行的权限,取消读权限

其他

1、vim无法输入中文,编辑/etc/vimrc或者/etc/vimc,添加如下内容:

set encoding=UTF-8
set langmenu=zh_CN.UTF-8
set fileencoding=utf-8

2、新增硬盘,挂载到指定位置:

1、添加新分区
fdisk /dev/sda
2、按照如下输入:
n  回车
p  回车
1  回车
两次回车
w 回车
3、查看分区
fdisk -l
4、格式化分区
mkfs -t xfs -c /dev/sda1    #-c用来检查坏道,如果新硬盘那么不需要-c
5、挂载
mount /dev/sda1 /data

3、cpu读取数据问题:

  • 64位CPU每次读取8个字节的数据
  • 32位CPU每次读取4个字节的数据

4、linux内核下载地址:

https://elrepo.org/linux/kernel/el7/x86_64/RPMS/
http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/

5、linux配置登录超时锁定

(1)、修改/etc/ssh/sshd_config中参数,设置登录失败次数与锁定时间,如图:

  • MaxAuthTries:登录失败次数为2次
  • LoginGraceTime:锁定时间为2分钟

上图的意思是如果一个用户连续两次登录失败将被锁定2分钟后才可以登录

(2)、除了上述方法外,也可以在/etc/pam.d/sshd文件中添加如下内容:

auth    required      pam_tally2.so deny=5 unlock_time=60   #登录失败5次锁定60s

6、linux设置密码有效期

vim /etc/login.defs
PASS_MAX_DAYS 90      #最大天数
PASS_MIN_LEN	5     #最小长度

7、passwd -l 和/sbin/nologin都是禁止用户登录有什么区别?

1、passwd -l admin 将设置admin用户不能通过shell登录,也不能通过FTP工具登录
2、修改/etc/passwd将/bin/bash改为/sbin/nologin只是禁止用户不能通过shell登录但是还是可以通过FTP登录

8、通过openssl自签名证书

openssl genrsa -out abcd.key 2048  #生成key
openssl req -new -key abcd.key -out abcd.csr #生成csr
openssl x509 -req -days 36500 -in abcd.csr -signkey abcd.key -out abcd.crt #根据key和csr申请crt #证书有效期100年

9、设置服务器禁止ping

编辑文件/etc/sysctl.conf,添加如下语句:

net.ipv4.icmp_echo_ignore_all = 1

添加成功后,执行sysctl -p 即可

美团CAT开源监控工具

10、实时操作系统

  • Azure RTOS ThreadX

11、文件格式问题

将windows下的文件上传到linux后,打开文件可以看到内容后缀显示^M,这是^M字符是 Windows 换行符​ 在 Linux/Unix 系统中的显示问题,不同操作系统的换行符差异:

  • Windows:使用 \r\n(回车+换行)
  • Linux/Unix:使用 \n(仅换行)
  • Mac OS:历史上使用 \r,现在多数也用 \n

解决办法:

apt install dos2unix
dos2unix 文件名