技术备忘1

简介: 查看系统是多少位和设备UUID shell>getconf LONG_BITshell> ls -l /dev/disk/by-uuid/ 内核目录 /usr/src/kernels中无内核文件 shell> yum -y install kernel-devel 循环刷新时间的shell脚本 now(){ date=`date +%Y\



查看系统是多少位和设备UUID

shell>getconf LONG_BIT
shell> ls -l /dev/disk/by-uuid/

内核目录 /usr/src/kernels中无内核文件

shell> yum -y install kernel-devel

循环刷新时间的shell脚本

now()
{
  date=`date +%Y\ %m\ %d\ %H:%M:%S`
  echo -ne "$date\r"
}

while :
do
now
sleep 1
done

硬链接和软链接

  通过文件名打开文件
图 1. 通过文件名打开文件

由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:

  • 文件有相同的 inode 及 data block;
  • 只能对已存在的文件进行创建;
  • 不能交叉文件系统进行硬链接的创建;
  • 不能对目录进行创建,只可对文件创建;
  • 删除一个硬链接文件并不影响其他有相同 inode 号的文件。

 

软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块(见图) 。因此软链接的创建与使用没有类似硬链接的诸多限制:

  • 软链接有自己的文件属性及权限等;
  • 可对不存在的文件或目录创建软链接;
  • 软链接可交叉文件系统;
  • 软链接可对文件或目录创建;
  • 创建软链接时,链接计数 i_nlink 不会增加;
  • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

 

   软链接的访问
图 2. 软链接的访问

地址:http://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html

删除目录软链接

    rm   -rf   test/  对于软链接目录,删除的时候不能加/,否则是删除不掉的

ftp / tftp

   tftp是应用层的软件,它与ftp的不同在于,在传输层它是基于UDP协议的,是不可靠的协议,但是效率很高,在路由交换中应用很大。
   ftp在传输层是基于TCP的,速度相对较慢。

CentOS6x_x86_64 DNS启动注意点

[root@www lin]# /etc/rc.d/init.d/named restart
stop named:                                              [OK]
Generating /etc/rndc.key:

#resolve
[root@www lin]# rndc-confgen -r /dev/urandom -a
wrote key file "/etc/rndc.key"
[root@www lin]# /etc/rc.d/init.d/named restart
stop  named:                                             [OK]
start named:                                             [OK]

设置提示字符串PS1

shell> PS1="PROMPT>"
PROMPT> Type commands here     # 提示字符串已经改变

shell> PS1="\e[1;31mPROMPT-->"        ///加了颜色…
PROMPT-->
此时,在终端中的显示应该是彩色的提示符了,其中的\e[1;xxm和\e[m就是改变终端字体颜色的部分,
前者是修改颜色,后者是恢复到正常显示。但是这时还会有问题,在提示符中输入第一行时,回车换行不正常,
导致显示很混乱,因此,除了这个修改之外,还需要将全部非打印字符用专用的 bash 转义序列 "\[" 和 "\]" 括起来。
这两个序列通知 bash,被括起来的字符不占用行上的任何空间,这样就使自动换行能够继续正常工作。
最终版本如下(可解决带颜色提示符的不换行问题):

shell>PS1="\[\e[1;32m\]\u\[\e[m\]\[\e[1;33m\]@\[\e[m\]\[\e[1;35m\]\h\[\e[m\]:\w\$ "

另外,还可以加判断语句输出喔,用“``”符号调用命令即可:
PS1=$'`if [ $? = 0 ]; then echo \\[\\e[42m\\]\\[\\e[1m\\]Right\\[\\e[0m\\]; else echo \\[\\e[41m\\]\\[\\e[1m\\]Wrong\\[\\e[0m\\]; fi\n`[\\u@\\h:\\[\\e[36m\\]\\w\\[\\e[0m\\]]\\$ '

vim录制宏

1. 将光标移至想要注释掉的第一行行首->ESC->qa->i->#->ESC->j->q

  qa: q是开始录制,后面紧跟名字,这里是a,也可以是其他

    最后一个q表示结束录制

2. @a会重复刚刚录制的a
3. 10@a会重复10次

Public key for *.rpm is not installed

# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
根据Linux版本是CentOS 6.X
#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

history格式自定义

eg:
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S  "
HISTTIMEFORMAT="%F %T "

增加swap分区大小

shell>dd if=/dev/zero of=swapfile bs=10M count=1000
shell>mkswap swapfile         
shell>swapon swapfile            //激活swap文件
shell>swapoff swapfile            //卸载该swap文件
//写入 /etc/fstab
swapfilepath swap swap defaults 0 0

修改主机名

1. shell> hostname tao
2. 修改/etc/sysconfig/network中的hostname
3. 修改/etc/hosts文件

屏蔽IPV6

/etc/sysconfig/network
IPV6_NETWORKING=no

vi /etc/modprobe.d/ipv6.conf            ///文件名没所谓!
blacklist ipv6
alias net-pf-10 off
alias ipv6 off

CentOS字符与图形界面相关

yum grouplist               //检查已安装的组
yum groupinstall "X Window System"
yum groupinstall "Desktop"
startx 或者init 5
图形界面想要卸载:
yum groupremove "Desktop"
yum groupremove "X Window System"
URL

二进制文件的简单读取

od    
hexdump 

mail

mail -s “test” test@test.com < test.txt

userdel: user ** is currently logged in

解决方法:

mv /var/run/utmp /var/run/utmp_old      //将原文件改名

touch > /var/run/utmp        //新创建一同名文件


再次执行删除操作。。。成功删除用户

 

关于:/var/run/utmp


utmp是一个文件,除了utmp程序你不能编辑这个文件,删掉他的话,当前登陆信息都会丢失。这个文件在每次机器reboot起来后都会重新创建。


更多关于utmp文件介绍请参考下面说明:

/var/run/utmp

  该日志文件记录有关当前登录的每个用户的信息。因此这个文件会随着用户登录和注销系统而不断变化,它只保留当时联机的用户记录不会为用户保留永久的记录。系统中需要查询当前用户状态的程序,如 who、w、users、finger等就需要访问这个文件。该日志文件并不能包括所有精确的信息,因为某些突发错误会终止用户登录会话,而系统没有及时更新 utmp记录,因此该日志文件的记录不是百分之百值得信赖的。

 (/var/log/wtmp、/var/log/utmp、/var/log/lastlog)是日志子系统的关键文件,都记录了用户登录的情况。这些文件的所有记录都包含了时间戳。这些文件是按二进制保存的,故不能用less、cat之类的命令直接查看这些文件,而是需要使用相关命令通过这些文件而查看。其中,utmp和wtmp文件的数据结构是一样的,而lastlog文件则使用另外的数据结构,关于它们的具体的数据结构可以使用man命令查询。

  每次有一个用户登录时,login程序在文件lastlog中查看用户的UID。如果存在,则把用户上次登录、注销时间和主机名写到标准输出中,然后login程序在lastlog中记录新的登录时间,打开utmp文件并插入用户的utmp记录。该记录一直用到用户登录退出时删除。utmp文件被各种命令使用,包括who、w、users和finger。

  下一步,login程序打开文件wtmp附加用户的utmp记录。当用户登录退出时,具有更新时间戳的同一utmp记录附加到文件中。wtmp文件被程序last使用。

知识点转载点

另外,如果有该用户的文件正在使用的话,即有以该用户为属主在跑程序,那么删除该用户的时候,仍然会报这样的错!

linux批量替换文件内容3种方法(perl,sed,shell)

方法1:

这两天在构建一个应用的使用用到了maven,由于project很大,足足有700多个 pom.xml文件,更郁闷的是在很多pom.xml文件里都单独指定了资源库的url,我需要把这些资源库的url统一指定到nexus本地中央库.
手 工一个个改文件配置有点不太实际,所以google了一下,找到批量替换文件内容的好方法,命令结构如下:
find -name ‘要查找的文件名’ | xargs perl -pi -e ‘s|被替换的字符串|替换后的字符串|g’下面这个例子就是将当前目录及所有子目录下的所有pom.xml文件中的”http://repo1.maven.org/maven2“ 替换为”http://localhost:8081/nexus/content/groups/public“.
find -name ‘pom.xml’ | xargs perl -pi -e ‘s|http://repo1.maven.org/maven2|http://localhost:8081/nexus/content /groups/public|g’这里用到了Perl语言,
perl -pi -e 在Perl 命令中加上-e 选项,后跟一行代码,那它就会像运行一个普通的Perl 脚本那样运行该代码.
从命令行中使用Perl 能够帮助实现一些强大的、实时的转换。认真研究正则表达式,并正确地使用,将会为您省去大量的手工编辑工作。
find -name ‘pom.xml’ | xargs perl -pi -e ‘s|http://repo1.maven.org/maven2|http://localhost:8081/nexus/content/groups/public|g’

方法2:

Linux下批量替换多个文件中的字符串的简单方法。用sed命令可以批量替换多个文件中的字符串。
用sed命令可以批量替换多个文件中的 字符串。
sed -i “s/原字符串/新字符串/g” `grep 原字符串 -rl 所在目录`
例如:我要把mahuinan替换 为huinanma,执行命令:
sed -i “s/mahuinan/huinanma/g” ‘grep mahuinan -rl /www’
这是目前linux最简单的批量替换字符串命令了!
具体格式如下:
sed -i “s/oldString/newString/g” `grep oldString -rl /path`
实例代码:sed -i “s/大小多少/日月水火/g” `grep 大小多少 -rl /usr/aa`
sed -i “s/大小多少/日月水火/g” `grep 大小多少 -rl ./`

方法3:

在日程的开发过程中,可能大家会遇到将某个变量名修改 为另一个变量名的情况,如果这个变量是一个局部变量的话,vi足以胜任,但是如果是某个全局变量的话,并且在很多文件中进行了使用,这个时候使用vi就是 一个不明智的选择。这里给出一个简单的shell命令,可以一次性将所有文件中的指定字符串进行修改:

grep “abc” * -R | awk -F: ‘{print $1}’ | sort | uniq | xargs sed -i ‘s/abc/abcde/g’

批量替换 配置文件中的IP:

grep “[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}” * -R | awk -F: ‘{print $1}’ | sort | uniq | xargs sed -i ‘s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/172\.0\.0\.1/g’

补充说明:
sed -i “s/oldString/newString/g” `grep oldString -rl /path`
对多个文件的处理可能不支持,需要用 xargs, 搞定。
变种如下:
grep oldString -rl /path | xargs sed -i “s/oldString/newString/g”

对 grep 文件的更多操作:

grep -rl “oldString” . –include=\*.{h,cpp} | while read file; do echo $file;done

注意:
在 `grep oldString -rl /path` 中 ` 为1前边的翻引号`,而不是enter 前的 ‘

转载

vim分屏

启动分屏

1.使用大写O参数进行水平分屏

$ vim -On file1 file2 ...

2.使用小写o参数进行垂直分屏

$ vim -on file1 file2 ...

注: n是数字,表示分屏的数量

 

关闭分屏

1.关闭当前窗口

ctrl+w c

2.关闭当前窗口,如果只剩最后一个,则退出vim

ctrl+w q

 

编辑中分屏

1.上下分割当前打开的文件

ctrl+w s

2.上下分割,并打开一个新的文件

:sp filename

3.左右分割当前打开的文件

ctrl+w v

4.左右分割,并打开一个新的文件

:vsp filename

 

分屏编辑中光标的移动

vi中的光标键是h,j,k,l,要在各个屏之间切换,只需要先按一下ctrl+w

1.把光标移动到上边的屏

ctrl+w k

2.把光标移动到下边的屏

ctrl+w j

3.把光标移动到右边的屏

ctrl+w l

4.把光标移动到左边的屏

ctrl+w h

5.把光标移动到下一个的屏

ctrl+w w

移动分屏

1.向上移动

ctrl+w K

2.向下移动

ctrl+w J

3.向右移动

ctrl+w L

4.向左移动

ctrl+w H

屏幕尺寸

1.增加高度

ctrl+w +

2.减少高度

ctrl+w -

3.让所有屏的高度一致

ctrl+w =

命令模式

:new,新建文件并分屏, 快捷键,Ctrl+W,然后马上按n键
:spilt 水平分屏,将当前屏分为两个,水平的。   Ctrl + w, s
:vsplit 垂直分屏,将当前屏分为两个,垂直的。  Ctrl + w, v
:only 取消分屏,取消当前的屏,当前屏指的是光标所在屏。

Dell 服务器 网卡接口命名法转换

     Linux系统一贯将以太网设备命名为ethX。一般第一个接口被命名为eth0,如果你仅有一个网络端口,这样毫无问题,但如果出现戴尔PowerEdge服务器的情况,四个以太网端口该怎么办?它们被命名为 eth0、eth1、eth2、eth3,分别对应机箱背面的标签 1、2、3、4。某些时候确实如此。除了从 0 开始,而不是从 1 开始导致的明显命名混乱外,还可能出现其他混乱情况,如每个端口在每次启用时可能无法获得相同的名称,此外它们的命名顺序可能是任意的。如果将网卡添加到PCI插槽,情况还会更糟,主板上的端口和新添加卡上的端口命名可能相互混杂。

    Biosdevname这是 Dell 开发的工具,旨在为网络设备的命名理清思路(并且保持一致性)。Biosdevname 是一款udev帮助程序,可根据系统BIOS提供的信息对网络接口进行重命名。

新的命名规则如下:
    em[1-N]表示主板(嵌入式)NIC(# 对应机箱标签)
    pci<slot>#<port> 表示PCI插槽中的卡,端口 1 至 N
    NPAR & SR-IOV设备增加后缀 _<vf>,从0至N,取决于各端口可用的分区或虚拟功能的数量。
    其他Linux命名规则,如 .<vlan> 和 :<alias> 后缀,保持不变且仍然适用。

         由此,Linux 网络接口名称与外部可见的网络端口(RJ-45 机架)之间建立了明确的对照。

         在一些新的Linux发行版中已经默认启动该参数了,如果你不想使用emX表示法,也可以回退到ethX表示法的。参照以下步骤:

           ①修改grub中的内核引导参数,添加biosdevname=0

    ②修改网卡配置表示,centos系在/etc/sysconfig/network-scripts/ifcfg-ethX,debian系在/etc/network/interfaces中,emX修改为eth(X-1)

    ③清空udev中的net规则

    ④reboot机器,之后就会看到老的网卡命名方法


         biosdevname命令的使用方法参考如下:

        http://manpages.ubuntu.com/manpages/quantal/en/man1/biosdevname.1.html

manual手册加颜色

~/.bashrc

export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'

vim显示目录树

在vim如果查看目录结构,或者当前文件夹下面的文件,就需要从编辑模式跳到命令模式,运行如下命令:

!ls

觉得很不方便,如果想看上层的目录,或者上层下面的另外一个目录,需要多次进行上面的操作,但是如果你可以直接显示目录树该有多爽啊。

这就是本文要介绍的vim插件  - nerdtree

你可以从vim的网站下载到它:

http://www.vim.org/scripts/script.php?script_id=1658

下载后,解压到

~/.vim

目录,然后打开 ~/.vimrc文件,添加下面一行: //也可以不添加,在末行模式下输入":NERDTree" 就可以了!

nmap <silent> <c-n> :NERDTreeToggle<CR>

此时进入vim,然后ctrl + n就会在vim的左边打开目录树,其实使用了vim的切分窗口,你可以使用移动键,和回车键来切换到不同的目录和文件。如果想隐藏目录树,再按一次ctrl + n就可以。

参考

。。。

服务器序列号查询

利用 dmidecode | grep Serial 能够获得 PCSERVER 序列号信息.

SHELL脚本简单加密

gzexe test.sh

时间同步

0  0  * * *   /usr/sbin/ntpdate -u ntp.api.bz > /dev/zero 2&>1

sort选择特定列排序

sort的-t选项和-k选项

如果有一个文件的内容是这样:

[rocrocket@rocrocket programming]$ cat facebook.txt

banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3

这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。

那么我想以水果数量来排序,也就是以第二列来排序,如何利用sort实现?

幸好,sort提供了-t选项,后面可以设定间隔符。(是不是想起了cut和paste的-d选项,共鸣~~)

指定了间隔符之后,就可以用-k来指定列数了。

[rocrocket@rocrocket programming]$ sort -n -k 2 -t : facebook.txt

我们使用冒号作为间隔符,并针对第二列来进行数值升序排序,结果很令人满意。

Linux大棚

在文件头部追加内容

 
sed -i '1i\Insert this line' file.txt

。。。。。。



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
7天前
|
Java Linux 数据安全/隐私保护
SVN魔法笔记:工作中不可或缺的命令宝典
SVN魔法笔记:工作中不可或缺的命令宝典
45 2
|
17天前
|
JSON 开发者 数据格式
揭秘5.3k⭐开发者的秘密武器:it-tools在线工具集,你不可不知!
揭秘5.3k⭐开发者的秘密武器:it-tools在线工具集,你不可不知!
21 0
|
10月前
|
前端开发 Oracle 关系型数据库
程序员装机必备利器列表
程序员装机必备利器列表
116 0
|
开发工具 git
如何使用TortoiseGit指北,一篇讲清(下)
如何使用TortoiseGit指北,一篇讲清(下)
如何使用TortoiseGit指北,一篇讲清(下)
|
数据可视化 开发工具 git
|
传感器
时隔这么长时间,我把常用的功能整理好了,再来感受VueUse工具库的优雅吧~
时隔这么长时间,我把常用的功能整理好了,再来感受VueUse工具库的优雅吧~
时隔这么长时间,我把常用的功能整理好了,再来感受VueUse工具库的优雅吧~
|
缓存 PHP
Laravel 升级打怪的黑魔法命令整理
laravel不是可以直接 request()->ip() 获取IP吗,并且laravel自带有 Carbon 插件用于操作时间,生成随机字符串也自带有 Str::random() 方法,没要把框架自带的功能再重新封装一遍。
101 0
|
测试技术 芯片