完美

[学习|工作|博客|交流平台|完美起航]

作者头像zyw3272017.11.25 17:58 

linux用户登录记录日志和相关查看命令汇总

Linux用户登录信息放在三个文件中:1  /var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间;2  /var/log/wtmp:记录当前正在登录和历史登录系统的用户信息,默认由last命令查看;3  /var/log/btmp:记录失败的登录尝试信息,默认由lastb命令查看。这三个文件都是二进制数据文件,并且三个文件结构完全相同,是由/usr/include/bits/utmp.h文件定义了这三个文件的结构体。默认情况下文件的日志信息会通过logrotate日志管理工具定期清理。logrotate的配置文件是/etc/logrotate.conf,此处是logrotate的缺省设置,通常不需要对它进行修改。日志文件的轮循压缩等设置存放在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下,它会覆盖缺省设置。如果不想记录相关信息,则可以直接将相关文件删除即可。如果系统不存在该文件,则需要在此路径touch一个文件就可以继续记录相关信息了。此外:如果想禁用who命令,则只需要将utmp的可读权限去掉就行,这样非root用户就不能用此命令了;如果是btmp文件,手工创建的话注意权限必须为600,否则不能正确写入信息。# 2 相关命令介绍好了,下面开始介绍查看这三个日志文件的命令了。分别是lastlog、last、lastb、ac、who、w、users、utmpdump。其中last、lastb、who、utmpdump可以通过指定参数而查看三个中的任意一个文件。## 2.1 lastlog:列出所有用户最近登录的信息,或者指定用户的最近登录信息。lastlog引用的是/var/log/lastlog文件中的信息,包括login-name、port、last login timelzx-clone1:/var/log#lastlog UsernamePortLatest rootpts/1WedOct1914:37:46+08002016 bin**Neverloggedin** daemon**Neverloggedin** gdm**Neverloggedin** admin**Neverloggedin** lzxpts/3WedOct1915:15:24+08002016## 2.2 last列出当前和曾经登入系统的用户信息,它默认读取的是/var/log/wtmp文件的信息。输出的内容包括:用户名、终端位置、登录源信息、开始时间、结束时间、持续时间。注意最后一行输出的是wtmp文件起始记录的时间。当然也可以通过last -f参数指定读取文件,可以是/var/log/btmp、/var/run/utmp[root@CLMUGR-APP-D-01log]#last rootpts/010.200.108.92TueOct1815:04stillloggedin rootpts/110.200.108.92WedOct1217:02stillloggedin rootpts/010.200.108.92WedOct1209:20-16:58(07:38) rootpts/010.200.108.92SatOct810:40-14:45(04:05) rootpts/010.200.108.92WedAug3110:52-08:

linux 1251 3

作者头像zyw3272017.11.25 17:46 

Linux强制踢出用户命令

一、输入w命令查看已登录用户信息[root@KW_S01_192.168.1.106_A ~]# w19:22:31 up 2:11, 3 users, load average: 0.00, 0.00, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/0 192.168.1.178 18:41 0.00s 0.16s 0.01s wroot pts/1 192.168.1.178 19:22 4.00s 0.14s 0.05s ssh localhostroot pts/2 localhost.locald 19:22 4.00s 0.07s 0.07s -bash二、使用命令pkill -kill -t 用户tty[root@KW_S01_192.168.1.106_A ~]# pkill -kill -t pts/2三、验证操作是否成功[root@KW_S01_192.168.1.106_A ~]# w19:24:25 up 2:12, 2 users, load average: 0.00, 0.00, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/0 192.168.1.178 18:41 0.00s 0.18s 0.02s wroot pts/1 192.168.1.178 19:22 1:58 0.09s 0.09s -bash登陆用户信息说明:USER:显示登陆用户帐号名。用户重复登陆,该帐号也会重复出现。TTY:用户登陆所用的终端。FROM:显示用户在何处登陆系统。LOGIN@:是LOGIN AT的意思,表示登陆进入系统的时间。IDLE:用户空闲时间,从用户上一次任务结束后,开会记时。JCPU:一终端代号来区分,表示在摸段时间内,所有与该终端相关的进程任务所耗费的CPU时间。PCPU:指WHAT域的任务执行后耗费的CPU时间。WHAT:表示当前执行的任务。

linux 1223 1

作者头像zyw3272017.11.25 17:37 

修改ssh服务的默认端口

