Linux基础命令【个人随记,及时补充】

1MB等于1048576字节。 算法是:1Byte(字节) = 8bit(位),1KB = 1024Byte(字节),1MB = 1024KB,1GB = 1024MB,1TB = 1024GB,一个汉字要占用2个字节。
1.Vim 编辑器
yy复制光标所在行;p将复制行粘贴;配合n使用,比如nyy或np
u撤销,ctrl+r反撤销
G(shift+g):光标定位到文件的结尾
gg:光标定位到文件最开始
定位到第n行:n+G
shift+$:定位到该行最结尾
shift+^:定位到该行最开始
w:按照单词为单位向前移动
b:按单词为单位向后移动
dd:删除光标行(跟p配合使用,剪切)
ndd:删除n行
Shift+~:大小写替换
Shift+r:进入替换模式,一次替换一次
配置阿里云yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all    #清空原有的yum缓存
yum makecache    #生成新的yum缓存,便于加速软件下载
tail -f /var/log/messages  查看实时日志信息
vi编辑中批量替换命令:%s/92.168.5/192.168.59   批量将5.替换成59.
查看机器登录记录:sudo less /var/log/secure|grep 'Accepted'
rz和sz linux和windows间的文件互传
命令:lsmod | grep kvm   查看是否开启虚拟化
kvm_intel             282624  0
kvm                   663552  1 kvm_intel
linux系统间使用scp传递文件
scp [-r] -P 4555 yygy.log test@192.168.1.125:/tmp/
Linux系统中查看磁盘类型:lsblk -d -o name,rota
NAME ROTA
sda     1   #1代表HDD
sdb     0   #0代表SSD
EOF重定向输出:【>先清空后输入|>>追加】
cat >/usr/lib/systemd/system/node_exporter.service <<EOF
[Unit]
Description=node-exporter
[Service]
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
EOF
查看&过滤同时进行:cat 1.txt | grep root
                   root 789
Top命令详解
[root@localhost ~]# top
top - 12:26:46 up 1 day, 13:32, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.7%id, 0.1%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 625344k total, 571504k used, 53840k free, 65800k buffers
Swap: 524280k total, 0k used, 524280k free, 409280k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19002 root 20 0 2656 1068 856 R 0.3 0.2 0:01.87 top
1 root 20 0 2872 1416 1200 S 0.0 0.2 0:02.55 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kthreadd
Load average从左边起依次是过去1分钟、5分钟、15分钟内,单位时间的等待任务数,也就是表示平均有多少任务正处于等待状态。在load average较高的情况下,这就说明等待运行的任务较多,因此轮到该任务运行的等待时间就会出现较大的延迟,即反映了此时负载较高。
第一行:系统当前时间,系统运行时间,在线用户数,平均负载(1min,5min,15min【一般不超过CPU核心数即为正常】)
第二行:总进程数,正在运行的进程数,睡眠的进程数,终止的进程数,僵死进程数
第三行:用户模式下CPU占有率,系统模式下CPU占有率, 改变过优先级的用户进程占用的 CPU 百分比,空闲CPU占有率,等待输入/输出CPU占有率.......
第四行:内存情况
第五行:交换分区情况
第六行:进程ID,该进程所属用户,优先级(值越小优先级越高),优先级(值越小优先级越高),占用虚拟内存大小,占用物理内存大小,共享内存大小,进程状态......
  • 缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。
  • 缓冲(buffer)是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
简单来说,缓存(cache)是用来加速数据从硬盘中"读取"的,而缓冲(buffer)是用来加速数据"写入"硬盘的。
buff/cache占用比较大的原因分析:频繁存取文件会导致内存文件被用光,即便是程序结束后,也不会被正常释放,这就会导致buffer和cache占用比较高。
解决方法:
1)清理pagecache(页面缓存)
echo 1 > /proc/sys/vm/drop_caches或sysctl -w vm.drop_caches=1
2)清理dentries(目录缓存)和inodes
echo 2 > /proc/sys/vm/drop_caches或sysctl -w vm.drop_caches=2
3)清理pagecache、dentries和inodes
echo 3 > /proc/sys/vm/drop_caches或sysctl -w vm.drop_caches=3
强制卸载正在忙碌的文件系统:umount -lf /var/www/html 【-l 表示结束繁忙的文件系统,-f 表示强制】
命令行查看当前PVE母鸡中虚拟机当前状态:pvesh get /nodes/PVE节点名称/qemu/虚拟机的id/status/current
CPU利用率低高负载的原因:
原因总结: 等待磁盘I/O完成的进程过多,导致进程队列长度过大,但是cpu运行的进程却很少,这样就体现到负载过大了,cpu使用率低。
什么是负载?
负载就是cpu在一段时间内正在处理以及等待cpu处理的进程数之和的统计信息,也就是cpu使用队列的长度统计信息,这个数字越小越好(如果超过CPU核心*0.7就是不正常)。
负载分类:
  • CPU负载: 假设有一个进行大规模科学计算的程序,虽然该程序不会频繁地从磁盘输入输出,但是处理完成需要相当长的时间。因为该程序主要被用来做计算、逻辑判断等处理,所以程序的处理速度主要依赖于cpu的计算速度。此类cpu负载的程序称为“计算密集型程序”。
  • I/O负载: 主要从磁盘保存的大量数据中搜索找出任意文件。这个搜索程序的处理速度并不依赖于cpu,而是依赖于磁盘的读取速度,也就是输入输出(input/output,I/O).磁盘越快,检索花费的时间就越短。此类I/O负载的程序,称为“I/O密集型程序”。
