系统相关的限制参数
cat /proc/sys/fs/file-max -> 1606896 系统的总句柄数
Linux系统在启动时根据系统硬件资源状况计算出来的最佳的最大同时打开文件数限制,如果没有特殊需要,不用修改,除非打开的文件句柄数超过此值。
一定要大于等于/etc/security/limits.conf所设置的soft nofile和soft nofile值
* soft nofile 32768
* hard nofile 65536
修改方式: 1. echo 1048576 > /proc/sys/fs/file-max 系统重启后消失
2. 修改/etc/sysctl.conf fs.file-max = 1048576 执行sysctl -p ,重启不会消失
超过该阈值的时候 通过dmesg 显示[warn] socket: Too many open files in system
最简单的samba配置:
启动和停止samba服务 systemctl start/stop/restart/status/enable smb
无密码访问 map to guest = Bad User
默认格式
[shiyuefeng]
comment = shiyeufeng
path = /home/shiyuefeng
public = yes
writeable = yes
create mode = 0644
force create mode = 0644
directory mode = 0755
force directory mode = 0755
tcp的连接数的问题
tcp_mem(3个INTEGER变量):low, pressure, high
low: 当TCP使用了低于该值的内存页面数时,TCP不会考虑释放内存。
pressure:当TCP使用了超过该值的内存页面数量时,TCP试图稳定其内存使用,进入pressure模式,当内存消耗低于low值时则退出pressure状态。
high: 允许所有tcp sockets用于排队缓冲数据报的页面量,当内存占用超过此值,系统拒绝分配socket,后台日志输出“TCP: too many of orphaned sockets”。
cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 4161536
默认值为87380 bit ≈ 86K,最小为4096bit=4K,最大值为4064K。
一般情况下这些值是在系统启动时根据系统内存数量计算得到的。
cat /proc/sys/net/ipv4/tcp_mem
932448 1243264 1864896
net.ipv4.tcp_mem 则是配置tcp的内存大小,其单位是页,而不是字节 ,1页等于4096字节!
根据当前tcp_mem最大内存页面数是1864896,当内存为(1864896*4)/1024K = 7284.75M时,系统将无法为新的socket连接分配内存,即TCP连接将被拒绝。
为了节省内存,设置tcp读、写缓冲区都为4K大小,tcp_mem三个值分别为3G 8G 16G,tcp_rmem和tcp_wmem最大值也是16G。
echo "net.ipv4.tcp_mem = 786432 2097152 3145728" >> /etc/sysctl.conf
echo "net.ipv4.tcp_rmem = 4096 4096 16777216">> /etc/sysctl.conf
echo "net.ipv4.tcp_wmem = 4096 4096 16777216">> /etc/sysctl.conf
cat /proc/sys/net/ipv4/ip_local_port_range 端口限制
echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf
cat /proc/net/sockstat 查看当前的socket 连接数状态
cat /proc/net/sockstat
sockets: used 390 已使用的所有协议套接字总量
TCP: inuse 9 orphan 0 tw 19 alloc 13 mem 3
UDP: inuse 4 mem 1
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0
TCP: inuse: 正在使用(正在侦听)的TCP套接字数量
TCP: orphan: 无主(不属于任何进程)的TCP连接数(无用、待销毁的TCP socket数)
TCP: tw: 等待关闭的TCP连接数。其值等于netstat –ant | grep TIME_WAIT | wc –l
TCP:alloc: 已分配(已建立、已申请到sk_buff)的TCP套接字数量。其值等于netstat –ant | grep ^tcp | wc –l
TCP:mem: 代表消耗的内存,单位是PAGE SIZE,一般为4KB ,内核处缓存用户没有及时收取到用户空间的tcp数据所消耗的内存大小。
UDP:inuse: 正在使用的UDP套接字数量
RAW:
FRAG:使用的IP段数量
sysctl -a 显示在/proc/sys目录中的内核参数
sysctl -p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
??? 哪个才是当前系统的打开文件数量
[root@HikvisionOS ~]# lsof |wc -l
4219
[root@HikvisionOS ~]# sysctl -a | grep file
fs.file-max = 1606896
fs.file-nr = 1504 0 1606896
fs.xfs.filestream_centisecs = 3000
scp -r ../TVMS/ root@10.33.43.107:/home/shiyuefeng Linux 服务器之间拷贝文件 -r 表示的是拷贝目录
ulimit -n,仅仅设置当前shell以及由它启动的进程的资源限制
top 相关命令:
c 查看全路径
C cpu排序
M 内存排序
1 显示多少CPU
查看内存相关状态
vmstat -w 5 每个五秒查询一次
查看磁盘io相关状态
iostat 5 每个五秒查询一次
Vim的相关操作
/dag 可以高亮显示dag字段
* 跳转到光标所在字符的下一个匹配处
:%s/^M//g 当出现换行符错误的时候进行该操作(原理就是替换操作), ^M = ctrl + v + ctrl + m
gg -> 文件头 G -> 文件尾
脚本执行报错不显示
rm /etc/init.d/dag > /dev/null 2>&1显示错误的话 不显示
查看系统的最大线程限制
cat /proc/sys/kernel/threads-max
查看当前系统下的线程总数
pstree -p | wc -l
查看进程下的所有线程数量
ps -eLf|grep pid|wc -l
查看动态库的依赖库文件
nm –D libtest.so [直接显示相关的库]
ldd -r libtest.so [检查相关的符号是否存在]
在linux下挂在windows下的更新目录
yum install cifs* -y
mount.cifs //10.20.139.86/Dcdag3.0 /home/shiyuefeng -o user=shiyuefeng,password=******
umount /mnt/APP
检查文件系统磁盘占用情况
df -h
检查磁盘空间占用情况:
du -h --max-depth=1 只显示一级目录
du -h * --max-depth=1 显示所有的目录大小
增加文件的权限
chmod -R 777 *
查看linux的core文件的生成路径
cat /proc/sys/kernel/core_pattern
测试利用kill -6 pid能够core文件。
gdb 相关操作
选择动态库的路径信息:
1.set solib-search-path /group/DcdagBuild/DC_DAG_SERVER_Linux_x64_20171129
2.info sharedlibrary
显示所有的线程堆栈
thread apply all bt
调试到该函数体执行结束
finish
手动生成dmp
gdb -p pid ;generate-core-file 也可以直接gcore pid -o dag.core
指定运行到哪里暂停
until main.cpp:1523
查看进程的内存映射,可以查看加载的动态库
info proc mapping(dmp无法使用)
条件断点
b MutexTest.cpp:57 if tmp == 10
查看对应的内存
x /20x 0x7ffea6f48d68 (x是以16进制显示,也可以s,以字符串的形式显示)
查看对应的汇编代码
x /10i thread
设置断点
b main.cpp:12 / b CTest:add
调试dmp
gdb -c dag.core /usr/local/DAG/dag
单线程调试
set scheduler-locking= on
宏调试
编译选项g3 使用info macro DEBUG进行查看
基本寄存器信息
X86
%esp:堆栈顶部
%ebp:当前堆栈帧
%eip:指令指针
X64
%rsp:堆栈顶部
%rbp:当前堆栈帧
%rip:指令指针
iptables 防火墙设置
iptables -L -n
iptables -A INPUT -s 10.33.43.53 -p tcp -j DROP
iptables -A OUTPUT -d 10.33.43.53 -p tcp -j DROP
iptables -D OUTPUT -d 10.33.43.53 -p tcp -j DROP
systemctl stop firewalld #停止firewall
systemctl disable firewalld #禁止firewall开机启动
systemctl status firewalld #查看防火墙的状态
firewall-cmd --list-all --zone=public #查看防火墙规则
firewall-cmd --permanent --zone=trusted --remove-source=10.20.139.19 |--add-port=80/tcp
firewall-cmd --get-active-zones
yum list | grep iptables #查看yum源是否有iptables的安装包
yum的镜像源设置 /etc/yum.repos.d/CentOS-Base.repo
查看centos的各种版本
cat /proc/version
cat /etc/redhat-release
strace的使用
strace -f -o configure-strace.txt -e trace=all ./dag [-p 10245]
可以自动的尝试出密码
hydra -L user.txt -P passwd.txt -t 16 -e ns 10.33.43.13 ssh
hydra -l administrator -P pass.txt 10.36.16.18 smb
查看静态库里面包含的信息
ar -t libevent.a
who-u 查看当前有多少登陆的用户
pkill -kill -t pts/0 剔出相应的用户
cat /proc/sys/fs/file-max -> 1606896 系统的总句柄数
Linux系统在启动时根据系统硬件资源状况计算出来的最佳的最大同时打开文件数限制,如果没有特殊需要,不用修改,除非打开的文件句柄数超过此值。
一定要大于等于/etc/security/limits.conf所设置的soft nofile和soft nofile值
* soft nofile 32768
* hard nofile 65536
修改方式: 1. echo 1048576 > /proc/sys/fs/file-max 系统重启后消失
2. 修改/etc/sysctl.conf fs.file-max = 1048576 执行sysctl -p ,重启不会消失
超过该阈值的时候 通过dmesg 显示[warn] socket: Too many open files in system
最简单的samba配置:
启动和停止samba服务 systemctl start/stop/restart/status/enable smb
无密码访问 map to guest = Bad User
默认格式
[shiyuefeng]
comment = shiyeufeng
path = /home/shiyuefeng
public = yes
writeable = yes
create mode = 0644
force create mode = 0644
directory mode = 0755
force directory mode = 0755
tcp的连接数的问题
tcp_mem(3个INTEGER变量):low, pressure, high
low: 当TCP使用了低于该值的内存页面数时,TCP不会考虑释放内存。
pressure:当TCP使用了超过该值的内存页面数量时,TCP试图稳定其内存使用,进入pressure模式,当内存消耗低于low值时则退出pressure状态。
high: 允许所有tcp sockets用于排队缓冲数据报的页面量,当内存占用超过此值,系统拒绝分配socket,后台日志输出“TCP: too many of orphaned sockets”。
cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 4161536
默认值为87380 bit ≈ 86K,最小为4096bit=4K,最大值为4064K。
一般情况下这些值是在系统启动时根据系统内存数量计算得到的。
cat /proc/sys/net/ipv4/tcp_mem
932448 1243264 1864896
net.ipv4.tcp_mem 则是配置tcp的内存大小,其单位是页,而不是字节 ,1页等于4096字节!
根据当前tcp_mem最大内存页面数是1864896,当内存为(1864896*4)/1024K = 7284.75M时,系统将无法为新的socket连接分配内存,即TCP连接将被拒绝。
为了节省内存,设置tcp读、写缓冲区都为4K大小,tcp_mem三个值分别为3G 8G 16G,tcp_rmem和tcp_wmem最大值也是16G。
echo "net.ipv4.tcp_mem = 786432 2097152 3145728" >> /etc/sysctl.conf
echo "net.ipv4.tcp_rmem = 4096 4096 16777216">> /etc/sysctl.conf
echo "net.ipv4.tcp_wmem = 4096 4096 16777216">> /etc/sysctl.conf
cat /proc/sys/net/ipv4/ip_local_port_range 端口限制
echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf
cat /proc/net/sockstat 查看当前的socket 连接数状态
cat /proc/net/sockstat
sockets: used 390 已使用的所有协议套接字总量
TCP: inuse 9 orphan 0 tw 19 alloc 13 mem 3
UDP: inuse 4 mem 1
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0
TCP: inuse: 正在使用(正在侦听)的TCP套接字数量
TCP: orphan: 无主(不属于任何进程)的TCP连接数(无用、待销毁的TCP socket数)
TCP: tw: 等待关闭的TCP连接数。其值等于netstat –ant | grep TIME_WAIT | wc –l
TCP:alloc: 已分配(已建立、已申请到sk_buff)的TCP套接字数量。其值等于netstat –ant | grep ^tcp | wc –l
TCP:mem: 代表消耗的内存,单位是PAGE SIZE,一般为4KB ,内核处缓存用户没有及时收取到用户空间的tcp数据所消耗的内存大小。
UDP:inuse: 正在使用的UDP套接字数量
RAW:
FRAG:使用的IP段数量
sysctl -a 显示在/proc/sys目录中的内核参数
sysctl -p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
??? 哪个才是当前系统的打开文件数量
[root@HikvisionOS ~]# lsof |wc -l
4219
[root@HikvisionOS ~]# sysctl -a | grep file
fs.file-max = 1606896
fs.file-nr = 1504 0 1606896
fs.xfs.filestream_centisecs = 3000
scp -r ../TVMS/ root@10.33.43.107:/home/shiyuefeng Linux 服务器之间拷贝文件 -r 表示的是拷贝目录
ulimit -n,仅仅设置当前shell以及由它启动的进程的资源限制
给定一个Linux下的so或可执行文件,怎样感知其中预设的rpath信息?
objdump -x binary-or-library | grep RPATH
top 相关命令:
c 查看全路径
C cpu排序
M 内存排序
1 显示多少CPU
查看内存相关状态
vmstat -w 5 每个五秒查询一次
查看磁盘io相关状态
iostat 5 每个五秒查询一次
Vim的相关操作
/dag 可以高亮显示dag字段
* 跳转到光标所在字符的下一个匹配处
# 跳转到光标所在字符的上一个匹配处
0 代表这一行的第一个字符 $代表最后一个字符
:r filename 打开一个文件的同时打开另外一个文件
[Ctrl]+[f]:屏幕向下移动一页,相当于[PageDown]按键。
[Ctrl]+[b]:屏幕向上移动一页,相当于[PageUp]按键。
u 撤销操作
vi -b 11.cpp 二进制打开文件(主要存在些乱码换行符的情况,linux 默认unicode):%s/^M//g 当出现换行符错误的时候进行该操作(原理就是替换操作), ^M = ctrl + v + ctrl + m
gg -> 文件头 G -> 文件尾
脚本执行报错不显示
rm /etc/init.d/dag > /dev/null 2>&1显示错误的话 不显示
查看系统的最大线程限制
cat /proc/sys/kernel/threads-max
查看当前系统下的线程总数
pstree -p | wc -l
查看进程下的所有线程数量
ps -eLf|grep pid|wc -l
查看动态库的依赖库文件
nm –D libtest.so [直接显示相关的库]
ldd -r libtest.so [检查相关的符号是否存在]
在linux下挂在windows下的更新目录
yum install cifs* -y
mount.cifs //10.20.139.86/Dcdag3.0 /home/shiyuefeng -o user=shiyuefeng,password=******
umount /mnt/APP
检查文件系统磁盘占用情况
df -h
检查磁盘空间占用情况:
du -h --max-depth=1 只显示一级目录
du -h * --max-depth=1 显示所有的目录大小
增加文件的权限
chmod -R 777 *
查看linux的core文件的生成路径
cat /proc/sys/kernel/core_pattern
测试利用kill -6 pid能够core文件。
gdb 相关操作
选择动态库的路径信息:
1.set solib-search-path /group/DcdagBuild/DC_DAG_SERVER_Linux_x64_20171129
2.info sharedlibrary
显示所有的线程堆栈
thread apply all bt
调试到该函数体执行结束
finish
手动生成dmp
gdb -p pid ;generate-core-file 也可以直接gcore pid -o dag.core
指定运行到哪里暂停
until main.cpp:1523
查看进程的内存映射,可以查看加载的动态库
info proc mapping(dmp无法使用)
条件断点
b MutexTest.cpp:57 if tmp == 10
查看对应的内存
x /20x 0x7ffea6f48d68 (x是以16进制显示,也可以s,以字符串的形式显示)
查看对应的汇编代码
x /10i thread
设置断点
b main.cpp:12 / b CTest:add
调试dmp
gdb -c dag.core /usr/local/DAG/dag
单线程调试
set scheduler-locking= on
宏调试
编译选项g3 使用info macro DEBUG进行查看
基本寄存器信息
X86
%esp:堆栈顶部
%ebp:当前堆栈帧
%eip:指令指针
X64
%rsp:堆栈顶部
%rbp:当前堆栈帧
%rip:指令指针
iptables 防火墙设置
iptables -L -n
iptables -A INPUT -s 10.33.43.53 -p tcp -j DROP
iptables -A OUTPUT -d 10.33.43.53 -p tcp -j DROP
iptables -D OUTPUT -d 10.33.43.53 -p tcp -j DROP
systemctl stop firewalld #停止firewall
systemctl disable firewalld #禁止firewall开机启动
systemctl status firewalld #查看防火墙的状态
firewall-cmd --list-all --zone=public #查看防火墙规则
firewall-cmd --permanent --zone=trusted --remove-source=10.20.139.19 |--add-port=80/tcp
firewall-cmd --get-active-zones
yum list | grep iptables #查看yum源是否有iptables的安装包
yum的镜像源设置 /etc/yum.repos.d/CentOS-Base.repo
查看centos的各种版本
cat /proc/version
cat /etc/redhat-release
strace的使用
strace -f -o configure-strace.txt -e trace=all ./dag [-p 10245]
可以自动的尝试出密码
hydra -L user.txt -P passwd.txt -t 16 -e ns 10.33.43.13 ssh
hydra -l administrator -P pass.txt 10.36.16.18 smb
查看静态库里面包含的信息
ar -t libevent.a
who-u 查看当前有多少登陆的用户
pkill -kill -t pts/0 剔出相应的用户