[实践OK] unzip 解压文件到指定的目录-d,zip和unzip是两个不同的rpm包。
Unix/LinuxC技术 jackxiang 2017-7-12 11:24
背景:在打包时,需要对源文件是ZIP格式的,给unzip解压文件到指定的打包目录$RPM_BUILD_DIR,查了下,也就是得用到unzip的-d参数。
yum install zip -y
yum install unzip -y
来源 :http://blog.csdn.net/ljchlx/article/details/8028672
yum install zip -y
yum install unzip -y
来源 :http://blog.csdn.net/ljchlx/article/details/8028672
[实践OK]LINUX TAR 解压文件时指定文件名~tar解压到指定目录并且重名原始目录名,在被解压的包里面去掉一层目录。
Unix/LinuxC技术 jackxiang 2017-7-12 10:31
tar -xzvf mysql-5.6.15.tar.gz -C ./mysql-5.6.15 --strip-components 1
实践:
man tar
tar --strip-components = NUMBER
...skipping...
--strip-components=NUMBER
strip NUMBER leading components from file names on extraction
tar -zxvf codes.doc.qr.cntv.net.tar.gz -C abc/. --strip-components 1
打包来自:codes.doc.qr.cntv.net codes.doc.qr.cntv.net.tar.gz
再看解压后的目录无codes.doc.qr.cntv.net外层目录了:
tree -L 1 abc/
abc/
├── Application
├── index.php
├── netchkrs
├── Public
├── showdoc.sql
├── test.php
├── Text
└── ThinkPHP
实践来自:http://www.cnblogs.com/zxiaozhou/p/6068867.html
实践:
man tar
tar --strip-components = NUMBER
...skipping...
--strip-components=NUMBER
strip NUMBER leading components from file names on extraction
tar -zxvf codes.doc.qr.cntv.net.tar.gz -C abc/. --strip-components 1
打包来自:codes.doc.qr.cntv.net codes.doc.qr.cntv.net.tar.gz
再看解压后的目录无codes.doc.qr.cntv.net外层目录了:
tree -L 1 abc/
abc/
├── Application
├── index.php
├── netchkrs
├── Public
├── showdoc.sql
├── test.php
├── Text
└── ThinkPHP
实践来自:http://www.cnblogs.com/zxiaozhou/p/6068867.html
在secureCRT使用vim,alt键映射(alt+b,alt+f在shell里是前后一个单词)都被secureCRT占用了,能屏蔽吗?
Unix/LinuxC技术 jackxiang 2017-7-12 09:45
背景:在secureCRT使用vim,alt键映射都被secureCRT占用了,导致设置alt开头的快捷键都不能用,这很不方便 有办法解决这一问题吗?
option -> session options -> termianl -> emulation -> use alt as meta key
vim依然无法正确识别到alt键。
解决了,设置xterm方式就好了。
问题描述:SecureCRT通过ssh登陆一台linux,alt键映射(alt+b,alt+f在shell里是前后一个单词)都被secureCRT占用了。
解决办法 secureCRT -> 选项 -> 会话选项 -> 仿真 -> 映射键; 勾上backspace发送delete。
secureCRT
-> 选项 -> 会话选项 -> 仿真->emacs;勾上use alt as meta key
SecureCRT最常用的的:alt+b打开一个目录(下一堆IP)和一个IP的,就没法用了,但是提高了操作Shell出现错误的速度。这个打开IP的操作并不常用。
但是那个切换Alt+1,Alt+2...,切换标签的不好使了,艹。后来放弃为了实现alt+b,alt+f在shell里是前后一个单词的理想了,有Ctrl+f,Ctrl+b一个一个跳也成,姑且算是习惯了,得了。
From:https://www.zhihu.com/question/21608031
快捷方式之 securecrt/SecureCRT的delete键向后删除键变为Backspace键之解决办法:
http://jackxiang.com/post/9342/
option -> session options -> termianl -> emulation -> use alt as meta key
vim依然无法正确识别到alt键。
解决了,设置xterm方式就好了。
问题描述:SecureCRT通过ssh登陆一台linux,alt键映射(alt+b,alt+f在shell里是前后一个单词)都被secureCRT占用了。
解决办法 secureCRT -> 选项 -> 会话选项 -> 仿真 -> 映射键; 勾上backspace发送delete。
secureCRT
-> 选项 -> 会话选项 -> 仿真->emacs;勾上use alt as meta key
SecureCRT最常用的的:alt+b打开一个目录(下一堆IP)和一个IP的,就没法用了,但是提高了操作Shell出现错误的速度。这个打开IP的操作并不常用。
但是那个切换Alt+1,Alt+2...,切换标签的不好使了,艹。后来放弃为了实现alt+b,alt+f在shell里是前后一个单词的理想了,有Ctrl+f,Ctrl+b一个一个跳也成,姑且算是习惯了,得了。
From:https://www.zhihu.com/question/21608031
快捷方式之 securecrt/SecureCRT的delete键向后删除键变为Backspace键之解决办法:
http://jackxiang.com/post/9342/
Linux下使cp命令不提示覆盖文件,cp的代表什么意思呢
Unix/LinuxC技术 jackxiang 2017-7-11 17:17
实践如下:
\cp -r * ../gpac/extra_lib
查找下原因:
实际上cp默认是会覆盖的,出现你这种情况是因为cp被alias成cp -i了,可以通过alias命令查看。
\cp则是告诉shell不要去查alias,直接执行原本的cp
目前,我得知有四种方法:
1.在调用cp的时候加入绝对路径(可通过whereis cp命令得到),如
/bin/cp -f file dir
2.通过直接执行下面的语句调用系统原始的命令:
\cp -f file dir
3.在~/.bashrc里面注释掉 Alias cp='cp -i'
4.unalias cp ,然后再使用cp,但使用后还原alias cp='cp -i'
来自:http://www.oschina.net/question/1588291_166511
\cp -r * ../gpac/extra_lib
查找下原因:
实际上cp默认是会覆盖的,出现你这种情况是因为cp被alias成cp -i了,可以通过alias命令查看。
\cp则是告诉shell不要去查alias,直接执行原本的cp
目前,我得知有四种方法:
1.在调用cp的时候加入绝对路径(可通过whereis cp命令得到),如
/bin/cp -f file dir
2.通过直接执行下面的语句调用系统原始的命令:
\cp -f file dir
3.在~/.bashrc里面注释掉 Alias cp='cp -i'
4.unalias cp ,然后再使用cp,但使用后还原alias cp='cp -i'
来自:http://www.oschina.net/question/1588291_166511
Linux下编译源代码时注意一下加上那个Include和Lib路径。
Unix/LinuxC技术 jackxiang 2017-7-11 14:35
Mplayer Error: yasm not found, use --yasm='' if you really want to compile without
Linux 下进入含空格的目录(以及文件夹名开头为`(`)
Unix/LinuxC技术 jackxiang 2017-7-9 21:10
[root@zhang ~]# cd my document
cd 一个含空格的目录,会被视为俩个目录,而有优先进入第一个目录(如果两个目录都存在的话):
使用单引号
[root@zhang ]# cd 'my document'
对空格转义
[root@zhang ~]# cd my\ document
在第一个单词之后按下 tab 键也是一样的处理方法,即对空格进行转义;
使用 * 进行匹配
[root@zhang ~]# cd my*document
对于文件夹名开头为(的情况
同样,要么使用单引号,要么使用\,进行转义;
来自:http://blog.csdn.net/lanchunhui/article/details/51211165
参考:http://www.cnblogs.com/wjyHIT2011/p/6801727.html
cd 一个含空格的目录,会被视为俩个目录,而有优先进入第一个目录(如果两个目录都存在的话):
使用单引号
[root@zhang ]# cd 'my document'
对空格转义
[root@zhang ~]# cd my\ document
在第一个单词之后按下 tab 键也是一样的处理方法,即对空格进行转义;
使用 * 进行匹配
[root@zhang ~]# cd my*document
对于文件夹名开头为(的情况
同样,要么使用单引号,要么使用\,进行转义;
来自:http://blog.csdn.net/lanchunhui/article/details/51211165
参考:http://www.cnblogs.com/wjyHIT2011/p/6801727.html
<hash命令:显示、添加或清除哈希表> make make install make distclean hash -r
Unix/LinuxC技术 jackxiang 2017-7-8 23:42
说明:linux系统下会有一个hash表,当你刚开机时这个hash表为空,每当你执行过一条命令时,hash表会记录下这条命令的路径,就相当于缓存一样。第一次执行命令shell解释器默认的会从PATH路径下寻找该命令的路径,当你第二次使用该命令时,shell解释器首先会查看hash表,没有该命令才会去PATH路径下寻找。
hash表的作用:大大提高命令的调用速率。
hash的参数:
[root@redhat ~]# hash //输入hash或hash -l 可以查看hash表的内容,我刚开机所以为空
hash: hash table empty
[root@redhat ~]# hash -l
hash: hash table empty
当我执行过2条命令后再看:
[root@redhat ~]# hash //hash表会记录下执行该命令的次数,以及命令的绝对路径
hits command
1 /bin/cat
1 /bin/ls
[root@redhat ~]# hash -l //加参数-l既可以看到hash表命令的路径,也可以看到它的名字,说不定会有别名哦
builtin hash -p /bin/cat cat
builtin hash -p /bin/ls ls
[root@redhat ~]# hash -p /bin/ls bb //添加hash表,可以看到我把ls命令重新写了一遍,改名为bb
[root@redhat ~]# bb //当我执行bb时就是执行ls命令
anaconda-ks.cfg icmp_echo_ignore_aly~ pub.key
dead.letter icmp_echo_ignore_alz~ rpmbuild
icmp_echo_ignore_all~ install.log RPM-GPG-KEY-useradd
icmp_echo_ignore_alw~ install.log.syslog RPM-GPG-KEY-westos
icmp_echo_ignore_alx~ passwd
[root@redhat ~]# hash -t ls //-t参数可以查看hash表中命令的路径,要是hash表中没有怎么办?
/bin/ls
[root@redhat ~]# hash -t df //我没使用过df,执行hash,就会提示找不到该命令
-bash: hash: df: not found
[root@redhat ~]# hash -r //清楚hash表,清楚的是全部的
[root@redhat ~]# hash -l
hash: hash table empty
[root@redhat ~]# hash -l
builtin hash -p /bin/cat cat
builtin hash -p /bin/ls ls
[root@redhat ~]# hash -d cat //清楚其中的某一条
[root@redhat ~]# hash -l
builtin hash -p /bin/ls ls
From:http://www.cnblogs.com/linux-super-meng/p/3788739.html
hash表的作用:大大提高命令的调用速率。
hash的参数:
[root@redhat ~]# hash //输入hash或hash -l 可以查看hash表的内容,我刚开机所以为空
hash: hash table empty
[root@redhat ~]# hash -l
hash: hash table empty
当我执行过2条命令后再看:
[root@redhat ~]# hash //hash表会记录下执行该命令的次数,以及命令的绝对路径
hits command
1 /bin/cat
1 /bin/ls
[root@redhat ~]# hash -l //加参数-l既可以看到hash表命令的路径,也可以看到它的名字,说不定会有别名哦
builtin hash -p /bin/cat cat
builtin hash -p /bin/ls ls
[root@redhat ~]# hash -p /bin/ls bb //添加hash表,可以看到我把ls命令重新写了一遍,改名为bb
[root@redhat ~]# bb //当我执行bb时就是执行ls命令
anaconda-ks.cfg icmp_echo_ignore_aly~ pub.key
dead.letter icmp_echo_ignore_alz~ rpmbuild
icmp_echo_ignore_all~ install.log RPM-GPG-KEY-useradd
icmp_echo_ignore_alw~ install.log.syslog RPM-GPG-KEY-westos
icmp_echo_ignore_alx~ passwd
[root@redhat ~]# hash -t ls //-t参数可以查看hash表中命令的路径,要是hash表中没有怎么办?
/bin/ls
[root@redhat ~]# hash -t df //我没使用过df,执行hash,就会提示找不到该命令
-bash: hash: df: not found
[root@redhat ~]# hash -r //清楚hash表,清楚的是全部的
[root@redhat ~]# hash -l
hash: hash table empty
[root@redhat ~]# hash -l
builtin hash -p /bin/cat cat
builtin hash -p /bin/ls ls
[root@redhat ~]# hash -d cat //清楚其中的某一条
[root@redhat ~]# hash -l
builtin hash -p /bin/ls ls
From:http://www.cnblogs.com/linux-super-meng/p/3788739.html
securecrt 在vt100/ANSI模式下会delete键和backspace键功能一样,都是删除前面的内容,要调整向后删除需要设置下:会话选项--终端--仿真--终端里选择linux模式或xterm即可。
From:http://soige.blog.51cto.com/512568/1323479/
相关之在secureCRT使用vim,alt键映射(alt+b,alt+f在shell里是前后一个单词)都被secureCRT占用了,能屏蔽吗?
http://jackxiang.com/post/9354/
From:http://soige.blog.51cto.com/512568/1323479/
相关之在secureCRT使用vim,alt键映射(alt+b,alt+f在shell里是前后一个单词)都被secureCRT占用了,能屏蔽吗?
http://jackxiang.com/post/9354/
[实践OK]Linux下查看某一个程序或进程所使用的内存和所有进程前十名内存占用的方法,,及其查看Linux下某个进程占用内存和cpu的多少。
Unix/LinuxC技术 jackxiang 2017-7-5 16:46
在 Linux 上进行开发和运营维护的时候,免不了要查看某一个程序所占用内存的情况。有很多个命令都可以达到我们的需求,这里给大家列举几个:
一)直接看某个进程的内存情况:
看下Nginx:
cat /proc/2821/status|grep VmRSS
VmRSS: 8776 kB
来自:http://www.jb51.net/LINUXjishu/66604.html
二)整体从系统层面看内存和cpu占用:
查看某个进程占用内存和cpu的多少:
找出消耗内存最多的前10名进程
找出使用CPU最多的前10名进程
# ps -auxf | sort -nr -k 3 | head -10
来自:http://blog.chinaunix.net/uid-20492804-id-265809.html
一)直接看某个进程的内存情况:
看下Nginx:
cat /proc/2821/status|grep VmRSS
VmRSS: 8776 kB
来自:http://www.jb51.net/LINUXjishu/66604.html
二)整体从系统层面看内存和cpu占用:
查看某个进程占用内存和cpu的多少:
找出消耗内存最多的前10名进程
# ps -auxf | sort -nr -k 4 | head -10
找出使用CPU最多的前10名进程
# ps -auxf | sort -nr -k 3 | head -10
来自:http://blog.chinaunix.net/uid-20492804-id-265809.html
[实践OK]bad substitution的原因是用了sh不是bash导致的,Dockerfile批量替换里面的内容,cp filename{,bak} , find /var/www/ -name file -exec cp {}{,.bak} ; 递归备份文件,大括号扩展:cp和mv搭配{,}在shell作用,cp 快速备份 bash{} 扩展。
Unix/LinuxC技术 jackxiang 2017-7-2 19:32
去掉没有用的扩展名:
mv /home/pi/.config/autostart/my.desktop.bak /home/pi/.config/autostart/my.desktop的shell花括号扩展简写:
拷贝新非后追加的文件名:
用Sed进行Dockerfile批量替换里面的内容:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
-n, --quiet, --silent
这样感觉没有直接用shell 替换来得方便好写,如下:
和Sed不一样,没有最后一个斜杠:
${string/needreplace/placedstr}
$ a=abcdefg123
$ a=${a/123/456}
$ echo $a
abcdefg456
注意:不能是花括号里面有$,会报错:
bad substitution的原因是用了sh不是bash导致的:
在文件头里加上:
#!/bin/bash 替掉:#!/bin/sh
sh -x test.sh第3行总出现bad substitution提示信息,这与linux shell使用的是/bin/sh,还是/bin/bash有关系。我的脚本中指定使用的是/bin/bash shell,但是我在调试的时候使用的是sh shell,因此调试时导致错误提示信息。
原文链接:https://blog.csdn.net/u013516897/article/details/77965333
实战:
对docker tag 进行实践:
来自:https://jackxiang.com/post/9922/
先是打印出内容,然后再静默替换,然后再不区分大小写输入替换后的那行:echo filename|grep -i from;
xargs 的使用:
echo nginx-1.14.2/Dockerfile|xargs grep -i from
FROM registry.qr.xxxx.net/irdc_irdcops/alpine:3.10.0
要查找一个指定后缀文件里有没有一些指定字符串,显示出文件和行号等,还是用 xargs方便,如下:
上面一句顶exec两句,如下:
零.批量替换文件:
find . -type f -exec sed -n 's#S:"Username"=#S:"Username"=xiangdong#p' {} \;
一.
find /var/www/ -name file -exec cp {}{,.bak} \; 递归备份文件
1).
cp filename{,.bak}
quickly backup or copy a file with bash
2).
目录会自动omit删除掉; 目录不会复制;
来自:https://www.douban.com/note/422847745/
二.
cp filename{,.bak}
这个命令是用来把filename备份成filename.bak的
等同于命令
cp filename filename.bak
这里利用的是bash的brace expansion(大括号扩展)功能
按照bash手册(man bash)所述
bash支持{a,b,c}这样的扩展
比如a{d,c,b}e会被扩展成ade ace abe
所以
filename{,.bak}被扩展成filename filename.bak也就好理解了
同理可得:
tar cvfz leo{-20170202.tgz,}=tar cvfz leo-20170202.tgz leo
来自:http://leomars.blog.51cto.com/683246/1894566
三.
cp filename{,.bak} //注意花括号边并没有空格,否则就不 是扩展了,变成拷贝为{,.bak}文件了。
这个命令是用来把filename备份成filename.bak,等同于命令
cp filename filename.bak
这里利用的是bash的brace expansion(大括号扩展)功能,
按照bash手册(man bash)所述:
bash支持{a,b,c}这样的扩展,比如a{d,c,b}e 会被扩展成ade ace abe
所以
filename{,.bak}被扩展成filename filename.bak也就好理解了
原文http://www.haw-haw.org/node/1507
mv /home/pi/.config/autostart/my.desktop.bak /home/pi/.config/autostart/my.desktop的shell花括号扩展简写:
拷贝新非后追加的文件名:
用Sed进行Dockerfile批量替换里面的内容:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
-n, --quiet, --silent
这样感觉没有直接用shell 替换来得方便好写,如下:
和Sed不一样,没有最后一个斜杠:
${string/needreplace/placedstr}
$ a=abcdefg123
$ a=${a/123/456}
$ echo $a
abcdefg456
注意:不能是花括号里面有$,会报错:
bad substitution的原因是用了sh不是bash导致的:
在文件头里加上:
#!/bin/bash 替掉:#!/bin/sh
sh -x test.sh第3行总出现bad substitution提示信息,这与linux shell使用的是/bin/sh,还是/bin/bash有关系。我的脚本中指定使用的是/bin/bash shell,但是我在调试的时候使用的是sh shell,因此调试时导致错误提示信息。
原文链接:https://blog.csdn.net/u013516897/article/details/77965333
实战:
对docker tag 进行实践:
来自:https://jackxiang.com/post/9922/
先是打印出内容,然后再静默替换,然后再不区分大小写输入替换后的那行:echo filename|grep -i from;
xargs 的使用:
echo nginx-1.14.2/Dockerfile|xargs grep -i from
FROM registry.qr.xxxx.net/irdc_irdcops/alpine:3.10.0
要查找一个指定后缀文件里有没有一些指定字符串,显示出文件和行号等,还是用 xargs方便,如下:
上面一句顶exec两句,如下:
零.批量替换文件:
find . -type f -exec sed -n 's#S:"Username"=#S:"Username"=xiangdong#p' {} \;
一.
find /var/www/ -name file -exec cp {}{,.bak} \; 递归备份文件
1).
cp filename{,.bak}
quickly backup or copy a file with bash
2).
目录会自动omit删除掉; 目录不会复制;
来自:https://www.douban.com/note/422847745/
二.
cp filename{,.bak}
这个命令是用来把filename备份成filename.bak的
等同于命令
cp filename filename.bak
这里利用的是bash的brace expansion(大括号扩展)功能
按照bash手册(man bash)所述
bash支持{a,b,c}这样的扩展
比如a{d,c,b}e会被扩展成ade ace abe
所以
filename{,.bak}被扩展成filename filename.bak也就好理解了
同理可得:
tar cvfz leo{-20170202.tgz,}=tar cvfz leo-20170202.tgz leo
来自:http://leomars.blog.51cto.com/683246/1894566
三.
cp filename{,.bak} //注意花括号边并没有空格,否则就不 是扩展了,变成拷贝为{,.bak}文件了。
这个命令是用来把filename备份成filename.bak,等同于命令
cp filename filename.bak
这里利用的是bash的brace expansion(大括号扩展)功能,
按照bash手册(man bash)所述:
bash支持{a,b,c}这样的扩展,比如a{d,c,b}e 会被扩展成ade ace abe
所以
filename{,.bak}被扩展成filename filename.bak也就好理解了
原文http://www.haw-haw.org/node/1507
[实践OK]如何在 CentOS 7 中安装或升级最新的内核
Unix/LinuxC技术 jackxiang 2017-7-2 01:39
移步:https://jackxiang.com/post/8457/
====================================
[root@iz2ze0upl89i15wngnott5z tmp]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@iz2ze0upl89i15wngnott5z tmp]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Retrieving http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Preparing... ################################# [100%]
Updating / installing...
1:elrepo-release-7.0-2.el7.elrepo ################################# [100%]
[root@iz2ze0upl89i15wngnott5z tmp]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Loaded plugins: fastestmirror
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
elrepo-kernel | 2.9 kB 00:00:00
elrepo-kernel/primary_db | 1.7 MB 00:00:25
Loading mirror speeds from cached hostfile
* elrepo-kernel: ftp.ne.jp
Available Packages
kernel-lt.x86_64 4.4.75-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 4.4.75-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 4.4.75-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 4.4.75-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 4.4.75-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 4.4.75-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 4.4.75-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 4.11.8-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
perf.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
python-perf.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
[root@iz2ze0upl89i15wngnott5z tmp]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
[root@iz2ze0upl89i15wngnott5z tmp]# yum --enablerepo=elrepo-kernel install kernel-ml
Loaded plugins: fastestmirror
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
elrepo | 2.9 kB 00:00:00
elrepo/primary_db | 427 kB 00:00:04
Loading mirror speeds from cached hostfile
* elrepo: ftp.ne.jp
* elrepo-kernel: ftp.ne.jp
Resolving Dependencies
--> Running transaction check
---> Package kernel-ml.x86_64 0:4.11.8-1.el7.elrepo will be installed
--> Finished Dependency Resolution
Dependencies Resolved
========================================================================================================
Package Arch Version Repository Size
========================================================================================================
Installing:
kernel-ml x86_64 4.11.8-1.el7.elrepo elrepo-kernel 41 M
Transaction Summary
========================================================================================================
Install 1 Package
Total download size: 41 M
Installed size: 185 M
Is this ok [y/d/N]: y
Downloading packages:
kernel-ml-4.11.8-1.el7.elrepo.x86_64. 16% [==== ] 67 kB/s | 6.6 MB 00:08:46
vi /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DEFAULT=0
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet net.ifnames=0"
GRUB_DISABLE_RECOVERY="true"
[root@iz2ze0upl89i15wngnott5z tmp]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.11.8-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.11.8-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-514.26.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.26.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-514.6.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.6.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-3c6ff97c6fbe4598b53fd04e08937468
Found initrd image: /boot/initramfs-0-rescue-3c6ff97c6fbe4598b53fd04e08937468.img
done
====================================
[root@iz2ze0upl89i15wngnott5z tmp]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@iz2ze0upl89i15wngnott5z tmp]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Retrieving http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Preparing... ################################# [100%]
Updating / installing...
1:elrepo-release-7.0-2.el7.elrepo ################################# [100%]
[root@iz2ze0upl89i15wngnott5z tmp]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Loaded plugins: fastestmirror
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
elrepo-kernel | 2.9 kB 00:00:00
elrepo-kernel/primary_db | 1.7 MB 00:00:25
Loading mirror speeds from cached hostfile
* elrepo-kernel: ftp.ne.jp
Available Packages
kernel-lt.x86_64 4.4.75-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 4.4.75-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 4.4.75-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 4.4.75-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 4.4.75-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 4.4.75-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 4.4.75-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 4.11.8-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
perf.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
python-perf.x86_64 4.11.8-1.el7.elrepo elrepo-kernel
[root@iz2ze0upl89i15wngnott5z tmp]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
[root@iz2ze0upl89i15wngnott5z tmp]# yum --enablerepo=elrepo-kernel install kernel-ml
Loaded plugins: fastestmirror
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
elrepo | 2.9 kB 00:00:00
elrepo/primary_db | 427 kB 00:00:04
Loading mirror speeds from cached hostfile
* elrepo: ftp.ne.jp
* elrepo-kernel: ftp.ne.jp
Resolving Dependencies
--> Running transaction check
---> Package kernel-ml.x86_64 0:4.11.8-1.el7.elrepo will be installed
--> Finished Dependency Resolution
Dependencies Resolved
========================================================================================================
Package Arch Version Repository Size
========================================================================================================
Installing:
kernel-ml x86_64 4.11.8-1.el7.elrepo elrepo-kernel 41 M
Transaction Summary
========================================================================================================
Install 1 Package
Total download size: 41 M
Installed size: 185 M
Is this ok [y/d/N]: y
Downloading packages:
kernel-ml-4.11.8-1.el7.elrepo.x86_64. 16% [==== ] 67 kB/s | 6.6 MB 00:08:46
vi /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DEFAULT=0
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet net.ifnames=0"
GRUB_DISABLE_RECOVERY="true"
[root@iz2ze0upl89i15wngnott5z tmp]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.11.8-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.11.8-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-514.26.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.26.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-514.6.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.6.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-3c6ff97c6fbe4598b53fd04e08937468
Found initrd image: /boot/initramfs-0-rescue-3c6ff97c6fbe4598b53fd04e08937468.img
done
请CentOS 7用户尽快更新:重要Linux Kernel补丁发布
Unix/LinuxC技术 jackxiang 2017-7-2 01:21
基于Red Hat Enterprise Linux 7的自由发布源,CentOS 7分支继承了始终能获得最新内核安全更新的特性。今天,系统团队发布了一个非常重要的补丁,对近期发现的4个漏洞进行了及时修复,并推荐用户尽快安装补丁,升级至kernel-3.10.0-514.10.2.el7。
From:http://www.cnbeta.com/articles/soft/590259.htm
升级步骤:jackxiang.com/post/9319/
From:http://www.cnbeta.com/articles/soft/590259.htm
升级步骤:jackxiang.com/post/9319/
Ubuntu17.04安装微信教程 超简单的
Unix/LinuxC技术 jackxiang 2017-7-1 18:34
安装成功:
http://blog.csdn.net/ch593030323/article/details/53571807
http://blog.csdn.net/ch593030323/article/details/53571807
[实践OK]echo和ls --color=auto实现对查找的字符串上色,在linux下给grep命令添加颜色--color。
Unix/LinuxC技术 jackxiang 2017-6-29 23:49
echo $PATH | grep --color=auto 'go'
默认的ls是由"ls --color=auto"组成的,假如某个目录中的文件特别多,我不希望显示颜色(可以加快显示),那就需要指定单独的参数。
[root@localhost ~]# ls --color=never
[root@localhost ~]# ls --color=any
[root@localhost ~]# ls --color=always
来自:http://www.cnblogs.com/t-road/p/6830037.html
实践如下:
在Linux下给grep命令添加颜色
Java代码 复制代码 收藏代码
grep --color "test" test.json
[java] view plain copy print?
grep --color "test" test.json
自动给grep加颜色
Java代码 复制代码 收藏代码
vim ~/.bashrc
alias grep='grep --color'
source ~/.bashrc
[java] view plain copy print?
vim ~/.bashrc
alias grep='grep --color'
source ~/.bashrc
在管道中的其他程序也可以有颜色
这里用到grep的一个参数--color,color有三个值供选择:never、always、auto。always和auto的区别就是,always会在任何情况下都给匹配字段加上颜色标记,当通过管道或重定向时就会多出一些控制字符,结果会变成
export ^[[1;32m^[[KGREP^[[m^[[K_OPTIONS='--color=always'
export ^[[1;32m^[[KGREP^[[m^[[K_COLOR='1;32'
而auto则只在输出到终端时才加上颜色。
可以在.bashrc里加上
export GREP_OPTIONS='--color=auto'
来实现高亮匹配,具体用什么颜色,可以通过
export GREP_COLOR='a;b' #默认是1;31,即高亮的红色
来设置,其中:
a可以选择:【0,1,4,5,7,8】
0 关闭所有属性
1 设置高亮度
4 下划线
5 闪烁
7 反显
8 消隐
Java代码 复制代码 收藏代码
vim ~/.bashrc
export GREP_OPTTIONS='--color=always'
source ~/.bashrc
来自:http://blog.csdn.net/diy534/article/details/7025640
`--color` 选项在 `grep` 命令中用于控制输出时是否使用颜色来高亮匹配的文本。它有三个可能的值:`always`,`auto`,和 `never`。每个值的解释如下:
1. **`--color=always`**:
- **解释**:无论输出是否是终端,始终使用颜色高亮匹配的文本。
- **用例**:当你希望输出总是带有颜色时,例如将输出重定向到文件并希望在查看文件时看到颜色。
```sh
echo $PATH | grep --color=always 'go'
```
2. **`--color=auto`**:
- **解释**:仅当输出是终端时使用颜色高亮匹配的文本。如果输出被重定向到文件或管道,则不使用颜色。
- **用例**:这是最常用的选项,因为它在你直接查看输出时显示颜色,但在你将输出重定向或管道时不显示颜色。
```sh
echo $PATH | grep --color=auto 'go'
```
3. **`--color=never`**:
- **解释**:从不使用颜色高亮匹配的文本。
- **用例**:当你不希望看到任何颜色高亮时,可以使用这个选项。
```sh
echo $PATH | grep --color=never 'go'
```
### 示例和应用
假设你的 `$PATH` 是这样的:
```sh
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
```
如果你运行以下命令:
```sh
echo $PATH | grep --color=always 'go'
```
输出将是:
```sh
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
```
其中,`go` 会始终用颜色高亮显示。
如果你运行以下命令:
```sh
echo $PATH | grep --color=auto 'go'
```
如果输出到终端,`go` 会高亮显示。如果输出重定向到文件或管道,`go` 将不高亮显示。
### 实际用例
要将 `$PATH` 中包含 `go` 的路径高亮显示,并确保颜色只在终端中有效:
```sh
echo $PATH | tr ':' '\n' | grep --color=auto 'go'
```
这个命令会输出每个路径在新行,并高亮显示包含 `go` 的路径。
```sh
/usr/local/go/bin
```
`go` 将高亮显示,但只有在输出是终端时。
默认的ls是由"ls --color=auto"组成的,假如某个目录中的文件特别多,我不希望显示颜色(可以加快显示),那就需要指定单独的参数。
[root@localhost ~]# ls --color=never
[root@localhost ~]# ls --color=any
[root@localhost ~]# ls --color=always
来自:http://www.cnblogs.com/t-road/p/6830037.html
实践如下:
在Linux下给grep命令添加颜色
Java代码 复制代码 收藏代码
grep --color "test" test.json
[java] view plain copy print?
grep --color "test" test.json
自动给grep加颜色
Java代码 复制代码 收藏代码
vim ~/.bashrc
alias grep='grep --color'
source ~/.bashrc
[java] view plain copy print?
vim ~/.bashrc
alias grep='grep --color'
source ~/.bashrc
在管道中的其他程序也可以有颜色
这里用到grep的一个参数--color,color有三个值供选择:never、always、auto。always和auto的区别就是,always会在任何情况下都给匹配字段加上颜色标记,当通过管道或重定向时就会多出一些控制字符,结果会变成
export ^[[1;32m^[[KGREP^[[m^[[K_OPTIONS='--color=always'
export ^[[1;32m^[[KGREP^[[m^[[K_COLOR='1;32'
而auto则只在输出到终端时才加上颜色。
可以在.bashrc里加上
export GREP_OPTIONS='--color=auto'
来实现高亮匹配,具体用什么颜色,可以通过
export GREP_COLOR='a;b' #默认是1;31,即高亮的红色
来设置,其中:
a可以选择:【0,1,4,5,7,8】
0 关闭所有属性
1 设置高亮度
4 下划线
5 闪烁
7 反显
8 消隐
Java代码 复制代码 收藏代码
vim ~/.bashrc
export GREP_OPTTIONS='--color=always'
source ~/.bashrc
来自:http://blog.csdn.net/diy534/article/details/7025640
`--color` 选项在 `grep` 命令中用于控制输出时是否使用颜色来高亮匹配的文本。它有三个可能的值:`always`,`auto`,和 `never`。每个值的解释如下:
1. **`--color=always`**:
- **解释**:无论输出是否是终端,始终使用颜色高亮匹配的文本。
- **用例**:当你希望输出总是带有颜色时,例如将输出重定向到文件并希望在查看文件时看到颜色。
```sh
echo $PATH | grep --color=always 'go'
```
2. **`--color=auto`**:
- **解释**:仅当输出是终端时使用颜色高亮匹配的文本。如果输出被重定向到文件或管道,则不使用颜色。
- **用例**:这是最常用的选项,因为它在你直接查看输出时显示颜色,但在你将输出重定向或管道时不显示颜色。
```sh
echo $PATH | grep --color=auto 'go'
```
3. **`--color=never`**:
- **解释**:从不使用颜色高亮匹配的文本。
- **用例**:当你不希望看到任何颜色高亮时,可以使用这个选项。
```sh
echo $PATH | grep --color=never 'go'
```
### 示例和应用
假设你的 `$PATH` 是这样的:
```sh
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
```
如果你运行以下命令:
```sh
echo $PATH | grep --color=always 'go'
```
输出将是:
```sh
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
```
其中,`go` 会始终用颜色高亮显示。
如果你运行以下命令:
```sh
echo $PATH | grep --color=auto 'go'
```
如果输出到终端,`go` 会高亮显示。如果输出重定向到文件或管道,`go` 将不高亮显示。
### 实际用例
要将 `$PATH` 中包含 `go` 的路径高亮显示,并确保颜色只在终端中有效:
```sh
echo $PATH | tr ':' '\n' | grep --color=auto 'go'
```
这个命令会输出每个路径在新行,并高亮显示包含 `go` 的路径。
```sh
/usr/local/go/bin
```
`go` 将高亮显示,但只有在输出是终端时。
[实践OK]Ubuntu下使用苹果Monaco字体
Unix/LinuxC技术 jackxiang 2017-6-28 23:23
monaco字体是苹果系统下的字体,非常的好看,是我最喜欢的字体没有之一。现在我们就来在ubuntu下安装这个漂亮的字体
第一步:
进入github下载这个字体,github地址是https://github.com/cstrap/monaco-font。我们选择download zip的压缩包就可以。
第二步:
进入本地下载目录,解压刚刚下载的压缩包,进入解压后的文件夹,我们会看到这几个文件
install-font-archlinux.sh
install-font-centos.sh
install-font-gentoo.sh
install-font-ubuntu.sh
README.md
接下来我们打开README.md文件,里面写的很详细,如何安装,ttf文件的下载链接都有
第三步:
在README.md中有一行这样的命令./install-font-ubuntu.sh http://usystem.googlecode.com/files/MONACO.TTF,但是googlecode已经关闭了,所以我们要在README.md中另外找个下载链接。我用的是https://github.com/todylu/monaco.ttf/blob/master/monaco.ttf?raw=true这个链接。
第四步:
打开终端进入解压后的目录执行sudo ./install-font-ubuntu.sh https://github.com/todylu/monaco.ttf/blob/master/monaco.ttf?raw=true这个命令,OK安装完成。这样我们就可以把终端和文本编辑器的字体设置成monaco了,你所用的开发工具也一样可以使用这个字体了。完美。
./install-font-ubuntu.sh http://usystem.googlecode.com/files/MONACO.TTF
来自:http://blog.csdn.net/qq_26990831/article/details/51847416
字体下载:http://vdisk.weibo.com/s/IYNWXYSqrtI
第一步:
进入github下载这个字体,github地址是https://github.com/cstrap/monaco-font。我们选择download zip的压缩包就可以。
第二步:
进入本地下载目录,解压刚刚下载的压缩包,进入解压后的文件夹,我们会看到这几个文件
install-font-archlinux.sh
install-font-centos.sh
install-font-gentoo.sh
install-font-ubuntu.sh
README.md
接下来我们打开README.md文件,里面写的很详细,如何安装,ttf文件的下载链接都有
第三步:
在README.md中有一行这样的命令./install-font-ubuntu.sh http://usystem.googlecode.com/files/MONACO.TTF,但是googlecode已经关闭了,所以我们要在README.md中另外找个下载链接。我用的是https://github.com/todylu/monaco.ttf/blob/master/monaco.ttf?raw=true这个链接。
第四步:
打开终端进入解压后的目录执行sudo ./install-font-ubuntu.sh https://github.com/todylu/monaco.ttf/blob/master/monaco.ttf?raw=true这个命令,OK安装完成。这样我们就可以把终端和文本编辑器的字体设置成monaco了,你所用的开发工具也一样可以使用这个字体了。完美。
./install-font-ubuntu.sh http://usystem.googlecode.com/files/MONACO.TTF
来自:http://blog.csdn.net/qq_26990831/article/details/51847416
字体下载:http://vdisk.weibo.com/s/IYNWXYSqrtI
[实践OK] history命令追查登录的用户和时间,使用HISTTIMEFORMAT 显示history命令的时间戳。-bash: HISTTIMEFORMAT: readonly variable
Unix/LinuxC技术 jackxiang 2017-6-27 23:02
echo $HISTFILE
/root/.bash_history
less /root/.bash_history
-----------------------------------------------------------------------------------------------------------------------------------------
vi /etc/profile
export HISTTIMEFORMAT="%F %T `who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` "
sudo su -
-bash: HISTTIMEFORMAT: readonly variable
cd /etc/profile.d/
grep -r "HISTTIMEFORMAT" ./
./hq.sh: export HISTTIMEFORMAT="%Y.%m.%d-%H:%M:%S "
./hq.sh: readonly HISTTIMEFORMAT HISTSIZE HISTFILE ORIGNALUSER USERIP IPLIST PROMPT_COMMAND
在这儿原来 vi /etc/profile.d/hq.sh:
#EXPORTS
export HISTTIMEFORMAT="%Y.%m.%d-%H:%M:%S "
export HISTSIZE=4096
export HISTFILE="$histDir/${username}/${userIP}.hist.$DT"
export ORIGNALUSER=`$ECHO $username`
export USERIP=`$ECHO $userIP`
export IPLIST=$(/sbin/ip ad sh |$GREP inet |$GREP -v inet6|awk -F' ' '{print $2}'|awk -F'/' '{print $1}' |
$GREP -v '127.0.0.1'|tr -s "\n" "," |sed "s/|$//g")
export PROMPT_COMMAND='{ ec=$?; read seq time cmd < <(history 1); [ -z "$time" ] || { '$ECHO' "$time|$IPLI
ST|${ORIGNALUSER},$(whoami)|$(pwd)|$cmd|$ec|$USERIP" >> '$histDir'/`'$DATE' +%Y.%m.%d`_history; '$LOGGER' -t "audi
t.hist" -p 7 "$USERIP|${ORIGNALUSER}|$(whoami)|$(pwd)|$ec|$cmd"; } }'
readonly HISTTIMEFORMAT HISTSIZE HISTFILE ORIGNALUSER USERIP IPLIST PROMPT_COMMAND
http://awesomeops.blogspot.com/2014/10/there-are-lot-of-possibilities-to-track.html
——————
后面遇到这种类似的,直接修改,这估计是开发加的:/etc/profile
把里的:
注释掉。
这里也有,文件在: /etc/profile.d/history.sh #黄冶给想把命令加到ELK里,又不妨碍安全,于是得:rpm -qf `which chattr` ,yum install e2fsprogs -y , chattr -i /etc/profile.d/hq.sh ,把那个i的权限给去掉。
为何出现readonly的原因:
对于只读变量而言,若用户对其值进行修改,则会立即报错。例如,使用该指令定义一个只读变量"test",并且将其值初始化为"ok",输入如下命令:
readonly test='ok'
那么当用户直接修改该只读变量时,就会被报错,如下所示:
[root@localhost ~]# test='my' #试图修改只读变量的值 -bash: test: readonly variable
当用户试图修改只读变量的值时,会被提示该变量为只读变量。
实践:
readonly test='ok'
test='my'
-bash: test: 只读变量
Linux查看History记录加时间,这个对于系统管理员还是很有帮助的,原因不解释,你懂得!
ora11g$ history | more
1 rlwrap sqlplus / as sysdba
2 rlwrap sqlplus / as sysdba
3 date
4 rlwrap sqlplus / as sysdba
但是这里只显示了命令,并没有显示执行命令的时间,因为保存历史命令的~/.bash_history里并没有保存时间。
通过设置环境变量 export HISTTIMEFORMAT="%F %T `whoami` " 给history加上时间戳
ora11g$ export HISTTIMEFORMAT="%F %T `whoami` "
ora11g$ history
1 2014-03-25 21:29:53 oracle rlwrap sqlplus / as sysdba
2 2014-03-25 21:29:59 oracle rlwrap sqlplus / as sysdba
3 2014-03-25 21:31:23 oracle date
4 2014-03-25 21:31:43oracle rlwrap sqlplus / as sysdba
可以看到,历史命令的时间,用户已经加上了,但是.bash_history里并没有加上这个时间。
其实这个时间记录是保存在当前shell进程内存里的,如果你logout并且重新登录的话会发现你上次登录时执行的那些命令的时间戳都为同一个值,即当时logout时的时间。
尽管如此,对于加上screen的bash来说,这个时间戳仍然可以长时间有效的,毕竟只要你的server不重启,screen就不会退出,因而这些时间就能长时间保留。
你在root用户下也可以使用echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/profile 然后source一下就OK
===
当你从命令行执行 history 命令后,通常只会显示已执行命令的序号和命令本身。如果你想要查看命令历史的时间戳,那么可以执行:
# export HISTTIMEFORMAT='%F %T '
# history | more
1 2008-08-05 19:02:39 service network restart
2 2008-08-05 19:02:39 exit
3 2008-08-05 19:02:39 id
4 2008-08-05 19:02:39 cat /etc/redhat-release
注意:这个功能只能用在当 HISTTIMEFORMAT 这个环境变量被设置之后,之后的那些新执行的 bash 命令才会被打上正确的时间戳。在此之前的所有命令,都将会显示成设置 HISTTIMEFORMAT 变量的时间。
来自:
http://blog.csdn.net/needle2/article/details/7490583
http://blog.itpub.net/27144762/viewspace-1129567/
/root/.bash_history
less /root/.bash_history
-----------------------------------------------------------------------------------------------------------------------------------------
vi /etc/profile
export HISTTIMEFORMAT="%F %T `who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` "
sudo su -
-bash: HISTTIMEFORMAT: readonly variable
cd /etc/profile.d/
grep -r "HISTTIMEFORMAT" ./
./hq.sh: export HISTTIMEFORMAT="%Y.%m.%d-%H:%M:%S "
./hq.sh: readonly HISTTIMEFORMAT HISTSIZE HISTFILE ORIGNALUSER USERIP IPLIST PROMPT_COMMAND
在这儿原来 vi /etc/profile.d/hq.sh:
#EXPORTS
export HISTTIMEFORMAT="%Y.%m.%d-%H:%M:%S "
export HISTSIZE=4096
export HISTFILE="$histDir/${username}/${userIP}.hist.$DT"
export ORIGNALUSER=`$ECHO $username`
export USERIP=`$ECHO $userIP`
export IPLIST=$(/sbin/ip ad sh |$GREP inet |$GREP -v inet6|awk -F' ' '{print $2}'|awk -F'/' '{print $1}' |
$GREP -v '127.0.0.1'|tr -s "\n" "," |sed "s/|$//g")
export PROMPT_COMMAND='{ ec=$?; read seq time cmd < <(history 1); [ -z "$time" ] || { '$ECHO' "$time|$IPLI
ST|${ORIGNALUSER},$(whoami)|$(pwd)|$cmd|$ec|$USERIP" >> '$histDir'/`'$DATE' +%Y.%m.%d`_history; '$LOGGER' -t "audi
t.hist" -p 7 "$USERIP|${ORIGNALUSER}|$(whoami)|$(pwd)|$ec|$cmd"; } }'
readonly HISTTIMEFORMAT HISTSIZE HISTFILE ORIGNALUSER USERIP IPLIST PROMPT_COMMAND
http://awesomeops.blogspot.com/2014/10/there-are-lot-of-possibilities-to-track.html
——————
后面遇到这种类似的,直接修改,这估计是开发加的:/etc/profile
把里的:
注释掉。
这里也有,文件在: /etc/profile.d/history.sh #黄冶给想把命令加到ELK里,又不妨碍安全,于是得:rpm -qf `which chattr` ,yum install e2fsprogs -y , chattr -i /etc/profile.d/hq.sh ,把那个i的权限给去掉。
为何出现readonly的原因:
对于只读变量而言,若用户对其值进行修改,则会立即报错。例如,使用该指令定义一个只读变量"test",并且将其值初始化为"ok",输入如下命令:
readonly test='ok'
那么当用户直接修改该只读变量时,就会被报错,如下所示:
[root@localhost ~]# test='my' #试图修改只读变量的值 -bash: test: readonly variable
当用户试图修改只读变量的值时,会被提示该变量为只读变量。
实践:
readonly test='ok'
test='my'
-bash: test: 只读变量
Linux查看History记录加时间,这个对于系统管理员还是很有帮助的,原因不解释,你懂得!
ora11g$ history | more
1 rlwrap sqlplus / as sysdba
2 rlwrap sqlplus / as sysdba
3 date
4 rlwrap sqlplus / as sysdba
但是这里只显示了命令,并没有显示执行命令的时间,因为保存历史命令的~/.bash_history里并没有保存时间。
通过设置环境变量 export HISTTIMEFORMAT="%F %T `whoami` " 给history加上时间戳
ora11g$ export HISTTIMEFORMAT="%F %T `whoami` "
ora11g$ history
1 2014-03-25 21:29:53 oracle rlwrap sqlplus / as sysdba
2 2014-03-25 21:29:59 oracle rlwrap sqlplus / as sysdba
3 2014-03-25 21:31:23 oracle date
4 2014-03-25 21:31:43oracle rlwrap sqlplus / as sysdba
可以看到,历史命令的时间,用户已经加上了,但是.bash_history里并没有加上这个时间。
其实这个时间记录是保存在当前shell进程内存里的,如果你logout并且重新登录的话会发现你上次登录时执行的那些命令的时间戳都为同一个值,即当时logout时的时间。
尽管如此,对于加上screen的bash来说,这个时间戳仍然可以长时间有效的,毕竟只要你的server不重启,screen就不会退出,因而这些时间就能长时间保留。
你在root用户下也可以使用echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/profile 然后source一下就OK
===
当你从命令行执行 history 命令后,通常只会显示已执行命令的序号和命令本身。如果你想要查看命令历史的时间戳,那么可以执行:
# export HISTTIMEFORMAT='%F %T '
# history | more
1 2008-08-05 19:02:39 service network restart
2 2008-08-05 19:02:39 exit
3 2008-08-05 19:02:39 id
4 2008-08-05 19:02:39 cat /etc/redhat-release
注意:这个功能只能用在当 HISTTIMEFORMAT 这个环境变量被设置之后,之后的那些新执行的 bash 命令才会被打上正确的时间戳。在此之前的所有命令,都将会显示成设置 HISTTIMEFORMAT 变量的时间。
来自:
http://blog.csdn.net/needle2/article/details/7490583
http://blog.itpub.net/27144762/viewspace-1129567/
根据子网掩码求最大主机数
Unix/LinuxC技术 jackxiang 2017-6-27 22:56
背景:组网相关的网络知识,网络划分啥的有一个大体的了解,无它。
有一B类网络,其子网掩码为 255.255.240.0,求每个子网的最大主机数
给出求解过程
子网掩码 255.255.240.0
化成二进制得 11111111 11111111 11110000 00000000
子网号里面的1代表网络号 0代表主机号 所以有 12位为0
即最大主机号为 2的12次方
又因为全0和全1的不能分配给主机地址(主机位全为0是网络地址,全为1是广播地址)
所以实际的主机数为 2的12次方减去2
即最大主机数为 4096-2=4094个
子网掩码 255.255.240.0
化成二进制得 11111111 11111111 11110000 00000000
子网号里面的1代表网络号 0代表主机号 所以有 12位为0
即最大主机号为 2的12次方
又因为全0和全1的不能分配给主机地址(主机位全为0是网络地址,全为1是广播地址)
所以实际的主机数为 2的12次方减去2 (减二是指去掉一个网络地址和一个广播地址)
即最大主机数为 4096-2=4094个
来自:https://zhidao.baidu.com/question/43544478.html
有一B类网络,其子网掩码为 255.255.240.0,求每个子网的最大主机数
给出求解过程
子网掩码 255.255.240.0
化成二进制得 11111111 11111111 11110000 00000000
子网号里面的1代表网络号 0代表主机号 所以有 12位为0
即最大主机号为 2的12次方
又因为全0和全1的不能分配给主机地址(主机位全为0是网络地址,全为1是广播地址)
所以实际的主机数为 2的12次方减去2
即最大主机数为 4096-2=4094个
子网掩码 255.255.240.0
化成二进制得 11111111 11111111 11110000 00000000
子网号里面的1代表网络号 0代表主机号 所以有 12位为0
即最大主机号为 2的12次方
又因为全0和全1的不能分配给主机地址(主机位全为0是网络地址,全为1是广播地址)
所以实际的主机数为 2的12次方减去2 (减二是指去掉一个网络地址和一个广播地址)
即最大主机数为 4096-2=4094个
来自:https://zhidao.baidu.com/question/43544478.html