rsync数据备份命令【remote sync】
  • 可以远程同步数据,类似于scp命令;也可以本地同步数据,类似于cp命令。
  • 不同于cp或scp的是:使用rsync命令备份数据时,不会直接覆盖以前的数据(如果数据已存在),而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。
基本格式:
[root@localhost ~]# rsync [OPTION] SRC DEST      //用于仅在本地备份数据
[root@localhost ~]# rsync [OPTION] SRC [USER@]HOST:DEST    //将本地数据备份到远程机器上
[root@localhost ~]# rsync [OPTION] [USER@]HOST:SRC DEST    //用于将远程机器上的数据备份到本地机器上
[root@localhost ~]# rsync [OPTION] [USER@]HOST::SRC DEST    //跟第三种相对,不同之处在于使用的是raync协议,第三种使用ssh协议
[root@localhost ~]# rsync [OPTION] SRC [USER@]HOST::DEST   // 跟第二种相对,不同之处在于使用的是raync协议,第二种使用ssh协议
ssh协议与rsync协议区别: rsync 协议在使用时需要额外配置,增加了工作量,但优势是更加安全;反之,ssh 协议使用方便,无需进行配置,但有泄漏服务器密码的风险。
查看具体进程:ps aux | grep "sshd" | grep -v "grep"、
chkconfig:启动/停止和查询系统服务的运行级别信息。
语法: chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]
例子:
chkconfig --list        #列出所有的系统服务
chkconfig --add httpd        #增加httpd服务
chkconfig --del httpd        #删除httpd服务
chkconfig --level httpd 2345 on        #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态
chkconfig --list mysqld        #列出mysqld服务设置情况
chkconfig --level 35 mysqld on        #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭
chkconfig mysqld on        #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级
系统管理
进程启动方式:
  • 手工启动进程【前台启动进程/后台启动进程(使用较少)】
  • 调度启动进程【 crontab、at等命令
常用命令:
ps:查看正在运行的进程
top:实时监听进程运行状态
pstree:查看进程树
lsof:列出进程调用或打开文件信息
进程优先级:PRI和NI值【 PRI值是由内核动态调整的,用户不能直接修改。所以我们只能通过修改 NI 值来影响 PRI 值,间接地调整进程优先级
修改 NI 值时有几个注意事项:
  • NI 范围是 -20~19。
  • 普通用户调整 NI 值的范围是 0~19,而且只能调整自己的进程。
  • 普通用户只能调高 NI 值,而不能降低。如原本 NI 值为 0,则只能调整为大于 0。
  • 只有 root 用户才能设定进程 NI 值为负值,而且可以调整任何用户的进程。
