常用命令

查看并发请求数和TCP状态

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

批量kill掉包含某个关键字的进程

搜索关键词为 sign_v 

ps -ef | grep sign_v | grep -v grep | cut -c 9-15 | xargs kill -9

下面将这条命令作一下简单说明:

管道符"|"用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。

"ps -ef" 是linux里查看所有进程的命令。这时检索出的进程将作为下一条命令"grep sign_v"的输入。

"grep sign_v" 的输出结果是,所有含有关键字"sign_v"的进程。

"grep -v grep" 是在列出的进程中去除含有关键字"grep"的进程。

"cut -c 9-15" 是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。

"xargs kill -9" 中的 xargs 命令是用来把前面命令的输出结果(PID)作为"kill -9"命令的参数,并执行该命令。"kill -9"会强行杀掉指定进程。
搜索关键词为 sign_v 
ps x | grep sign_v | grep -v grep | awk '{print $1}' | xargs kill -9

显示目录下所有一级目录和文件

tree -L l -FC -I "*.pyc"

批量查找某个目下文件的包含的内容

grep -rn "要找查找的文本" ./

Linux批量查找并替换文件夹下所有文件的(文字)内容

sed -i "s/要找查找的文本/替换后的文本/g" `grep -rl "要找查找的文本" ./`

e.g.:

sed -i "s/中国建设银行/中国银行/g" `grep -rl "中国建设银行" ./`

批量查找并替换任意文件夹下的文件内容

sed -i "s/要找查找的文本/替换后的文本/g" `grep -rl "要找查找的文本" /任意文件夹`

Linux查看Nginx进程数

ps -ef | grep nginx | wc -l

Linux查看httpd进程数

ps -ef | grep httpd | wc -l

dirname $0 的用法

$0                # 当前Shell程序的文件名

dirname $0        # 获取当前Shell程序的路径

cd `dirname $0`   # 进入当前Shell程序的目录

cp命令

cp -a    # 保留原文件属性的前提下复制文件 

cp -r dirname(源文件) destdi(目标文件)

zsh和bash

chsh -s /bin/zsh

chsh -s /bin/bash

sh和bash的区别

因为bash是sh的增强版本,bash是一个超集sh更优雅的语法和更多的功能,在我们平常实地操作的时候如果sh这个命令不灵了我们应当使用bash。
注:在某些环境中,sh 是 bash。sh --version。

新增普通用户

useradd [option] username
[option]:
-d< 登入目录> 指定用户登入时的目录。
-g< 群组> 初始群组。
-G< 群组> 非初始群组。
-m 自动创建用户的家目录。
-M 不要创建用户的家目录。
-N 不要创建以用户名称为名的群组。
-s 指定用户登入后所使用的shell。
adduser centos
passwd centos

cat /etc/passwd | grep centos

Case 1: 创建一个带有家目录并且可以登录 bash 的用户
$ sudo useradd -m -s /bin/bash tester1

Case 2: 指定创建用户家目录的路径
$ sudo useradd -m -d /home/xxx tester2
/home/xxx目录会被创建。

Case 3: 创建一个没有家目录且不能登录的用户
$ sudo useradd -s /sbin/nologin tester3

Case 4: 创建时把用户加入不同的用户组
$ sudo useradd -m -G xxx,sudo tester4

删除普通用户

userdel pentest

sudoers文件相关

whereis sudoers   # 查找sudoers文件路径

ls -l /etc/sudoers

sudo -V           # 查看sudo版本
sudo --version    # 查看sudo版本

# kali切换root用户
sudo - su

查看系统版本信息

### 通用
cat /proc/version

Linux version 5.4.0-64-generic
ubuntu 20.04
sudo version 1.8.31

root模式下新建普通用户即可


### Ubuntu

lsb_release -a

通过shell脚本对MongoDB进行自动化操作

mongo --eval "rs.initiate({'_id':'crmset','members':[{'_id':0,'host':'localhost.localdomain:27017','priority':100},{'_id':1,'host':'localhost.localdomain:27018','priority':90},{'_id':2,'host':'localhost.localdomain:27019','priority':80}]});rs.isMaster()"

虽然回显不够明确,但是只要不报错, 命令是能够正常执行的

查看CPU型号

# cat /proc/cpuinfo | grep name | sort | uniq

model name  : Intel(R) Core(TM) i5-10400 CPU @ 2.90GHz

查看物理CPU个数

# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
2

查看每个物理CPU中core的个数(即核数)

# cat /proc/cpuinfo | grep "core id" | sort | uniq | wc -l
2

# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores   : 2

查看逻辑CPU个数(最常用,即通常的CPU核心数)

# cat /proc/cpuinfo | grep "processor" | sort | uniq | wc -l
4

计算CPU个数的公式:

总核数 = 物理CPU个数 X 每颗物理CPU的核数 
总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

直接查看格式化的cpu信息(自己不想算的话)

lscpu

lscpu | grep "CPU(s):"

其它参考

processor :系统中逻辑处理核的编号。对于单核处理器,则课认为是其CPU编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核
vendor_id :CPU制造商
cpu family :CPU产品系列代号
model   :CPU属于其系列中的哪一代的代号
model name:CPU属于的名字及其编号、标称主频
stepping  :CPU属于制作更新版本
cpu MHz  :CPU的实际使用主频
cache size :CPU二级缓存大小
physical id :单个CPU的标号
siblings :单个CPU逻辑物理核数
core id :当前物理核在其所处CPU中的编号,这个编号不一定连续
cpu cores :该逻辑核所处CPU的物理核数
apicid :用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
fpu :是否具有浮点运算单元(Floating Point Unit)
fpu_exception :是否支持浮点计算异常
cpuid level :执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容
wp :表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)
flags :当前CPU支持的功能
bogomips :在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)
clflush size :每次刷新缓存的大小单位
cache_alignment :缓存地址对齐单位
address sizes :可访问地址空间位数

查询IP

ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"

命令解释
 ifconfig -a       和window下执行此命令一样道理,返回本机所有ip信息
 grep inet                   截取包含ip的行
 grep -v 127.0.0.1      去掉本地指向的那行
 grep -v inet6             去掉包含inet6的行
 awk { print $2}         $2 表示默认以空格分割的第二组 同理 $1表示第一组​
 tr -d "addr:               删除"addr:"这个字符串