常用命令
查看并发请求数和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:"这个字符串