nice/renice:改变进程优先级
nice【 可以给要启动的进程赋予 NI 值,但是不能修改已运行进程的 NI 值
命令:nice -n -5 service httpd start  【启动apache服务,并修改apache服务进程的NI值为-5】
renice【 可以在进程运行时修改其NI值,从而调整优先级
命令:renice -10 PID 【修改该PID进程的NI值为-10】
kill:终止进程
killall +进程名
信号编号
信号名
含义
0
EXIT
程序退出时收到该信息。
1
HUP
挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。
2
INT
表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。
3
QUIT
退出
9
KILL
杀死进程,即强制结束进程。
11
SEGV
段错误。
15
TERM
正常结束进程,是 kill 命令的默认信号。
pkill -9 -t pts/1 【强制杀死从pts/1虚拟终端登录的进程】
jobs:查看当前终端放入后台的工作【jobs -l】
fg:把后台命令恢复在前台运行【fg %工作号】
bg:把后台赞同的工作恢复到后台执行【bg %工作号】
nohup:后台命令脱离终端运行【nohup [命令] &】  '&'表示此命令在终端后台工作,反之。
at:定时执行任务【在指定时间内只能执行一次任务】
at访问控制:【 访问控制 指的是允许哪些用户使用 at 命令设定定时任务,或者不允许哪些用户使用 at 命令
at 命令的访问控制是依靠 /etc/at.allow(白名单)和 /etc/at.deny(黑名单)这两个文件来实现的,具体规则如下:
  • 如果系统中有 /etc/at.allow 文件,那么只有写入 /etc/at.allow 文件(白名单)中的用户可以使用 at 命令,其他用户不能使用 at 命令(注意,/etc/at.allow 文件的优先级更高,也就是说,如果同一个用户既写入 /etc/at.allow 文件,又写入 /etc/at.deny 文件,那么这个用户是可以使用 at 命令的)。
  • 如果系统中没有 /etc/at.allow 文件,只有 /etc/at.deny 文件,那么写入 /etc/at.deny 文件(黑名单)中的用户不能使用 at 命令,其他用户可以使用 at 命令。不过这个文件对 root 用户不生效。
  • 如果系统中这两个文件都不存在,那么只有 root 用户可以使用 at 命令。
at实例:
命令格式:at time
如: at 17:25 today  //今天下午执行date命令且输出结果追加到1.txt文件内。ctrl+D结束
at> date >> 1.txt
at> <EOT>
job 3 at Mon Mar 13 17:25:00 2023
crond:周期性地执行某种任务或等待处理某些时间的一个守护进程。
crontab:循环执行定时任务【访问控制类似于at】【不同的是at只能执行一次,而crontab可反复执行】
命令格式:crontab [选项] file
crontab -u: 用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo
用户的 crontab 服务,此选项一般有 root 用户来运行。
crontab -e: 编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
crontab -l: 显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
crontab -r: 从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。
crontab -i: 在删除用户的 crontab 文件时,给确认提示。
crontab -e 打开配置文件格式: * * * * * 执行的任务
第一个*: 一小时当中的第几分钟
第二个*: 一天当中的第几小时
第三个*: 一个月当中的第几天
第四个*: 一年当中的第几个月
第五个*: 一周当中的星期几【0和7都代表周日】
例子:
"0 8,12,16 * * *": 代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令
" 0 5 * * 1-6 ": 代表在周一到周六的凌晨 5 点 0 分执行命令
" */10 * * * * ": 代表每隔 10 分钟就执行一次命令
*/5 * * * * /bin/echo "11" >> /tmp/test   // 每隔 5 分钟就向 /tmp/test 文件中写入一行“11”
5.5 * * 2 /sbin/shutdown -r now   // 每周二的凌晨 5 点 05 分重启一次
* */1 * * * /data/auto-del.sh >/dev/null 2>&1 //每隔1小时执行一次脚本
anacron: 判断是否有定时任务在关机之后没有执行。如果有这样的任务,那么 anacron 会在特定的时间重新执行这些定时任务。
命令:anacron [选项] [工作名]
配置文件/etc/anacrontab:
[root@localhost ~]# vi /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
#前面的内容和/etc/crontab类似
#the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
#最大随机廷迟
#the jobs will be started during the following hours only
START_H0URS_RANGE=3-22
#fanacron的执行时间范围是3:00~22:00
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
#每天开机 5 分钟后就检查 /etc/cron.daily 目录内的文件是否被执行,如果今天没有被执行,那就执行
7 25 cron.weekly nice run-parts /etc/cron.weekly
#每隔 7 天开机后 25 分钟检查 /etc/cron.weekly 目录内的文件是否被执行,如果一周内没有被执行,就会执行
©monthly 45 cron.monthly nice run-parts /etc/cron.monthly
#每隔一个月开机后 45 分钟检查 /etc/cron.monthly 目录内的文件是否被执行,如果一个月内没有被执行,那就执行。
[root@localhost ~] # vi /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL-/bin/sh
PATH-/sbin:/bin:/usr/sbin:/usr/bin MAILTO-root
# the maximal random delay added to the base delay of the jobs RANDOM_DELAY=0
#把最大随机廷迟改为0分钟,不再随机廷迟
# the jobs will be started during the following hours only START_HOORS_RANGE=3-5
#执行时间范围为03:00—05:00
#period in days delay in minutes job-identifier command
1 0 cron.daily nice run-parts /etc/cron.daily
7 0 cron.weekly nice run-parts /etc/cron.weekly
@monthly 0 cron.monthly nice run-parts /etc/cron.monthly
#把强制延迟也改为0分钟,不再强制廷迟
vmatat:是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。
[root@localhost proc]# vmstat 1 3
#使用vmstat检测,每隔1秒刷新一次,共刷新3次
procs ——memory—— swap —io system ——cpu——
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 407376 55772 84644 0 0 5 2 9 10 0 0 100 0 0
  • -r:等待运行的进程数,数量越大,系统越繁忙。
  • -b:不可被唤醒的进程数量,数量越大,系统越繁忙。
  • -si:从磁盘中交换到内存中数据的数量,单位为 KB。
  • -so:从内存中交换到磁盘中数据的数量,单位为 KB。【 这两个数越大,表明数据需要经常在磁盘和内存之间进行交换,系统性能越差。】
  • -bi:从块设备中读入的数据的总量,单位是块。
  • -bo:写到块设备的数据的总量,单位是块。【 这两个数越大,代表系统的 I/O 越繁忙。】
  • -in:每秒被中断的进程次数。
  • -cs:每秒进行的事件切换次数。【 这两个数越大,代表系统与接口设备的通信越繁忙。】
