linux基础命令(很全建议收藏!)

本文不是原创,但都为本人亲自整理,命令很全,刚开始接触linux只需要掌握一些常用的命令即可,命令不在多,多敲多用才记得住!

显示历史命令执行时间
1、显示历史命令(history)的执行时间
export HISTTIMEFORMAT='%F %T'(重启后失效)
##永久显示时间和日期
vim /root/.bashrc
添加一行 export HISTTIMEFORMAT='%F %T ’
source /root/.bashrc

2、最后一次执行reboot时间
who 命令是 GNU Core Utilities 的一部分。人们经常把这个命令与检查谁登录了系统联系在一起。然而,它的作用不仅仅是打印已登录的用户。使用-b (--boot)选项,你可以快速获得最后一次系统启动的日期和时间。
$ who -b
或者
$ last reboot -1
3、最后一次重启后多久了?

我们知道/proc/uptime保存了系统已经启动的秒数。这个文件中的第一个字段的数字代表了上一次重启发生在多少秒前。我们可以把这些秒数转换成天、小时、分钟和秒。
这个方法的独特之处在于它告诉你系统启动的时间,而不是上次启动的日期和时间。如果你想用更人性化的方式表示最后一次重启的时间,这在脚本编写中会很方便。
$seconds=$(cut -d. -f1 /proc/uptime); echo System booted $((seconds/86400))" days "$(date -d "1970-01-01 + $seconds seconds" "+%H hours %M minutes %S seconds ago")

3、linux可以直接vim压缩包
modprobe命令

管理内核模块。它可以加载、卸载或查询内核模块,从而使得我们可以更好地管理系统和设备

Linux内核模块详解

irqbalance详解
Irqbalance is a daemon to help balance the cpu load generated by interrupts across all of a systems cpus.
#避免了单 cpu 负载过重情况的出现
# 查看当前运行情况service irqbalance status
# 终止服务service irqbalance stop

前置知识:中断

每个硬件设备都需要和 CPU 有某种形式的通信以便 CPU 及时知道发生了什么,这样 CPU 可能就会放下手中的事情去处理应急事件,硬件设备主动打扰 CPU 的现象就可称为硬件中断。就像正在一心一意的写代码时,突然钉钉“噔噔”地响起来,这时我们就知道有事情需要处理,这里的“噔噔”声就可以理解成一次中断。

CPU 和硬件沟通的方式中,还有一种叫做轮询(polling),就是让 CPU 定时对硬件状态进行查询然后做相应处理,这比较浪费 CPU,属于一种硬件被动的方式。相比下来,硬件主动的方式(中断)更有效一些。
每个硬件设备都有中断,很简单啊,给它们分个唯一的号码,也就是 irq 号,在 /proc/interrupts文件中的第一列可以看到所有的irq。
只有 kernel 2.4 以后的版本才支持的把不同的硬件中断请求(IRQs)分配到特定的 CPU 上的绑定技术被称为 SMP IRQ Affinity,这个后面还会详细说。

irqbalance 的主函数很简单,10s 一个周期,做以下事情:
【1】清除上次统计结果
【2】分析中断情况
【3】分析中断的负载情况
【4】计算如何平衡中断
【5】实施上面指定的方案
中断最终是运行在某一个cpu上的,所以有的中断虽然分配在cache、package层次上,但是最终还是在cpu上运行,所有每个cpu执行中断数大概等于所有父节点的中断数一级一级平均下来。然后用该cpu的负载除以该cpu平均处理的中断数,得到单位中断所占用的负载,那么每个中断的负载就等于该中断在单位时间内新增的个数乘以单位中断所占用的负载。那问题来了,如何计算负载的呢?
答案是通过/proc/stat 文件的 irq + softirq 获得的,以 cpu0 为例,一个可能的数据如下:
cpu0 200118431 1258 112897097 1062445972 321829 0 1048436 0 0 0
以上的数组表示从系统启动开始累计到当前时刻的 jiffies数(jiffies 是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数,在linux中,一个节拍大致可理解为操作系统进程调度的最小时间片,不同linux内核可能值有不同,通常在1ms到10ms之间)。
以上各字段的含义如下表:

在这里插入图片描述

NUMA架构

原文:http://cenalulu.github.io/linux/numa/

简要介绍一下 NUMA 架构。
NUMA 架构出现前,CPU 频率一路欢脱越来越高,直至碰到物理极限的天花板,后转向核数越来越多的方向发展。

