文章目录
前言:在我们平时的工作中,会经常遇到一些linux操作不便捷的情况,以下我就自己在工作中遇到的一些小技巧进行总结,方便自己在后期使用过程中被难住…
1. linux下修改history格式
[root@shell_test ~]# export HISTTIMEFORMAT="%F %`who am i` "
[root@shell_test ~]# history |more
102 2019-07-15 11:45:14 AMoot pts/0 2019-07-15 10:27 (192.168.1.5) cat -n passwd |grep "n$"
103 2019-07-15 11:45:14 AMoot pts/0 2019-07-15 10:27 (192.168.1.5) cat -n passwd |grep "/sbin/nologi$"
104 2019-07-15 11:45:14 AMoot pts/0 2019-07-15 10:27 (192.168.1.5) cat -n passwd |grep "/sbin/nologin$"
2. ASCII码表中字符排序
按照按ASCII码值比较大小从小到大顺序是:数字、大写字母、小写字母
a-z:97-122
A-Z:65-90
0-9:48-57
3. shell脚本中的知识点
- if语句中,数值比较的写法是if [ $var1 -ge v a r 2 ] ; 字 符 串 比 较 的 写 法 是 i f [ “ var2 ];字符串比较的写法是if [ “ var2];字符串比较的写法是if[“var1” != “ v a r 2 ” ] , 其 中 加 双 引 号 只 是 兼 容 var2” ],其中加双引号只是兼容 var2”],其中加双引号只是兼容var2处为空的情况
- 在各种运算中,test命令的运算和中括号是等效的
- 赋值时等号两边没空格,比较或测试时运算符两边都要有空格
- shell默认是字符运算,如果想当数值进行运算要在前边加上expr,如:var3=
expr $var1 + $var2
- 只适用于数值的比较
- 适用于字符串的比较(也可用于数值比较)
- 字符串测试运算
- 文件测试运算
4. screen
平常开一个putty远程登录,经常需要在两个程序之间来回切换,怎么办?ctrl-z和fg、bg?这些太麻烦了。其实我们可以借助screen命令来实现轻松便捷的切换。
“首先用screen [-S]命令建立一个session,然后就可以在这个session中建立多个window了。使用screen [-S]可以建立多个session,而每个session又可以建立多个window。在不同的window之间可以用Ctrl-A n/p等命令来切换。而想要在多个session之间切换,则需要你Ctrl-A d回到登录session(就像一棵大树的根),然后再通过screen -ls查看有哪些session,然后使用screen -r来决定恢复到哪个session。对于已经Attached Session则不能直接screen -r,需要先screen -d,然后才能screen -r”
常用screen参数:
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session
4. 修改linux用户的最大进程数以及进程最大文件打开数(文件描述符)、tcp连接数
查看博客https://www.cnblogs.com/clicli/p/5856486.html
#修改系统中用户的最大进程数
[root@localhost ~]# ulimit -u 10000
#修改用户进程的最大文件打开数
[root@localhost ~]# ulimit -n 4096
[root@localhost ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 3795
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 4096
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 10000
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
#以上操作为临时修改,下面操作则为永久修改,解除 Linux 系统的最大进程数和最大文件打开数限制:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
5. linux服务端口
服务 | 端口 | 备注 |
---|---|---|
DNS域名解析 | UDP 53端口 | |
ssh服务 | 22 | |
redis | 6379 | |
mysql | 3306 |
6. linux主机性能分析
确认系统出现瓶颈需要从以下两点着手进行分析:
- 观察load average (平均负载)
- 观察cpu、io是否存在瓶颈
以下为进程描述符的状态的区别
状态 | 说明 |
---|---|
TASK_RUNNING (R running) | 运行状态。只要CPU空闲,任何时候都可运行 |
TASK_INTERRUPTIBLE(S sleep) | 可中断的等待状态。主要为恢复时间无法预测的长时间等待状态。例如系统睡眠或来自于用户的输入等待等 |
TASK_UNINTERRUPTIBLE(D sleep) | 不可中断的等待状态,例如磁盘输入输出的等待 |
TASK_STOPED | 响应暂停信号而运行中断的状态。直到恢复前都不会被调度 |
TASK_ZOMBLE (S) | 僵死状态,虽然子进程已经终止,但父进程尚未执行wait(),因此该进程的资源没有被系统释放。 |
事实证明:只有TASK_RUNNING和TASK_UNINTERRUPTIBLE会被换算成相应的load average
- 即使需要即刻使用CPU,也还需要等待其他进程用完CPU
- 即使需要继续处理,也必须等待磁盘输入输出完成才能进行
7. 两个nginx主进程处理
当存在两个master主进程时,需要重载特定主进程的conf
xxx代表:nginx配置文件的路径
nginx -p xxx -s reload
8. linux操作文件权限
9. ssh相关
-
密码登录
Server收到Client用户的登录请求,Server将自己的公钥发送给用户;Client使用公钥将自己的密码加密Client将加密后的数据发送至Server端Server端使用对应的私钥解密数据,然后验证其合法性如果密码正确,Server同意用户登录。
每个SSH用户(client端)都有自己的known_hosts文件, 此外系统也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保存一些对所有用户都可信赖的远程主机的公钥。 -
公钥登录
请看下面两张图:
解释说明:
Client将自己的公钥存放在Server端,追加到authorized_keys文件中。Server端接收到Client的连接请求后,会在authorized_keys中匹配到Client的公钥pubKey,并生成随机数R,用Client的公钥对该随机数进行加密得到pubKey®,然后将加密后信息发送给Client。Client端通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端。Server端会也会对R和SessionKey利用同样摘要算法生成Digest2。Server端会最后比较Digest1和Digest2是否相同,完成认证过程。
9.1 ssh问题总结
- 去掉第一次ssh连接的yes:
修改本机的/etc/ssh/ssh_config文件中的"# StrictHostKeyChecking ask" 为 “StrictHostKeyChecking no”,然后重启sshd服务即可