dmesg:查看系统硬件信息或查看内核产生的信息【多用于开机启动日志查询】
命令:dmesg | grep cpu   【查看CPU信息】
last: 查看当前和过去登陆系统用户的相关信息
lastlog: 查看到每个系统用户最近一次登陆系统的时间
临时写入命令:dd if=/dev/zero of=目标文件 bs=大小 count=包数

linux压缩命令常用:tar,tgz,gzip,zip,rar

一、tar压缩命令
tar -cvf examples.tar files|dir
#说明:
-c, --create  create a new archive 创建一个归档文件
-v, --verbose verbosely list files processed 显示创建归档文件的进程
-f, --file=ARCHIVE use archive file or device ARCHIVE  后面要立刻接被处理的档案名,比如--file=examples.tar
#举例:
tar -cvf file.tar file1       #file1文件
tar -cvf file.tar file1 file2 #file1,file2文件
tar -cvf file.tar dir         #dir目录
tar解压命令
tar -xvf examples.tar (解压至当前目录下)
tar -xvf examples.tar  -C /path (/path 解压至其它路径)
#说明:
-x, --extract, extract files from an archive 从一个归档文件中提取文件
#举例:
tar -xvf file.tar
tar -xvf file.tar -C /temp  #解压到temp目录下
二、tgz压缩命令
tar -zcvf examples.tgz examples (examples当前执行路径下的目录)
说明:
-z, --gzip filter the archive through gzip 通过gzip压缩的形式对文件进行归档
举例:
tar -zcvf file.tgz dir #dir目录
tgz解压命令
tar -zxvf examples.tar (解压至当前执行目录下)
tar -zxvf examples.tar  -C /path (/path 解压至其它路径)
举例:
tar -zxvf file.tgz
tar -zxvf file.tgz -C /temp
三、gzip压缩命令
gzip -r -6 examples.gz examples
gzip解压命令
gzip -dr examples.gz
gunzip -r examples.gz
四、zip压缩命令
说明 -r 递归处理,将指定目录下的所有文件和子目录一并处理。
zip -r examples.zip examples (examples为目录)
zip解压命令
unzip examples.zip
五、rar压缩命令
rar -a examples.rar examples
rar解压命令
rar -x examples.rar
unrar examples.rar
获取所有虚拟机列表: pvesh get /cluster/ resources   【qm list】
查看系统历史登录时间:utmpdump /var/run/utmp
/proc目录下存放运行的服务信息,且以pid作为文件夹
find /dir -type d -empty -delete  删除/dir下所有空目录

linux 查看某个目录的磁盘空间占用

df -h /tmp/   【查看该目录所在分区】
du -h /dir    【查看该目录下所有文件及子目录的大小】
du -h --max-depth=1 /dir   【查看当前目录的二级子目录使用情况】
du -s * | sort -nr | head -10    【按照字节排序,提取前10】tail -10 后10
vi +n filename:直接定位到文件第几行
vi -r filename.swp 【恢复swp文件】
head
head filename:打印前10行
head -c 5 filename:打印前5字节内容
head -n 100 filename:打印前100行内容
head -n -100 filename:打印后100行内容
ss -nutlp:查看开放的端口列表
PCB:系统感知进程的唯一实体
hostname -I:过滤主机IP地址
touch -m -d "时间" 文件名:修改文件时间

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值