如果每个 core 的工作性质都是 share-nothing(类似于map-reduce的node节点的作业属性),那么也许就不会有NUMA。由于所有CPU Core都是通过共享一个北桥来读取内存,随着核数如何的发展, 北桥 在响应时间上的性能瓶颈越来越明显。于是,聪明的硬件设计师们,先到了把内存控制器(原本北桥中读取内存的部分)也做个拆分,平分到了每个die上。于是 NUMA 就出现了!
NUMA 架构中,内存访问有远近之分,只有当 CPU 访问自身直接 attach 内存对应的物理地址时,才会有较短的响应时间(Local Access)。而如果需要访问其他 CPU attach 的内存的数据时,就需要通过 inter-connect 通道访问,响应时间就相比之前变慢了(Remote Access),NUMA(Non-Uniform Memory Access)就此得名。

NUMA架构会出现的问题
  • CPU规模因摩尔定律指数级发展,而总线发展缓慢,导致多核CPU通过一条总线共享内存成为瓶颈
  • 于是NUMA出现了,CPU平均划分为若干个Chip(不多于4个),每个Chip有自己的内存控制器及内存插槽
  • CPU访问自己Chip上所插的内存时速度快,而访问其他CPU所关联的内存(下文称Remote Access)的速度相较慢三倍左右
  • 于是Linux内核默认使用CPU亲和的内存分配策略,使内存页尽可能的和调用线程处在同一个Core/Chip中
  • 由于内存页没有动态调整策略,使得大部分内存页都集中在CPU 0
  • 又因为Reclaim默认策略优先淘汰/Swap本Chip上的内存,使得大量有用内存被换出
  • 当被换出页被访问时问题就以数据库响应时间飙高甚至阻塞的形式出现了
Linux系统之dd命令详解

原文:https://blog.csdn.net/zhanggqianglovec/article/details/129362961

1.dd介绍

1.Linux dd 命令用于读取、转换并输出数据。
2.dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
3.dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2

if 代表输入文件。如果不指定 if,默认就会从 stdin 中读取输入。
of 代表输出文件。如果不指定 of,默认就会将 stdout 作为默认输出。
bs 代表字节为单位的块大小。
count 代表被复制的块数。
/dev/zero 是一个字符设备,会不断返回 0 值字节(\0)。
if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file > 
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file > 
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。 
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。 
bs=bytes:read and write up to BYTES bytes at a time (default: 512); overrides ibs and obs。 
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。 
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。 
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。 
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。 
count=N : copy only N input blocks 
conv=conversion:用指定的参数转换文件。 
ascii:转换ebcdic为ascii 
ebcdic:转换ascii为ebcdic 
ibm:转换ascii为alternate ebcdic 
block:把每一行转换为长度为cbs,不足部分用空格填充 
unblock:使每一行的长度都为cbs,不足部分用空格填充 
lcase:把大写字符转换为小写字符 
ucase:把小写字符转换为大写字符 
swab:交换输入的每对字节 
noerror:出错时不停止 
notrunc:不截短输出文件 
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐

例子

1.创建指定大小的文件

[root@192 ~]# dd if=/dev/zero of=/tmp/1G.txt bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 31.19 s, 34.4 MB/s
[root@192 ~]# ll -h /tmp/
total 1.0G
-rw-r--r--  1 root root 1.0G May 31 21:51 1G.txt 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
【Linux】启动流程

原文链接:https://zhuanlan.zhihu.com/p/679318664

原文讲的很详细,如果想要深入了解的话可以好好看看

linux文件夹含义
在这里插入图片描述

linux题库(100道)

原文链接:https://blog.csdn.net/qq_62683583/article/details/127981219
题目很全,也有答案,适合基础的同学

