美文网首页
linux日常使用问题3

linux日常使用问题3

作者: 狗狗胖妞 | 来源:发表于2019-11-05 14:14 被阅读0次

使用expect自动登录后,不能使用rz和sz命令问题

参考文档: https://blog.csdn.net/lovewebeye/article/details/85049423

将本地的LC_CTYPE环境变量设置成en_US,这样再用expect脚本自动登录,登录成功就可以使用rz 和sz传输文件了

export LC_CTYPE=en_US
# python设置环境变量
import os
os.environ['LC_CTYPE'] = 'en_US'

fork: Cannot allocate memory 问题的处理

问题现象: 无法ssh到服务器,最后重启了服务器再登录服务器查看日志,在secure日志文件下发现 sshd[1873]: error: fork: Cannot allocate memory报错,在message日志文件下发现 expire_proc: expire thread create for /net failed, expire_proc: expire thread create for /misc failed等报错

原因是线程数满了,超过了系统设置的默认值
有一个java程序有问题,创建线程过多

修改系统最大线程数:

#修改最大进程数后系统即可恢复,无需重启进程。
echo 1000000 > /proc/sys/kernel/pid_max

#永久生效
echo "kernel.pid_max=1000000 " >> /etc/sysctl.conf
sysctl -p

对于这种问题,应该主要去检查系统上运行的程序是否有问题,而不轻易需要修改默认的参数。


mysql时间

mysql> select UNIX_TIMESTAMP('2017-11-29');
+------------------------------+
| UNIX_TIMESTAMP('2017-11-29') |
+------------------------------+
|                   1511931600 |
+------------------------------+
1 row in set (0.04 sec)

mysql> select FROM_UNIXTIME('1511931600','%Y-%m-%d');
+----------------------------------------+
| FROM_UNIXTIME('1511931600','%Y-%m-%d') |
+----------------------------------------+
| 2017-11-29                             |
+----------------------------------------+
1 row in set (0.01 sec)

export和source

export修饰的变量在当前进程及其子进程中有效
source执行过的脚本,会将脚本中定义的变量放在当前进程中

参考文档: https://blog.csdn.net/qq_30038111/article/details/79887419

深度思考 ==>
export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝:

[jinbo@k8s-node0 ~]$ cat test 
while :
do
    sleep 2
    echo $a >> /tmp/aa
done
[jinbo@k8s-node0 ~]$ 
[jinbo@k8s-node0 ~]$ export a=3
[jinbo@k8s-node0 ~]$ ./test &
[1] 55318
[jinbo@k8s-node0 ~]$ tail -f /tmp/aa 
3
3
3
3
3
3
^C
[jinbo@k8s-node0 ~]$ a=4
[jinbo@k8s-node0 ~]$ tail -f /tmp/aa 
3
3
3
3
3
3
3
3
3
3
3

shell子进程中第一次引用父进程的变量后,后面父进程对该变量值的修改无法影响到子进程
这是因为:当子进程第一次引用父进程的变量会在自己的内存空间存放这个变量的值,所以父进程的变量变化对其是没有任何影响的

  • sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量(用export定义的变量),但子shell新建的、改变的变量不会被带回父shell
  • source filename 这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

一个监控docker容器资源使用的小脚本:

#!/bin/bash

filename=/tmp/.tmp_file
if [ -e $filename ];then                
   echo "Other instance is running!" 
   exit 0          
fi

trap "rm -f $filename;exit" 0 1 2 3 9 15

get_stats() {
touch /tmp/.a
{
while [ "`cat /tmp/.a`" != q ]       #通过读取文件的内容判断循环是否继续
do
        docker stats --no-stream | awk 'NR>1' >> $filename
done 
} &

while :
do
echo -ne "输入q退出测试:"
read input
#export input
if [ "$input" = q ];then
    break
else
    echo "只能输入q退出"
fi
done

echo $input > /tmp/.a

wait
rm /tmp/.a

id_str=`awk '{print $1}' $filename | sort -u`

for id in `echo $id_str`
do
    echo "CPU使用最高:"
        grep "^$id" $filename | sort -nrk 3 | head -n 1
    echo "内存使用最高:"
        grep "^$id" $filename | sort -nrk 4 | head -n 1
    echo "-------------------------------------------"
done

rm $filename

}

while :
do
while :
do
echo -ne "输入 start 开始测试:"
read choice
if [ "$choice" = start ];then
    break
else
    echo "你的输入有问题,请重新输入"
fi
done

echo -ne "正在监测... , "
get_stats
done

while [ "cat /tmp/.a" != q ] , 这个地方之前犯的错误是判断父进程的输入变量的值来结束这个循环 while [ "$input" != q ] ,即想通过父进程的变量修改来更改子进程的状态,它无法做到的

相关文章

  • linux日常使用问题3

    使用expect自动登录后,不能使用rz和sz命令问题 参考文档: https://blog.csdn.net/l...

  • linux日常使用问题2

    mysql 8.0.11授权的问题 安装之前的版本授权方式:mysql>grant all on test.* t...

  • linux使用的日常问题

    这片文章会一直写下去,当篇幅过大时会截断继续 克隆的虚拟机网卡配置的问题 参考文章:http://www.jb51...

  • linux小技巧:字体安装

    linux桌面系统的字体安装 前言 自从使用Linux系统当做日常系统以来,安装字体成了一大问题,首先,在哪里下载...

  • 开发解决方案 ● 日常Linux运维亲身感受好用命令和方案?(持

    问题来源: 日常除了开发,运维还是很重要的,但是Linux命令和使用方式众多,哪些才是高频有效的东西呢 问题描述:...

  • Linux日常使用

    Linux命令简介 常用命令 命令格式 说明: command: 命令 -options: 选项,多个选项可以写-...

  • 日常使用Linux

    Windows……嗯,进入Windows 8的时代之后,我对它的不满是与日俱增了。Windows 8的操蛋程度有目...

  • Linux日常使用

    centos7 poweroff -- 关机 让命令行提示符显示完整路径 编辑profile文件,添加显示环境变量...

  • Linux常见Shell命令

    本文是对日常使用linux,尤其在学习hadoop大数据组件时经常使用到的linux命令的一个总结,linux的每...

  • 学习小组Day3笔记--贾

    学会Linux安装软件 了解Linux的“App store” Conda(日常生信使用Miniconda) 用L...

网友评论

      本文标题:linux日常使用问题3

      本文链接:https://www.haomeiwen.com/subject/qgusbctx.html