Other
了解Linux根节点下的目录
使用ls /命令查看根节点下的目录
[root@ /]# ls bin dev home lib64 media opt root sbin sys usr boot etc lib lost+found mnt proc run srv tmp var 以下是对这些目录的解释(根目录下的东西都不要乱动)
/bin: bin是Binary的缩写,这个目录存放着最经常使用的命令
/boot:这里存放着Linux启动时需要的核心文件,包括一些链接文件以及镜像文件
/dev:dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:这个目录来存放所有的系统管理所需的配置文件和子目录。 /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。 /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。
/lost+found:该目录存放非法关机的文件
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容
/opt:主机额外安装软件所存放的目录, /proc:这是一个虚拟目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息
/root:该目录为系统管理员,也称为超级权限者的用户主目录 /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/srv:该目录存放一些服务启动之后需要提取的数据
linux常用命令
sed -i s/172.16.12.240:2006/10.121.182.17\/webgis/g `grep 172.16.12.240:2006 -rl /data/jadp-webapp`sed -i s/bs01/cgyadmin/g `grep bs01 -rl /data/jadp-webapp`
tar cf filename #打包文件tar xf filename #解包tar czf filename #打包并压缩文件,压缩成filename.tar.gz或.tgztar cjf filename #打包并压缩文件,压缩成filename.tar.bz2或.tbz2tar zxf filename #解压filename.tar.gz或.tgz文件tar jxf filename #解压filename.tar.bz2或.tbz2文件
vim操作:u #取消修改ctrl + r #重做x #删除单个字符dd #剪切g #回到首行G #跳到末行a #在当前之后插入A #在当前行末尾插入i #在当前之前插入I #在当前行开头插入ng #移动光标到n行$ #移动光标到末行^ #移动光标到首行:%d #清楚文本:%s/n/m/g #替换hjkl #上下左右移动:w /root/a.txt #vim 编辑完文本文件后保存到/root/a.txt文件里:!ifconfig ens33 #:!可以执行shell命令/x #查找x:set nohlsearch #取消高亮显示vim /etc/vimrc #设置vim的风格set nu #最后一行添加v #可视字符模式V #可视行模式ctrl + v #可视块模式(配合I和d,双击esc)
useradd wilson #添加用户id wilson #查看wilson用户tail -10 /etc/passwdtail -10 /etc/shadowpasswd wilson #修改密码useradd #删除用户userdel -r #删除用户及家目录usermod #修改用户chage #修改用户的生命周期groupadd #用户组的创建groupdel #删除用户组visudovim /etc/passwd用户名:是否需要密码验证:uid:gid::家目录:用户登录的命令解释器vim /etc/shadow用户名:用户密码:vim /etc/group组名:是否需要密码验证:gid:其他组
nginx reverse proxy in Kubernetes
Dynamic reverse proxy using nginx in Kubernetes 1. create a configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: confnginx data: nginx.conf: | user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] $request ' '$status $body_bytes_sent $http_referer ' '$http_user_agent $http_x_forwarded_for'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; server { listen 80; server_name ~^(?<subdomain>.*?)\.; resolver kube-dns.
linux awk命令统计行数和列数
1、测试数据
[root@centos7 test4]# ls test.txt [root@centos7 test4]# cat test.txt d j k j x m y e s g j i x v b d z c e t 2、统计行数和列数
[root@centos7 test4]# ls test.txt [root@centos7 test4]# cat test.txt d j k j x m y e s g j i x v b d z c e t [root@centos7 test4]# awk '{i++} END {print FILENAME, i, NF}' test.txt ## 5行4列 test.
linux中输出匹配行的行号
1、测试数据
[root@centos7 test4]# ls test.txt [root@centos7 test4]# cat test.txt e f j d i x a d g c F w 2、grep 实现
[root@centos7 test4]# ls test.txt [root@centos7 test4]# cat test.txt e f j d i x a d g c F w [root@centos7 test4]# grep -n d test.txt ## 输出匹配d的行号 2:d i x 3:a d g 3、sed实现
[root@centos7 test4]# ls test.txt [root@centos7 test4]# cat test.txt e f j d i x a d g c F w [root@centos7 test4]# sed -n '/d/=' test.
MySQL日期获取:本月第一天、本月最后一天、上月
interval的说明: 1、当函数使用时,即interval(),为比较函数,如:interval(10,1,3,5,7); 结果为4;
原理:10为被比较数,后面1,3,5,7为比较数,将后面四个依次与10比较,看后面数字组有多少个少于10,则返回其个数。前提是后面数字组为从小到大排列,否则返回结果0。
2、当关键词使用时,表示为设置时间间隔,常用在date_add()与date_sub()函数里,如:interval 1 day ,解释为将时间间隔设置为1天。
本月第一天 select date_add(curdate(), interval - day(curdate()) + 1 day); 本月最后一天 select last_day(curdate()); 上月第一天 select date_add(curdate()-day(curdate())+1,interval -1 month); 上月最后一天 select last_day(date_sub(now(),interval 1 month)); 下月第一天 select date_add(curdate()-day(curdate())+1,interval 1 month); 下月最后一天 select last_day(date_sub(now(),interval -1 month)); 本月天数 select day(last_day(curdate())); 上月今天的当前日期 select date_sub(curdate(), interval 1 month); 上月今天的当前时间(时间戳) select unix_timestamp(date_sub(now(),interval 1 month)); 获取当前时间与上个月之间的天数 select datediff(curdate(), date_sub(curdate(), interval 1 month));
内存泄漏
可达性分析算法来判断对象是否是不再使用的对象,本质都是判断一个对象是否还被引用。那么对于这种情况下,由于代码的实现不同就会出现很多种内存泄漏问题 主要原因:内核以为此对象还在引用中,无法回收,造成内存泄漏 只有对象不会再被程序用到了,但是GC又不能回收它们的情况,才叫内存泄漏。 内存泄漏和内存溢出的关系:内存泄漏的增多,最终会导致内存溢出。 内存泄漏类别
经常发生:发生内存泄露的代码会被多次执行,每次执行,泄露一块内存; 偶然发生:在某些特定情况下才会发生; 一次性:发生内存泄露的方法只会执行一次; 隐式泄漏:一直占着内存不释放,直到执行结束;严格的说这个不算内存泄漏,因为最终释放掉了,但是如果执行时间特别长,也可能会导致内存耗尽; python内存泄漏: 使用全局的 list、 dict 或其它容器,不停的往这些容器中插入对象,而忘记了在使用完之后进行删除回收 引用循环”,并且被循环引用的对象定义了__del__方法,就会发生内存泄露。 mysql-python的连接 mysql-python会设定use_unicode=True。结果是mysql-python会利用python自己的 codec模块去做字符解码工作,但实际中发现mysql库gbk编码字符集比python的gbk编码集大。一些在mysql里可以存储的字符,拿 python的codec去解析就会抛错。更严重的问题是,在mysql-python1.2.3之前,use_unicode=True即让 mysql-python解码这块存在内存泄露的bug。解码出来所有数据库字符串经过mysql-python出来都是unicode object,要输出到文件需要再次编码。
图文详细过程Linux 使用yum安装telnet-server、telnet、xinetd以及telnet本机ip
布置的Linux作业里面有个配置yum和安装telnet和尝试命令:telnet 127.0.0.1,并记录结果,写作业中间一直报错,搞了五六个小时才完成。分享一下安装telnet过程。
虚拟机VMware16
光盘 CentOS 7
阿里镜像:阿里云开源镜像站资源目录
下载DVD-2009.iso就行
yum配置 ,参考这位大佬文章http://t.csdn.cn/EVvwB ,我也是看这篇文章配置yum的,一定要把yum配置好,要不然后面就出错!
先进入root模式,输入su root
一、查看telnet-server、telnet是否安装 rpm -qa telnet-server rpm -qa telnet 二、等2,3秒没有输出telnet的版本,什么都没有输出,表示未安装 三、查看telnet的安装包 yum list | grep telnet 红色即为安装包,注意后面的 .x86_64
四、开始安装 yum install -y telnet-server.x86_64 yum install -y telnet.x86_64 #-y 和 install位置不一样,上面的不行换下面(#是注释,输入时去掉) #yum install -y telnet-server.x86_64 #yum install -y telnet.x86_64 安装这一步有可能会报错,检查yum配置,光盘挂载位置是否正确;/etc/yum.repos.d/CentOS-Media.repo里面的baseurl位置是否正确 、enabled和gpgcheck的01是否正确;网络是否链接;
实在不行就换光盘吧,我是换了虚拟机,VirtualBox报了错误实在解决不了,就换成VMware,我在VirtualBox里面用的不是阿里的centos7镜像,VMware用的是阿里的镜像,有可能是镜像问题,也可能是虚拟机问题
安装成功则继续,失败则先解决问题
五、检查xinetd是否开启 service xinetd restart 显示红色区域提示,则表示没有安装
六、查看xinetd安装包 yum list | grep xinetd 安装 yum install -y xinetd.
从 Yum 更新中排除特定/某些包的三种方法
方法 1:手动或临时用 yum 命令排除包 要排除单个包:
# yum update --exclude=kernel 或者 # yum update -x 'kernel' 要排除多个包。以下命令将更新除 kernel 和 php 之外的所有软件包。
# yum update --exclude=kernel* --exclude=php* 或者 # yum update --exclude httpd,php 方法 2:在 yum 命令中永久排除软件包 这是永久性方法
# vi /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=3 exclude=kernel* php*