———!!Linux系统分为两种———
1.RedHat系列:Redhat、Centos、Fedora等
2.Debian系列:Debian、Ubuntu等
RedHat系列的包管理工具是[yum](https://so.csdn.net/so/search?q=yum&spm=1001.2101.3001.7020)
Debian系列的包管理工具是apt-get
查看系统版本:
cat /proc/version
linux目录结构

在linux系统中,一切皆文件

linux文件夹含义

image-20231117104935866
/:根目录,所有目录及文件均在根目录下
/boot: 和启动相关的文件
/home: 所有非超级用户的家目录 - - (凡是创建一个普通用户,在该目录下会创建一个和用户名同名的用户的宿主目录,也称为家目录)
/root: 超级用户的家目录
/tmp: 启动时产生的临时文件(如果是非启动状态产生的文件/var/tmp)
/mnt: 系统提供给用户的默认挂载目录
/etc: 所有程序的配置文件
/dev 所有的设备文件
/lib: 启动时用到的库文件,非启动状态用到的库/usr/lib
/bin: 所有用户可以执行的命令
/sbin: 超级用户可以执行的命令
/usr 存放内容最多最杂的目录,上述内容之外的所有文件存放在该目录中
/var: 系统改变过的数据
/var/log: 日志文件
/var/run: 运行时的信息
/var/spool: 邮件信息
/usr/local 默认程序安装目录
/usr/lib 非启动状态用到的库
/usr/bin 所有用户可以执行的命令
/usr/sbin 超级用户可以执行的命令
linux日志

大多数日志文件位于一个便利的位置:/var/log

/var/log/syslog里面包含有最重要的日志之,这个特殊的日志文件记录下了除验证相关消息之外的一切信息。

dmesg |less 
#-f 
tail -f -n 10 /var/log/syslog

在这里插入图片描述

1、蓝色是目录
2、白色是一般性文件,如文本文件、配置文件、源码文件等
3、绿色是可执行文件
4、黄色是设备文件
5、红色是压缩文件
6、红色是闪烁代表连接文件有问题
7、灰色是其他文件
8、浅蓝色是链接文件
init
1.手动输入命令会执行相关操作
  #init 0 - 停机(千万不能把initdefault 设置为0 )
  #init 1 - 单用户模式
  #init 2 - 多用户,没有 NFS 不联网
  #init 3 - 完全多用户模式(标准的运行级)
  #init 4 - 没有用到
  #init 5 - X11 (xwindow) 图形化界面模式
  #init 6 - 重新启动 (千万不要把initdefault 设置为6 )
2.用法:init命令很简单。直接输入init + 你想要的模式  回车就行。
比如输入:  init 0  就是关机
          init 3  就是切换到多用户-命令行模式
          init 5  就是切换到图形化界面
          init 6  就是重启
rpm包(编译好的二进制包)

命名规则

在这里插入图片描述
文件
在这里插入图片描述

一、处理文件

基本命令 ls、mkdir
#ls
常用参数
    -a:--all缩写,显示所有文件,包括隐藏文件(以.开头的文件)
    -A:显示所有文件,包括隐藏文件,但是不显示.和..目录
    -d:仅列出目录本身,而不是列出目录中的文件列表
    -h:将文件大小以易读的方式显示 KB MB GB
    -l:列出长属性信息(与ll命令是一样的效果)
    -i:要与-l搭配使用,列出文件的Inode
    -r:将排序结果以倒序的方式显示
    -S:以文件大小排序(大写s)
    -s:block大小
    -t:以文件修改时间排序
    -c:以ctime排序 要和-lt一起使用
#cat 将文件内容全部输出到标准输出(也就是屏幕);cat 查看文件命令是只读的 不能修改,直接输入一个cat后就变成了一个交互式命令,输入什么就输出什么,按Ctrl+c可以退出
#cd
~ 代表/root,/root 是 root 用户的家目录;
cd ~表示切换到当前用户的家目录
cd ..或cd ../都可以切换到上一级目录,
cd - 表示先显示上一级目录再切换回上次所在目录
cd / 代表切换到根目录(根目录是所有用户所共享的目录);
#echo 输出打印命令,这个命令主要用来打印输出字符串或者变量 
wc -l  统计行数
uniq -c 统计不重复的数量
显示所有文件,按照文件修改时间降序排序(时间最新的显示在最后边)
 `ll -atr`
ll -a(等同于ls -la) 表示为可以查看到隐藏文件 ll -t(等同于ls -lt) 表示为按时间排序,从大到小 ll -r(等同于ls -lr) 表示为对目录进行反向排序
熟悉linux基本的目录结构、基本命令、
#mkdir 
-p 递归创建
-v 创建过程中显示信息
-m 创建目录时设置权限(两种权限表示都可以)
1.创建多层目录(test1下创建test2
mkdir -p test1/test2/test3/test4
2.把文件A移到B路径下
cp A B
#把 /usr/man 下的文件复制到 /usr/zh里
#cp -r /usr/men /usr/zh
3、rm [-fir] 文件或目录
选项与参数:
    -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
    -i :互动模式,在删除前会询问使用者是否动作
    -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
4、mv 移动文件或目录/修改名字
[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest
5、cat [-AbEnTv] 读取文件 
选项与参数:
    -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
    -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
    -E :将结尾的断行字节 $ 显示出来;
    -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
    -T :将 [tab] 按键以 ^I 显示出来;
    -v :列出一些看不出来的特殊字符
6#创建文件
vi -n 文件名:显示行号
touch file1
more
less
head -n
tail -n


在这里插入图片描述

文件名按时间排序
linux 中 ll命令*显示* 的*大小 *是字节
升序排列是按照数据从低到高排列,降序排列是数据从高到低排列
ls按时间 降序 排列: ls -lt (最常用)
ls按时间 升序 排列:ls -lrt
按文件大小排序

在这里插入图片描述

vim 快捷键

classic

1.[Ctrl] + [f]屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
2.[Ctrl] + [b]屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
3.0 或功能键[Home]这是数字『 0 』:移动到这一行的最前面字符处 (常用)
4.$ 或功能键[End]移动到这一行的最后面字符处(常用)
5.gg移动到这个档案的第一行,相当于 1G 啊! (常用)
跳转文件最后一行:G
6. nn 为数字。光标向下移动 n 行(常用)
7. /word向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
8. ?word向光标之上寻找一个字符串名称为 word 的字符串。wangxia
按 n这个 n 是英文按键。代表重复前一个搜寻的动作。
举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为vbird 的字符串!
10.N这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird
11.:n1,n2s/word1/word2/g:n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:
12.『:100,200s/vbird/VBIRD/g』。(常用)
n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:
13.:%s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)g:全局 c:确认是否替换
14.nyyn 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
15. :set nu 显示行号
more/less查看文件

cat a.txt | less

在这里插入图片描述

ln链接文件
硬连接:指通过索引节点来进行连接,指向同一个inode
软连接/符号链接:
[oracle@Linux]$ touch f1          #创建一个测试文件f1
[oracle@Linux]$ ln f1 f2          #创建f1的一个硬连接文件f2
[oracle@Linux]$ ln -s f1 f3       #创建f1的一个符号连接文件f3
[oracle@Linux]$ ls -li            # -i参数显示文件的inode节点信息
#文件权限对应数值
01234567
d/rwx/rwx/rwx
目录/属主/属组/其他用户
#chmod
#举例来说,如果要将 .bashrc 这个文件所有的权限都设定启用,那么命令如下:
[root@www ~]# ls -al .bashrc
-rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc
mv重命名/移动文件
mv命令
mv 目录/文件 目录/文件
mv 2.txt rumenz/
mv 1.txt 2.txt
将3.txt 4.txt 5.txt移动到rumenz
 > mv -t rumenz/ 3.txt 4.txt 5.txt
把当前目录下rumenz目录下所有的文件移动到test目录
 > mv  rumenz/* test/
 移动目录
 > mv rumenz/ test/
移动当前目录下所有的文件到上一级目录
 > mv * ../
rm删除文件
#删除一个名为“MyDocuments”的空目录
rmdir MyDocuments
#使用递归选项-r或-R,如果目录是受写保护的,则会提示是否继续删除目录和目录中的文件作为一个整体。-f 强制删除而不被提示。
rm -rf MyDocuments
#使用find命令删除
find . -type d -name "MyDocuments" -exec rm -rf {} +
. 表示在当前目录执行
-type d 只搜索目录
-name 指定目录名称
-exec rm -rf 执行rm命令删除所有目录即内容
{} + 追加在rm命令末尾
#只删除所有空目录
find . -type d -empty -delete
find查找文件(结合exec命令使用)

原文:https://blog.51cto.com/u_13538361/6395330

find 命令的基本语法如下:
$ find [path] [option] [expression]
option选项:
-name 文件名
-iname:忽略大小写
-o :同时查找多个文件
-type :只查文件或目录,比如-type f就只查目录
eg.
find /home/ -iname "*.txt" 
find /home/ -name "*.txt" -o -name "*.pdf" (-o或者)
find /home/ -name "*.txt" -a -name "a*"(-a并且)

1、在/var/log目录中查找更改时间在5日以前的文件并删除它们:
find /var/log -type f -mtime +5 -exec rm {} \;
2.txt文件打印到/tmp/re.txt里
find /home/ -type f -name "*.txt" -fprint /tmp/re.txt
3.文件/符号链接/目录/块设备/套接字
find /home/ -type f/l/d/b/s 
4.查找文件深度最大为三的目录(-mindepth)
find /usr/local/ -maxdepth 3 -type d  
5.通过访问时间查找
访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间
变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间
find /etc/ -type f -atime -7(7天以内
find /etc/ -type f -atime +7(超过7天
find /etc/ -type f -size +10k
find / -type f -perm 644
6.找出家目录下所有的.sh文件并删除
[root@localhost home]# find $HOME -name "*.sh" -ok rm {} \;
< rm ... /root/install_lnmp.sh > ? y
-ok和-exec行为一样,不过它会给出提示,是否执行相应的操作。
7.查找/home目录下所有.txt文件并把他们拼接到all.txt文件中
find /home/ -type f -name "*.txt" -exec cat {} \;>all.txt
8.查找/home目录下所有.txt文件并把他们复制到/opt/backup文件中
find /home/ -type f -name "*.txt" -exec cp {} /opt/backup/ \;

#1、查找当前目录下所有sh文件
find ./ -name "*.sh" 
#2、exec 跟 xargs类似,{}中执行的是find  ./ -name '*.sh' 的结果;
#\; 是转义分号字符,
find  ./ -name '*.sh' -exec  ls -lh  {}  \;
#exec:是将find的结果集一次性的投入到缓冲区后执行后续的命令,缓冲区有可能充满;
#xargs:是将find的结果集分批投入缓冲区。

#3、 +5表示5天前的文件
#mtime:修改时间 ;atime:访问时间 ctime:属性修改时间
find ./ -name  "syslong.*.gz"  -mtime +5 -exec ls -lh {} \;
#4、递归一次,即仅找第一层目录
find ./ -maxdepth 1    -type  d       
xargs
find . -name "*.cs" | less

显示结果为:

./SmallInsert.cs

接下来我们加上 xargs试下:

#xargs 会输出管道的内容
find . -name "*.cs" | xargs less
显示结果为:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;xargs -n1 :单行输出
cut
  • -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。 byte

  • -c :以字符为单位进行分割。 char

  • -d :自定义分隔符,默认为制表符。 define

  • -f :与-d一起使用,指定显示哪个区域。 fields 一般用以指定分隔符后的第几列

  • -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
    范围之内,该字符将被写出;否则,该字符将被排除

    [root@rhel6164 ~]# echo $PATH | cut -d ':' -f 2,4-6 #使用:分割后,选择打印出第2,4,5,6段信息
    /usr/local/bin:/bin:/usr/sbin:/usr/bin
    
nohup & 后台执行命令
$nohup Command [Arg...] [ &]
最后的" &":表示后台运行,不霸占交互命令行
如果不将 nohup 命令的输出重定向,默认输出将附加到当前目录的 nohup.out 文件中。
如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。
如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

nohup命令提交作业时,指定输出文件:
nohup command > myout.file 2>&1 &
#数字代码对应的输入输出
0 – stdin (standard input,标准输入) 
1 – stdout (standard output,标准输出)
2 – stderr (standard error,标准错误输出) 
2>&1解释:
将标准错误(2)重定向到标准输出(&1),
标准输出(&1)再被重定向输入到myout.file文件中。
$ sh ./startup.sh >startup.log 2>&1 | tee startup.log
表示将执行startup.sh脚本后到标准输出和标准错误输出内容写入到startup.log文件中。tee 默认是覆盖的方式写入文件中,加-a表示追加。
最终解释:表示命令执行后退出交互命令行也不挂起,通过最后一个 &,表示后台运行,不霸占交互命令行,同时将标准输出和标准错误输出合并到myout.file文件中。

管理进程

Ctrl + C:前台的命令任务终止
Ctrl + Z:将一个前台执行的命令放到后台,并且处于暂停的状态
fg:fg %jobID将某一任务调回前台运行
bg:bg %jobID将一个后台暂停命令变成后台继续执行
%jobID就是PID
如果要将后台命令停止用kill -9 %jobID。
批量终止或暂停后台命令:

1、ps aux| grep hostname | grep -v root | cut -c 9-15 | xargs kill -STOP
hostname: 用户名
grep -v root:反选去除root命令
cut -c 9-15: 9-15个字符正好是PID
xargs将前面的输出当做输入传给“kill -STOP”(暂停进程)或者“kill -9”(强行杀掉)或者“kill -15”(正常退出)
kill -CONT:恢复stop的进程
2、pkill [processname] :杀死全部进程
wc的参数及其使用
- c 统计字节数。 
- l 统计行数。 
- w 统计字数。 
$cat test.log |wc -l #统计test.log的行数

二、进阶指令

#1、查看磁盘空间、占用情况
df -h
#2、查看内存使用情况
free -m
#3.文件前n行
head -n 文件路径
tail -n 文件路径
tail -f test.txt 查看test.txt文件的更改状态(非手动更改)
#4.wc -l -w -c 统计文件
[root@root opt]# wc all.txt
  1   1 370 all.txt
#5.date
[root@root init.d]# date +%F
2023-03-11
[root@root init.d]# date "+%F %T"
2023-03-11 20:00:51

#系统参数
#查看os
cat /etc/os-release
#
hostnamectl
#显示当前主机的网卡及对应 IP
ip a
#查看网卡配置
ethtool-i [网卡名称]  
#服务
service [network|] start/stop/restart
压缩文件

1.1、压缩

tar -cvf [压缩后的路径] [源文件]
tar -zcvf /opt/etc.tar.gz /etc
tar -cvf [文件名].tar [文件目录] //打包成.tar文件
tar -jcvf [文件名].tar.bz2 [文件目录] //打包成.bz2文件
tar -zcvf [文件名].tar.gz [文件目录] //打包成.gz文件

1.2、解压缩

tar -xvf [文件名].tar //解压到当前文件
tar -xvf [文件名].tar -C [文件目录] //将.tar文件解压到指定目录
tar -jxvf [文件名].tar.bz2 -C [文件目录] //解压.bz2文件到指定目录
tar -zxvf [文件名].tar.gz -C [文件目录] //解压.gz文件到指定目录
linux三剑客
管道grep(1)(相当于搜索关键字)
|grep
#统计/ 目录下文件数量
ls / |wc -l
–color=auto 或者 –color:表示对匹配到的文本着色显示
-i:在搜索的时候忽略大小写
-n:显示结果所在行号
-c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数
-o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行,只打印匹配到的字符
-v:输出不带关键字的行(反向查询,反向匹配)
-w:匹配整个单词,如果是字符串中包含这个单词,则不作匹配
-Ax:在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,A:after
-Bx:在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,B:before
-Cx:在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C:context
-e:实现多个选项的匹配,逻辑or关系
-q:静默模式,不输出任何信息,当我们只关心有没有匹配到,却不关心匹配到什么内容时,我们可以使用此命令,然后,使用”echo $?”查看是否匹配到,0表示匹配到,1表示没有匹配到。
-P:表示使用兼容perl的正则引擎。
-E:使用扩展正则表达式,而不是基本正则表达式,在使用”-E”选项时,相当于使用egrep

#-i 不区分大小写
grep -i "str" a.txt
#-c 统计出现str的总行数
grep -i  -c "str" a.txt
#-o 只显示匹配的结果
grep -i  -o "str" a.txt
#-n 查找结果前显示该行行号
grep -n "str" a.txt
#高亮
grep --color "str" a.txt
#grep -v 反向查找,grep -v "grep" 就是查找不含有 grep 字段的行
#我们尝试匹配bin这个“词”
grep '\<bin\>' /etc/passwd --color
或者 grep -w 'bin' /etc/passwd --color
#匹配文本
grep -B1 "str" a.txt
-A1 -A2 .. -An 
-C 同时输出匹配该str的前后行
#匹配多个
grep -iE error|fault|success "str" a.txt
#-q 是否出现,没有返回1,成功/有则返回0,用 echo $? 查看
awk(2)

整理文本,将其格式化以后输出

支持条件判断、数组、循环等功能。所以,我们也可以把awk理解成一个脚本语言解释器。

语法:
awk [pattern] 'pattern{action}'  filenames

awk是逐行处理的,默认以“换行符”为标记来识别每一行
再根据用户指定的“分隔符”分割每一行,没有就默认“空格”为分隔符

1#等价于 awk '{print}' /etc/passwd
[root@Gin scripts]# awk '{print $0}' /etc/passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
2、参数-F:分隔符
awk -F":" '{ print "username: " $1 "\t\tuid:" $3" }' /etc/passwd

3# free | awk '{print $2}'		#逐行打印第2列
used
3062364
0

4、free | awk '{print NR}'			#输出行号
5、free | awk '{print NF}'			#输出每行数据的列数
6、awk '{print $NF}' /tmp/hosts	    #打印每行数据的最后一列
  awk '{print $(NF-1)}' /tmp/hosts	 #打印每行倒数第二列

注意:变量外面不要加“引号”,不然当做字符串输出

7、Action:BEGIN 、END

8.锁定带Mem的行,并输出计算后的数据
free | awk '/Mem/{printf("%.2f"), $3/$2*100}'
sed(3)

相当于vi文本编辑,对文本无破坏性(-i除外),除非使用 shell 重定向来保存输出结果。默认情况下,所有的输出行都被打印到屏幕上。

逐行处理-》输入缓冲区-》在缓冲区编辑-》输出/删除

https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html

语法
sed [选项] ‘command’ a.txt

【选项】:
-n 	使用安静模式,在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印
被 sed 特殊处理的行
-e 	多重编辑,且命令顺序会影响结果
-f 	指定一个 sed 脚本文件到命令行执行,
-r 	Sed 使用扩展正则
-i 	直接修改文档读取的内容,不在屏幕上输出
'command'sed '3d' ceshi.txt
sed '/north/d' ceshi.txt
#把west全部替换成north
sed 's/west/north/g' ceshi.txt 
a\在当前行后添加一行或多行
c\用新文本修改(替换)当前行中的文本
d删除行
i在当前行之前插入文本
h把模式空间里的内容复制到暂存缓存区
H把模式空间里的内容追加到暂存缓存区
g取出暂存缓冲区里的内容,将其复制到模式空间,覆盖该处原有内容
G取出暂存缓冲区里的内容,将其复制到模式空间,追加在原有内容后面
l列出非打印字符
p打印行
n读入下一输入行,并从下一条命令而不是第一条命令开始处理
q结束或退出 sed
r从文件中读取输入行
对所选行意外的所有行应用命令
s用一个字符串替换另一个
挂载mount
#挂载类似windows外接U盘,需要分配给u盘空间,在linux系统中,将某一盘符挂载到某一路径下
1.mount 命令  [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
       -l  查询系统中已经挂载的设备,-l 会显示卷标
       -a  依据配置文件/etc/fstab的内容,自动挂载
       -t  系统文件,加入系统类型指定挂载类型,可以ext3,ext4, iso9660等系统文件
       -L  卷标名:挂载指定分区,而不是设备文件名挂载
       -o  特殊选择:可以指定挂载额外选项
1.#mkdir /dac
#挂载ISO文件
#mount -o loop -t iso9660 /Centos.iso /dac
表示挂载的类型,挂载的数据ISO,和挂载点
2.自动加载#vim /etc/rc.d/rc.local增加mount -o loop -t iso9660 /XXXX.iso /XXX
Tips:使用mount挂载的方法在系统重新启动后就会失效,如果希望开机时自动挂载,需要配置/etc/fstab文件
3、samba,让windows和unix系列os之间的文件可以互相访问的软件。使用samba访问windows的共享文件夹,需要安装smbclient。
4.卸载挂载:
umount 当前设备挂载点
#umount /mnt/rhel-dvd
#5.查看块状设备
lsblk:ls block
df 磁盘利用率

“Disk Free”,看磁盘利用率,顾名思义功能是用于显示系统上可使用的磁盘空间

df -h :以容易阅读的方式显示

在这里插入图片描述

du 当前目录所占用的磁盘空间

http://c.biancheng.net/linux/du.html

du -s 目录:显示的当前目录所占用的磁盘空间,以KB为单位; du -sm 目录:显示的当前目录所占用的磁盘空间,以MB为单位;

image-20230724134415866
lsblk 磁盘信息

查看系统中的磁盘和分区信息

在这里插入图片描述

chkconfig 服务状态
1.chkconfig --list
2.chkconfig --level 35 ntpd on
``
#### crontab/cron 定时任务

````sh
分 时 日 月 周
*:表示取值范围的每一个数字
-:表示某个时段
*/ :表示每个多久执行一次
, :表示多个取值

cron -e -l
#每月1,10,22号4点45分重启网络服务
45 4 1,10,22 * * service network restart

Netstat 网络状态
netstat -tnlp
netstat -an
(-t:tcp协议 -n:将字母转化为数字 -l:列出状态为监听 -p:显示进程相关信息)
-a 显示全部
TraceRoute 路由追踪

在这里插入图片描述


三、系统命令

sudo
*sudo*是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。*sudo*不是对shell的一个代替,它是面向每个命令的。
free

默认free以KB为单位,f
在这里插入图片描述

reboot
reboot [-n] [-w] [-d] [-f] [-i]

2. 参数

  • -n : 在重开机前不做将记忆体资料写回硬盘的动作

  • -w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里

  • -d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)

  • -f : 强迫重开机,不呼叫 shutdown 这个指令

  • -i : 在重开机之前先把所有网络相关的装置先停止

reboot和reboot-f的区别在于reboot会先通知init进程进行一系列操作,而reboot-f则直接调内核。

top 查看cpu使用情况

在这里插入图片描述

2.1、系统整体的统计信息

第一行:

top - 16:20:38 up 12 days, 5:24, 2 users, load average: 0.04, 0.03, 0.05

top:当前时间

up:机器运行了多长时间

users:当前登录用户数

load average:系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

这里具体需要关注的还是load average三个数值。先来说说定义吧:在一段时间内,CPU正在处理以及等待CPU处理的进程数之和。三个数字分别代表了1分钟,5分钟,15分钟的统计值,这个数值的确能反应服务器的负载情况。但是,这个数值高了也并不能直接代表这台机器的性能有问题,可能是因为正在进行CPU密集型的计算,也有可能是因为I/O问题导致运行队列堵了。所以,当我们看到这个数值飙升的时候,还得具体问题具体分析。大家都知道,一个CPU在一个时间片里面只能运行一个进程,CPU核数的多少直接影响到这台机器在同时间能运行的进程数。所以一般来说Load Average的数值别超过这台机器的总核数,就基本没啥问题。

第二行:

Tasks: 127 total, 1 running, 126 sleeping, 0 stopped, 0 zombie

Tasks:当前有多少进程

running:正在运行的进程数

sleeping:正在休眠的进程数

stopped:停止的进程数

zombie:僵尸进程数

这里running越多,服务器自然压力就越大。

第三行:

%Cpu(s): 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0si, 0.0 st

us:用户空间占CPU的百分比(像shell程序、各种语言的编译器、各种应用、web服务器和各种桌面应用都算是运行在用户地址空间的进程,这些程序如果不是处于idle状态,那么绝大多数的CPU时间都是运行在用户态)

sy: 内核空间占CPU的百分比(所有进程要使用的系统资源都是由Linux内核处理的,对于操作系统的设计来说,消耗在内核态的时间应该是越少越好,在实践中有一类典型的情况会使sy变大,那就是大量的IO操作,因此在调查IO相关的问题时需要着重关注它)

ni:用户进程空间改变过优先级(ni是nice的缩写,可以通过nice值调整进程用户态的优先级,这里显示的ni表示调整过nice值的进程消耗掉的CPU时间,如果系统中没有进程被调整过nice值,那么ni就显示为0)

id: 空闲CPU占用率

wa: 等待输入输出的CPU时间百分比(和CPU的处理速度相比,磁盘IO操作是非常慢的,有很多这样的操作,比如,CPU在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU只能处于空闲状态。Linux系统在计算系统平均负载时会把CPU等待IO操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过wa来判断系统的性能瓶颈是不是过多的IO操作造成的)

hi: 硬中断占用百分比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息,当CPU收到中断消息后需要进行适当的处理(消耗CPU时间)。)