1、查看当前服务端口 一般ssh服务的默认端口为22端口,查看监听的端口用netstat,如下:[root@ansiblemoniter ~]# netstat -tnlp |grep sshtcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 9085/sshdtcp 0 0 :::22 :::* LISTEN 9085/sshd2、修改默认端口2.1 修改配置文件 利用修改配置文件的方法来修改ssh服务的默认端口,ssh配置文件路径如下:[root@ansiblemoniter ~]# ls -l /etc/ssh/sshd_config-rw------- 1 root root 3883 Dec 30 02:29 /etc/ssh/sshd_config 未修改之前如下: 修改之后如下: 在开始进行修改之前,开放两个端口,一个是默认的22端口,一个是需要修改的端口,防止修改端口失败,需要进机房进行操作2.2 重启ssh服务 重启ssh服务,使修改后的配置文件生效2.3 查看监听端口 查看监听端口如上所示,可以看到22端口和5309端口都进行了监听2.4 测试修改端口ssh连接 在修改完成之后,必须进行测试连接,如果测试通过,那么就将22端口禁用,如果测试不能通过,那么必须检查防火墙,selinux问题2.5 禁用22端口 修改配置文件/etc/ssh/sshd_config文件,将Port 22去掉即可,如下所示: 重启ssh服务: 查看监听端口:2.6 修改/etc/services文件未修改之前的配置文件如下:修改之后的配置文件如下: 修改此文件的目的主要是便于以后端口的查找,在/etc/services文件中,是标准端口配置文件,在有的服务启动的时候,对应的端口也是从此文件中查找,在使用这些端口的时候,最好是不重复,否则会导致有些服务无法启动。 你用xinet.d来启动服务时他就会在/etc/services找相应的端口来启动。

ssh 1122 1

作者头像zyw3272017.11.10 17:54 

微信二次分享开发

问题:android版本微信二次分享功能正常;但是ios版本微信二次分享不正常。微信web开发工具调试正常。ios版本微信真机调试alert打印,wx.ready回调函数和config配置都正常,最后分享不正常。ios二次分享时,分享链接不能为安全域名+端口,只能时安全域名(默认端口)但是操蛋的时android二次分享时,分享链接带端口号没问题,一切正常;

微信功能开发 1251 2

作者头像zyw4932017.11.07 17:16 

Materialize框架之modal弹框

html代码部分<!--href绑定模态id--> <aclass="waves-effectwaves-lightbtn"href="#modal1">模态</a> <!--此处id与上面a标签的href一致才能触发--> <divid="modal1"class="modal"> <divclass="modal-content"> <h4>模态标题</h4> <p>一堆文本</p> </div> <divclass="modal-footer"> <ahref="#!"class="modal-actionmodal-closewaves-effectwaves-greenbtn-flat">同意</a> </div> </div> <!--href绑定模态id--> <aclass="modal-triggerwaves-effectwaves-lightbtn"href="#modal2">固定底部的模态</a> <!--此处id与上面a标签的href一致才能触发--> <divid="modal2"class="modalmodal-fixed-footer"> <divclass="modal-content"> <h4>模态标题</h4> <p>一堆文本</p> <buttonclass="btnclose">关闭2号模态框</button> </div> <divclass="modal-footer"> <ahref="#!"class="modal-actionmodal-closewaves-effectwaves-greenbtn-flat">同意</a> </div> </div> <!--href绑定模态id--> <aclass="waves-effectwaves-lightbtn"href="#modal3">底部样式的模态</a> <!--此处id与上面a标签的href一致才能触发--> <divid="modal3"class="modalbottom-sheet"> <divclass="modal-content"> <h4>模态标题</h4> <p>一堆文本</p> </div> <divclass="

Materialize 2464 4

作者头像SmartZ2017.11.07 14:37 

Materialize框架之轮播组件的使用

