标签 linux 下的文章

首页你必需拿到主机(就是在主机上操作,不是远程连接上可以操作的)
很多时候我们都会忘记Linux root 用户的口令,下面就教大家如果忘记root口令怎么办

第1步:开机后在启动菜单上定位到系统所启动的选项上,按“e”进入编辑。
第2步:在linux16这行按END键在后面输入“ rd.break console=tty0”,然后按“ctrl+x“,进入到了系统的紧急求援模式
第3步:依次输入以下命令:

#mount –o remount,rw /sysroot
#chroot /sysroot
#passwd

输入新的root密码,2次确认,然后继续

#touch /.autorelabel
#exit
#exitroot

输完以后,系统会重启,输入我们刚才配置的密码登录就行
至此,密码破解完毕

那么怎么来预防别人通过这种方式来破密呢,就是给系统加上第二首锁:
使用 grub2-mkpasswd-pbkdf2 命令生成hash密码
编辑文件/etc/grub.d/文件夹下任意文件,通常编辑10_linux

在末尾添加如下几行:

cat <<EOF
set superusers="admin"
password_pbkdf2 admin xxxxxxxxxx
EOF

xxxxxx就是hash密码,或者用文明密码就是换成
password admin 123456这样

更新grub配置后并重启

#grub2-mkconfig -o /boot/grub2/grub.cfg
#reboot

当你重启过后想输入e编辑启动脚本时,要求认证输入上方的用户名admin和密码123456,才能进入,没错我们再上一把锁,不过有时候也许会坑自己,除非你的确需要这样做

不过这样做了,也有第三招来破密,这里就不写了

方法 1 – 使用反斜杠:command
输入以下命令暂时绕过名为 mount 的 bash 别名:mount

方法 2 – 使用引号: “command” 或 ‘command’
如下引用 mount 命令调用实际的 /bin/mount:”mount”
这里单引号和双引号都可以。

方法 3 – 使用命令的完全路径
使用完整的二进制路径,如 /bin/mount:

方法 4 – 使用内部命令 command
就是在执行的命令前加上 command 命令,样例如下:

command cmd
command cmd arg1 arg2
要绕过 .bash_aliases 中设置的别名,例如 mount:

command mount
command mount /dev/sdc /mnt/pendrive/
“command” 直接运行命令或显示关于命令的信息。它带参数运行命令,会阻止 shell 函数查询或者别名,或者显示有关给定命令的信息。

方法 5 – 使用 unalias 命令的说明
要从当前会话的已定义别名列表中移除别名,请使用 unalias 命令:

unalias mount
要从当前 bash 会话中删除所有别名定义:

unalias -a
如果要永久删除定义的别名,则必须删除别名的定义语句,确保你更新你的 ~/.bashrc 或 $HOME/.bash_aliases :

vi ~/.bashrc #或者执行 vi $HOME/.bash_aliases
想了解更多信息,参考这里的在线手册,或者输入下面的命令查看:

man bash
help command
help unalias
help alias

服务器负载过高(卡死)

#查看80端口连接数最多的20个IP

netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20

查看并发数

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

前面的 netstat -n是netstat的命令,window和linux都可以用,结果显示内容差不多

后面的 awk'/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 是linux下的命令,主要作用是对netstat输出的结果进行过滤和处理

运行这一句之后,显示的结果类似如下:

TIME_WAIT 27       
FIN_WAIT1 435
FIN_WAIT2 89
ESTABLISHED 82
SYN_RECV 64
CLOSING 4
LAST_ACK 90

这些结果代表啥意思呢?如下:

TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
ESTABLISHED:代表一个打开的连接
SYN-RECV:再收到和发送一个连接请求后等待对方对连接请求的确认
SYN-SENT:再发送连接请求后等待匹配的连接请求
CLOSING:等待远程TCP对连接中断的确认
CLOSED:没有任何连接状态
CLOSE-WAIT:等待从本地用户发来的连接中断请求
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
LISTEN:侦听来自远方的TCP端口的连接请求

#列出php-fpm进程,按内存排序
ps -ylC php-fpm --sort:rss

1.png

#列出所有用户的进程
ps aux | grep php-fpm

Linux上进程有5种状态: 

进程状态 含义 对应ps命令的状态码
运行 正在运行或在运行队列中等待 R 运行 runnable (on run queue) 
中断 休眠中, 受阻, 在等待某个条件的形成或接受到信号 S 中断 sleeping 
不可中断 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生 D 不可中断 uninterruptible sleep (usually IO) 
僵死 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放 Z 僵死 a defunct (”zombie”) proces
停止 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行 T 停止 traced or stopped 

 ps命令有很多参数,具体如下:

命令 含义
e 显示所有进程,环境变量
f 全格式
h 不显示标题
l 长格式
w 宽输出
a 显示终端上地所有进程,包括其他用户地进程
r 只显示正在运行地进程
x 显示没有控制终端地进程
u 以用户为主的格式来显示程序状况
au 显示较详细的资讯
aux 显示所有包含其他使用者的行程
-C<命令> 列出指定命令的状况
--lines<行数> 每页显示的行数
--width<字符数> 每页显示的字符数
--help 显示帮助信息
--version 显示版本显示

其中STAT状态位常见的状态字符有
D      //无法中断的休眠状态(通常 IO 的进程); 
R      //正在运行可中在队列中可过行的; 
S      //处于休眠状态; 
T      //停止或被追踪; 
W      //进入内存交换 (从内核2.6开始无效); 
X      //死掉的进程 (基本很少见); 
Z      //僵尸进程; 
<      //优先级高的进程 
N      //优先级较低的进程 
L      //有些页被锁进内存; 
s      //进程的领导者(在它之下有子进程); 
l      //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads); 
+      //位于后台的进程组;