si:软中断占用百分比(软中断是由程序发出的中断,最终也会执行相应的处理程序,消耗CPU时间)

st:steal time

第四行:

KiB Mem : 1863012 total, 1286408 free, 216532 used, 360072 buff/cache

total:物理内存总量

free:空闲内存量

used:使用的内存量

buffer/cache:用作内核缓存的内存量

第五行:

KiB Swap: 5242876 total, 7999484 free, 0 used. 1468240 avail Mem

total:交换区内存总量

free:空闲交换区总量

used:使用的交换区总量

buffer/cache:缓冲的交换区总量

第四第五行分别是内存信息和swap信息,所有程序的运行都是在内存中进行的,所以内存的性能对与服务器来说非常重要。不过当内存的free变少的时候,其实我们并不需要太紧张。真正需要看的是Swap中的used信息。Swap分区是由硬盘提供的交换区,当物理内存不够用的时候,操作系统才会把暂时不用的数据放到Swap中。所以当这个数值变高的时候,说明内存是真的不够用了。

进程信息

img

img

默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列,还有一些参数,例如:

img

top命令进阶
1、更改显示内容

通过按 f 键可以编辑显示内容,按f键后,会出现下图:

img

根据上图可知:
①当前是按照%CPU这一列来排序的
②可以通过上、下键来选择
③按右键可以选择整个列,然后按上、下键来移动整个列的显示位置,前移或后移,按回车确定
④按空格键来显示或隐藏该列,带的是显示,不带的是不显示
⑤按s键可以将当前列设置为排序列
⑥按q键退出