Materialize轮播组件的使用,html代码如下<divclass="slider"> <ulclass="slides"> <li> <imgsrc="http://lorempixel.com/580/250/nature/1"><!--randomimage--> <divclass="captioncenter-align"> <h3>这是一个巨大的标签行</h3> <h5class="lightgrey-texttext-lighten-3">这是我们的小口号。</h5> </div> </li> <li> <imgsrc="http://lorempixel.com/580/250/nature/2"><!--randomimage--> <divclass="captionleft-align"> <h3>左对齐标题</h3> <h5class="lightgrey-texttext-lighten-3">这是我们的小口号。</h5> </div> </li> <li> <imgsrc="http://lorempixel.com/580/250/nature/3"><!--randomimage--> <divclass="captionright-align"> <h3>右对齐标题</h3> <h5class="lightgrey-texttext-lighten-3">这是我们的小口号。</h5> </div> </li> <li> <imgsrc="http://lorempixel.com/580/250/nature/4"><!--randomimage--> <divclass="captioncenter-align"> <h3>这是一个巨大的标签行</h3> <h5class="lightgrey-texttext-lighten-3">这是我们的小口号。</h5> </div> </li> </ul> </div>js代码如下:$(document).ready(function(){ $('.slider').slider({ full_width:true, interval:2000,//轮播间隔 transition:1000,//效果转换时长 height:500,//轮播高度 indicators:true//是否显示小圆点 }); });效果图:源码:code.zip

Materialize 4930 5

作者头像zyw3272017.11.06 14:04 

Materialize css本地化(包括图标与字体)

目录结构如下:materializecss-font.css:@CHARSET"UTF-8"; /*latin-ext*/ @font-face{ font-family:'Inconsolata'; font-style:normal; font-weight:400; src:local('Inconsolata'),url(/fonts/roboto/BjAYBlHtW3CJxDcjzrnZCCYE0-AqJ3nfInTTiDXDjU4.woff2)format('woff2'); unicode-range:U+0100-024F,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF; } /*latin*/ @font-face{ font-family:'Inconsolata'; font-style:normal; font-weight:400; src:local('Inconsolata'),url(/fonts/roboto/BjAYBlHtW3CJxDcjzrnZCI4P5ICox8Kq3LLUNMylGO4.woff2)format('woff2'); unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2212,U+2215,U+E0FF,U+EFFD,U+F000; } /*fallback*/ @font-face{ font-family:'MaterialIcons'; font-style:normal; font-weight:400; src:local('MaterialIcons'),local('MaterialIcons-Regular'),url(/fonts/roboto/2fcrYFNaTjcS6g4U3t-Y5ZjZjT5FdEJ140U2DJYC3mY.woff2)format('woff2'); } .material-icons{ font-family:'MaterialIcons'; font-weight:normal; font-style:normal; font-size:24px; line-height:1; letter-spacing:normal; text-transform:none; display:inline-block; white-space:nowrap; word-wrap:normal; direction:ltr; -webkit-font-feature-settings:'liga'; -webkit-font-smoothing:antialiased; }以上为主要代码,代码文件materialize_图标css(放于根目录).zip

Materialize 3545 4

作者头像zyw3272017.10.20 16:46 

前端实现图片上传预览

代码如下<!DOCTYPEhtml> <html> <head> <title>图片上传预览</title> <metacharset="utf-8"> <scripttype="text/javascript"src='/lib/jquery/dist/jquery-1.9.1.min.js'></script> </head> <body> <scripttype="text/javascript"> $(function(){ $("#file_upload").change(function(){ var$file=$(this); varfileObj=$file[0]; varwindowURL=window.URL||window.webkitURL; vardataURL; var$img=$("#preview"); if(fileObj&&fileObj.files&&fileObj.files[0]){ dataURL=windowURL.createObjectURL(fileObj.files[0]); $img.attr('src',dataURL); }else{ dataURL=$file.val(); varimgObj=document.getElementById("preview"); //两个坑: //1、在设置filter属性时,元素必须已经存在在DOM树中,动态创建的Node,也需要在设置属性前加入到DOM中,先设置属性在加入,无效; //2、src属性需要像下面的方式添加,上面的两种方式添加,无效; imgObj.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)"; imgObj.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src=dataURL; } }); }); </script> <inputid="file_upload"type="file"/> <divclass="image_container"> <imgid="preview"width="60"height="60"> </div> </body> </html>

上传预览 1460 1

作者头像zyw3272017.10.19 15:17 

nodejs递归创建文件夹

创建mkdir.jsconstfs=require('fs'); constpath=require('path'); letmkdir=function(filePath){ if(fs.existsSync(filePath)){ returntrue; } if(!fs.existsSync(path.dirname(filePath))){ mkdir(path.dirname(filePath)); } fs.mkdirSync(filePath); }; module.exports=mkdir;2.创建test.js,引入mkdir.jsconstmkdir=require('./mkdir'); mkdir('./1/2/3/4/5/6/7/8'); //执行测试 nodetest.js结果如下:

node 2483 3

作者头像zyw3272017.10.16 14:21 

php中单双引号的区别

单引号在php中单引号里面的都是字符串双引号双引号与单引号的区别在于双引号里面可以引用变量。例如:$a='abc' var_dump('$adefg');//输出为string(6)"$adefg" var_dump("$adefg");//输出为string(8)"abcdefg"

PHP 1301 1

a6bfb44cbd5549740eb36647f36ef83a