2、top常用参数

top命令的格式为:top [选项]

top命令常用的选项参数:

img

img

3、top的交互命令

默认进入top时,各进程是按照CPU的占用量来排序的

【1】敲top后,按键盘数字“1”可以监控每个逻辑CPU的状况:

【2】敲top后,输入u,然后输入用户名,则可以查看相应的用户进程;

【3】敲top后,top命令默认以K为单位显示内存大小,我们可以通过大写字母E来切换内存信息区域的显示单位,如下按一下E切换到MB

再按一下E切换到GB:

【4】敲top后,输入h进入top命令的帮助文档,了解更多关于top的用法。

top当然是我们最常见的查看系统状况的命令。其他命令还有很多,比如vmstat,w,uptime ,iostat这些都是常用的命令。

top命令具有非常强大的功能,看懂这些具体参数以后,就知道自己的代码到底哪方面需要改进了,是优化内存消耗,还是优化你的代码逻辑。

文件

1、软链接
类似快捷方式
ln 命令的语法如下:
ln -s source_file link_name

将 /home/user/file1 进行软链接到 /home/user/link1,则可以在终端输入以下命令:
ln -s /home/user/file1 /home/user/link1

/home/user/link1 -> /home/user/file1

需要注意的是,软链接文件的名称和路径不能与已有的文件或目录重名,否则会出现冲突。

2.多行重定向

img

进程

1、按某一列数据排序

ps aus |head -1;ps aus |sort -rn -k3 |head -10 
r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。➢ n指代numberic sort,根据其数值排序。➢ k代表根据哪一列进行排序。➢ 数字3表示按照第3列排序
#pidof
pidof sshd:查询指定服务进程的pid
1.ps -aux |grep xxx|
kill -9 [进程号]
pidof [服务名]
killall [服务名]

2.ps -ef |grep 关键字  |awk '{print $2}'|xargs kill -9
|grep 关键字:通过关键字过滤
|awk 'print $2' :以默认分隔符(空格)分割每行的列,只输入每行第二列的内容,即进程ID
|xargs:将所有行数据转为单行,并以空格分开,然后作为kill的参数
kill -9:彻底杀死进程,进程参数为|xargs拼接的。
#if常见参数和表达式
-f                                  判断文件是否存在 eg: if [ -f filename ]; 
-d                                  判断目录是否存在 eg: if [ -d dir ]; 
-eq                                 等于,应用于整型比较 equal; 
-ne                                 不等于,应用于整型比较 not equal;
-lt                                 小于,应用于整型比较 letter; 
-gt                                 大于,应用于整型比较 greater; 
-le                                 小于或等于,应用于整型比较; 
-ge                                 大于或等于,应用于整型比较; 
-a                                  双方都成立(and) 逻辑表达式 –a 逻辑表达式; 
-o                                  单方成立(or) 逻辑表达式 –o 逻辑表达式; 
-z                                  空字符串; 
||                                  单方成立; 
&&                                  双方都成立表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值