linux 常用命令

记录在使用linux过程中常用的命令,方便查找

装机建议安装软件

对于centos:
yum install -y net-tools vim gcc gcc-c++
yum install -y psmisc sysstat
yum install -y numactl-devel*x86_64
yum install -y bzip2 bc git pciutils-devel
yum install -y elfutils-libelf-devel elfutils-devel ncurses-devel
yum install -y kernel-devel kernel-headers

对于debian:
apt-get -y install vim
apt-get -y install net-tools
apt-get -y install git make bc gcc
apt-get -y install ethtool
apt-get -y install libstdc++
apt-get -y install libpcre3 libpcre3-dev
apt-get -y install zlib1g-dev

apt-get -y install linux-headers-$(uname -r)

apt-get -y install libnuma-dev 

配置网口ip

对于centos:
# vim /etc/sysconfig/network-scripts/ifcfg-eth0 

BOOTPROTO="static" #dhcp改为static   
ONBOOT="yes" #开机启用本配置  
IPADDR=192.168.7.106 #静态IP  
GATEWAY=192.168.7.1 #默认网关  
NETMASK=255.255.255.0 #子网掩码  
DNS1=192.168.7.1 #DNS 配置 

# service network restart  

对于debian:
/etc/network/interfaces
auto eth0                  #设置自动启动eth0接口
iface eth0 inet static     #配置静态IP
address 192.168.11.88      #IP地址
netmask 255.255.255.0      #子网掩码
gateway 192.168.11.1        #默认网关
dns-nameservers 8.8.8.8 144.144.144.144        #DNS

禁用ipv6

在/etc/default/grub里面disable掉ipv6如下

[ych@localhost ~]$ cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="ipv6.disable=1 vconsole.keymap=us crashkernel=auto  vconsole.font=latarcyrheb-sun16 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

更新grub
grub2-mkconfig -o /boot/grub2/grub.cfg

/proc/sys/net/ipv6/conf/all/disable_ipv6,0表示允许,1表示不允许

查看系统dns

[ych@localhost ~]$ cat /etc/resolv.conf 
# Generated by NetworkManager
domain localdomain
search localdomain
nameserver 192.168.17.2

关闭SELINUX,之后重启

[root@localhost selinux]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

reboot

配置samba

对于centos:
sudo yum -y install nano vim wget curl net-tools lsof
sudo yum -y install samba samba-client samba-common
对于debian:
apt-get -y install samba-common-bin python-samba python-ldb python-tdb
apt-get -y install libtalloc2 samba samba-common


创建共享目录
mkdir -p /home/ych/share
ulimit -n 16384

vim /etc/security/limits.conf
在最后加入以下内容
*-nofile 16384

cat /etc/samba/smb.conf
[ych]
        comment = ych samba share
        path = /home/ych
        public = no
        writable = yes
        write list = @ych
	
创建samba用户
	smbpasswd -a ych

systemctl restart smb
systemctl enable smb

iptables -F
#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
#查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
firewall-cmd --state

iptables -F
systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd --state

设置cpu频率

centos与其他系统设置方法不同,需要先在 /etc/default/grub中加入  intel_pstate=disable
cpupower -c 86 frequency-set -f 2.10GHz

CentOS Mini 安装图像界面

centos 6.5
yum groupinstall -y "Desktopp" \
"Desktop Platform" \
"Fonts" \
"General Purpose Desktop" \
"Graphical Administration Tools" \
"Input Methods" \
"Legacy X Window System compatibility" \
"Remote Desktop Clients" \
"X Window System"

CentOS7
sudo yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

CentOS7图形界面与命令行界面切换

查看当前系统启动模式
systemctl get-default

将图形化界面切换为命令行,输入命令
sudo systemctl set-default multi-user.target
sudo reboot

将命令行切换为图形化界面,输入命令
sudo systemctl set-default graphical.target
sudo reboot

centos内核 下载、源码编译、修改grub启动顺序

下载:
进入官网下载
由上面两个步骤我们知道了自己centos版本为6.7,内核版本为2.6.32-573.el6.i686
源代码的官网:http://vault.centos.org/
进入官网后,再一次进入6.7/,进入os/,进入Source/,进入SPackages/,找到kernel-2.6.32-573.el6.src.rpm下载就行了
也可以直接在linux系统上下载,例如
wget http://vault.centos.org/7.4.1708/os/Source/SPackages/kernel-3.10.0-693.el7.src.rpm

rpm -ivh kernel-3.10.0-693.el7.src.rpm
这时会产生目录/root/rpmbuild/SPECS和/root/rpmbuild/SOURCES
rpmbuild -bp --target=$(uname -m) /root/rpmbuild/SPECS/kernel.spec

Makefile:906: "Cannot use CONFIG_STACK_VALIDATION, please install libelf-dev or elfutils-libelf-devel"

源码编译:
make -j8
make modules_install -j8
make install -j8

修改CentOS7 Grub启动顺序

1. 查看系统有哪些启动选项
cat /boot/grub2/grub.cfg |grep menuentry
2. 设置grub到默认的7.4 kernel 
grub2-set-default 'CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)'
grub2-set-default 'CentOS Linux (3.10.0-693.21.1.el7.x86_64) 7 (Core)'
grub2-set-default 'CentOS Linux (3.10.0) 7 (Core)'
grub2-set-default 'CentOS Linux 7 (Core), with Linux 3.10.0-327.el7.x86_64'
grub2-set-default 'CentOS Linux (3.16.56) 7 (Core)'
grub2-set-default 'CentOS Linux 7 (Core), with Linux 3.10.0-229.el7.x86_64'
grub2-set-default 'NeoKylin Desktop (3.10.0) 7.0 (Seven)'
grub2-set-default 'CentOS Linux (3.10.0) 7 (Core)'
grub2-set-default 'CentOS Linux (4.4.180) 7 (Core)'
grub2-set-default 'CentOS Linux (3.10.0-957.12.1.el7.x86_64) 7 (Core)'
grub2-set-default 'CentOS Linux (3.10.0-957.12.2.el7.x86_64) 7 (Core)'

3. 查看修改后的结果
grub2-editenv list 
4. 重启系统
sudo reboot

安装linux源码

yum install kernel-headers

查看系统安装对应内核的包
rpm -qa | grep kernel
使用
yum remove kernel-3.10.0-327.22.2.el7.x86_64

设置系统ld路径

在/etc/ld.so.conf文件中写入openssl库文件的搜索路径(我的是64位的Centos7.3,所以这里是lib64)
echo "/usr/local/lib64" >> /etc/ld.so.conf
使修改后的/etc/ld.so.conf生效,就应该可以了
ldconfig -v

或者
export LD_LIBRARY_PATH=/home/ych/lib:$LD_LIBRARY_PATH

创建登陆用户

adduser ych
passwd ych

centos升级最新的svn版本

yum erase subverson
yum clean all

vim /etc/yum.repos.d/wandisco-svn.repo
[WandiscoSVN]
name=Wandisco SVN Repo
baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/$basearch/
enabled=1
gpgcheck=0

yum install subversion

修改系统grub参数

/etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg

ubuntu: update-grub
reboot

default_hugepagesz=1G hugepagesz=1G hugepages=12
default_hugepagesz=2M hugepagesz=2M hugepages=4096
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet default_hugepagesz=1G hugepagesz=1G hugepages=12 iommu=pt intel_iommu=on"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet default_hugepagesz=1G hugepagesz=1G hugepages=12 hugepagesz=2M hugepages=512 iommu=pt intel_iommu=on"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet default_hugepagesz=2M hugepagesz=2M hugepages=4096 iommu=pt intel_iommu=on"

配置系统巨页,改配置文件

cp -a /etc/sysctl.conf /etc/sysctl.conf.bak
echo 'vm.nr_hugepages=2048' >> /etc/sysctl.conf
sysctl -p

开启iommu

igb_uio driver must have iommu=pt
vfio-pci driver must have iommu=pt intel_iommu=on

egrep '(vmx|svm)' /proc/cpuinfo

查看系统安装了多少驱动,每个驱动的信息

ll /sys/module/

安装tftp server

yum install -y tftp-server xinetd
修改tftp的配置文件
/etc/xinetd.d/tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /home/ych/tmp/
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
server_args -s 是tftpd共享目录
disable 改为no

开启服务
service tftp restart
service xinetd restart

查看69端口
netstat -nlp | grep 69 

tftp客户端

-l FILE Local FILE
-r FILE Remote FILE
-g      Get file
-p      Put file
-b SIZE Transfer blocks of SIZE octets

tftp -l hello -r hello -g 5.5.5.2

开启关闭NetworkManager

NetworkManager是一个在你系统上运行的服务,它容许你简便地设置你的网络连接,尤其是当你需要设置一个无线网络的连接。很不幸地,NetworkManager 缺省是被停用的,因此我们必须启用它。
启用 NetworkManager 服务
首先我们将会设置你的 CentOS 系统在开机时自动启用 NetworkManager。你可以这样做:
chkconfig NetworkManager on
接著我们会引导它,好叫我们不用重新开机便可以应用它:
service NetworkManager start
你果你是在图像环境里(Gnome)完成这个步骤,你的通知本地(一般在 Gnome 面板的右上角)将会显示一个新图示。如果你点击这个图示,你将会看见一个清单,列出所有可以连接的无线网络。
你可能会想在开机时停用你的网络及 wpa_supplicant 服务,因为 NetworkManager 将会为你处理它们。要是这样,你只需执行:
chkconfig network off
chkconfig wpa_supplicant off

service NetworkManager status
service NetworkManager start
service NetworkManager stop

chkconfig network off
service NetworkManager stop

使用 systemctl list-unit-files  查看开机启动项
systemctl stop kubelet.service 
systemctl stop kube-proxy.service
systemctl stop docker-cleanup.service
systemctl stop docker-storage-setup.service
systemctl stop docker.service

更新时区(亚洲-中国-上海)

sudo timedatectl set-timezone Asia/Shanghai
将硬件时钟调整为与系统时钟一致
sudo timedatectl set-local-rtc 1

linux OOM触发机制

linux默认参数vm.min_free_kbytes 64mb,

/proc/sys/vm/min_free_kbytes

该文件表示强制Linux VM最低保留多少空闲内存(Kbytes)。

当可用内存低于这个参数时,系统开始回收cache内存,以释放内存,直到可用内存大于这个值。

vm.min_free_kbytes=409600;
vm.vfs_cache_pressure=200;
vm.swappiness=40。
调整MIN_FREE_KBYTES的目的是保持物理内存有足够的空闲空间,防止突发性的换页。

swapiness缺省为60,减少swapiness会使系统尽快通过swapout不使用的进程资源来释放更多的物理内存。

vfs_cache_pressure的缺省值是100,加大这个参数设置了虚拟内存回收directory和i-node缓冲的倾向,这个值越大,回收的倾向越严重。调整这3个参数的目的就是让操作系统在平时就尽快回收缓冲,释放物理内存,这样就可以避免突发性的大规模换页。

合代码添加msg实现换行

svn ci -m $'xxxxxxxxxxxxxxxxxx\n
1、xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \n
2、xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \n'

内核模块自动安装方式:

https://wiki.archlinux.org/index.php/Kernel_modules_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

配置命名空间ns

ip netns add ns0
ip link set netns ns0 dev enp66s0f1
ip netns exec ns0 bash

git下载代码但是不带git信息

git checkout-index --prefix=/home/ych/tmp/ -a

top指定进程名

top -H -p $(pgrep sample)

配置系统crash

安装kdump:
yum search kexec-tools
yum install kexec-tools.x86_64

配置kdump:
vim  /boot/grub/menu.lst:  设置crashkernel=auto
vim /etc/kdump.conf:          path /var/crash    (core文件产生的目录)

启动kdump:
service kdump start

安装:yum search crash
yum install  crash.x86_64
安装kernel-debuginfo

Command line: BOOT_IMAGE=/boot/vmlinuz-3.10.0-862.3.3.el7.x86_64
wget http://debuginfo.centos.org/7/x86_64/kernel-debuginfo-common-x86_64-3.10.0-862.3.3.el7.x86_64.rpm
wget http://debuginfo.centos.org/7/x86_64/kernel-debuginfo-3.10.0-862.3.3.el7.x86_64.rpm

安装:
rpm -ivh kernel-debuginfo-common-x86_64-3.10.0-862.3.3.el7.x86_64.rpm
rpm -ivh x86_64/kernel-debuginfo-3.10.0-862.3.3.el7.x86_64.rpm

分析vmcore
1 模拟机内内核奔溃
echo c > /proc/sysrq-trigger
执行此命令内核崩溃,会在/var/crash目录下生成vmcore文件。(vim /etc/kdump.conf; path /var/crash)
2 分析vmcore
进入目录/var/crash/127.0.0.1-2014-02-24-09:30:19,可以看到vmcore文件。
执行/usr/bin/crash /usr/lib/debug/usr/lib/modules/3.10.0-862.11.6.el7.x86_64/vmlinux  vmcore
具体分析过程见:https://www.ibm.com/developerworks/cn/linux/l-cn-kdump4/index.html?ca=drs


1. 修改  /etc/default/grub
2. 这个参数  crashkernel=auto 改为 crashkernel=512M
3. 然后执行  grub2-mkconfig -o /boot/grub2/grub.cfg

#删除内核启动项

cd /boot
rm -rf *3.10.0-123.4.4.el7*                     删除所有相关的文件
cd /lib/modules/
rm -rf 3.10.0-123.4.4.el7   对应的文件夹
最后 
grub2-mkconfig -o /boot/grub2/grub.cfg 
一般新内核在grub的list最高位所以直接
grub2-set-default 0
重启 一般就可以了
现在的版本以上操作完成后centos7的内核版本

rm -rf /boot/*4.4.180*
rm -rf /lib/modules/*4.4.180*
rm -rf /boot/*3.10.0.old*
rm -rf /lib/modules/*3.10.0.old*
rm -rf /boot/*3.10.0.old*
rm -rf /lib/modules/*3.10.0.old*

rm -rf config-3.10.0-957.el7.x86_64
rm -rf initramfs-3.10.0-957.el7.x86_64.img
rm -rf initramfs-3.10.0-957.el7.x86_64kdump.img
rm -rf symvers-3.10.0-957.el7.x86_64.gz
rm -rf System.map-3.10.0-957.el7.x86_64
rm -rf vmlinuz-3.10.0-957.el7.x86_64
rm -rf /lib/modules/3.10.0-957.el7.x86_64

查看网口pcie信息

lspci -n |grep -i 42:00.0
sudo lspci -n -d 177d:0011 -vvv |grep -i width

linux 查询yum install安装软件的路径 rpm命令

#[搜索指定rpm包是否安装]--all搜索*httpd*
rpm -qa | grep httpd 
#[删除一个rpm包]--erase   
rpm -e file.rpm     
#通过yum安装的软件包,可以通过 rpm -ql 软件包名来查询这个软件包具体都复制到了哪些文件到哪些地方。

sudo yum erase
使用这个命令卸载软件

centos增加脚本到系统自启动

1、将脚本移动到/etc/rc.d/init.d目录下
mv autostart.sh /etc/rc.d/init.d
2、增加脚本的可执行权限
chmod +x autostart.sh
3、添加脚本到开机自动启动项目中
cd /etc/rc.d/init.d
chkconfig --add autostart.sh
chkconfig autostart.sh on

启动脚本里面需要增加以下信息:
添加下面两句到 #!/bin/bash 之后。

# chkconfig: 2345 10 90 
# description: myservice ....
其中2345是默认启动级别,级别有0-6共7个级别。

  等级0表示:表示关机   

  等级1表示:单用户模式   

  等级2表示:无网络连接的多用户命令行模式   

  等级3表示:有网络连接的多用户命令行模式   

  等级4表示:不可用   

  等级5表示:带图形界面的多用户模式   

  等级6表示:重新启动

10是启动优先级,90是停止优先级,优先级范围是0-100,数字越大,优先级越低。

centos下下载指定命令的源码包

下面下载ping的源码包,首先先使用rpm命令查看ping的安装包名称
$rpm -qf `which ping`
iputils-20160308-10.el7.x86_64

下载
$yumdownloader --source iputils-20160308-10.el7.x86_6
iputils-20160308-10.el7.src.rpm 

从rpm格式包中提取源码:
rpm2cpio iputils-20160308-10.el7.src.rpm|cpio -id

yum install scsi-target-utils-1.0.55-4.el7.x86_64 --downloadonly
yumdownloader scsi-target-utils

查询gcc相关宏定义

gcc -posix -E -dM - </dev/null
_BYTE_ORDER

_MIPS_ARCH
_ARCH_PPC64
__x86_64__

linux批量替换指定文件夹中所有文件(包括文件夹名、文件名、文件内容)的指定内容

1、批量替换指定多个文件的文件内容
在指定目录/your/path里,查找包含old_string字符串的所有文件,并用new_string字符串替换old_string字符串。
sed -i "s/old_string/new_string/g"  `grep old_string -rl /your/path`  

2、批量修改指定多个文件的文件名
在指定的路径/your/path下,查找以old_name字符串开头的所有文件,并以new_string替换掉old_string字符串。 
find /your/path -name 'old_name*' | xargs -i echo mv \"{}\" \"{}\" | sed 's/old_name/new_name/2g' | sh  
实例:
find $PWD -name '\[www.java1234.com\]*' | xargs -i echo mv \"{}\" \"{}\" | sed 's/\[www.java1234.com\]/""/2g' | sh
说明:xargs提取查找的内容为参数,-i用于{}的提取,并提取到到指定变量{},echo是为了纯文本输出后面的mv命令,其中{}为变量,sed命令为文本编辑命令,其中可以执行s的替换,后面2g表示替换第二个匹配项。在使用时注意路径的空格和字符串转义。

设置指定用户到vpp组

‘vpp’ Usergroup
When VPP is installed, a new usergroup ‘vpp’ is created. To avoid running the VPP CLI (vppctl) as root, add any existing users to the new group that need to interact with VPP:

$ sudo usermod -a -G vpp user1
Update your current session for the group change to take effect:

$ newgrp vpp

grep用法

忽略匹配二进制文件

grep "external" ./ -nr --binary-files=without-match

全词匹配,不加-w就是模糊匹配

grep -w "abc" # 结果为abc

shell常用脚本命令

-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真 
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真 
-w filename 如果 filename可写,则为真 
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
filename1 -nt filename2 如果 filename1比 filename2新,则为真。
filename1 -ot filename2 如果 filename1比 filename2旧,则为真。

if [[ "$str1" =~ "a" ]] || [[ "$str2" =~ "b" ]] || [[ "$str3" =~ "c" ]] || [[ "$str4" =~ "d" ]]; then
    echo "yes"
else
    echo "no"
fi

一、逻辑运算符 

逻辑卷标	表示意思
1.	关于档案与目录的侦测逻辑卷标!
-f	常用!侦测『档案』是否存在 eg: if [ -f filename ]
-d	常用!侦测『目录』是否存在
-b	侦测是否为一个『 block 档案』
-c	侦测是否为一个『 character 档案』
-S	侦测是否为一个『 socket 标签档案』
-L	侦测是否为一个『 symbolic link 的档案』
-e	侦测『某个东西』是否存在!
2.	关于程序的逻辑卷标!
-G	侦测是否由 GID 所执行的程序所拥有
-O	侦测是否由 UID 所执行的程序所拥有
-p	侦测是否为程序间传送信息的 name pipe 或是 FIFO (老实说,这个不太懂!)
3.	关于档案的属性侦测!
-r	侦测是否为可读的属性
-w	侦测是否为可以写入的属性
-x	侦测是否为可执行的属性
-s	侦测是否为『非空白档案』
-u	侦测是否具有『 SUID 』的属性
-g	侦测是否具有『 SGID 』的属性
-k	侦测是否具有『 sticky bit 』的属性
4.	两个档案之间的判断与比较 ;例如[ test file1 -nt file2 ]
-nt	第一个档案比第二个档案新
-ot	第一个档案比第二个档案旧
-ef	第一个档案与第二个档案为同一个档案( link 之类的档案)
5.	逻辑的『和(and)』『或(or)』
&&	逻辑的 AND 的意思
||	逻辑的 OR 的意思


整数变量表达式
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于


字符串变量表达式
If  [ $a = $b ]                 如果string1等于string2,则为真
                                字符串允许使用赋值号做等号
if  [ $string1 !=  $string2 ]   如果string1不等于string2,则为真       
if  [ -n $string  ]             如果string 非空(非0),返回0(true)  
if  [ -z $string  ]             如果string 为空,则为真
if  [ $sting ]                  如果string 非空,返回0 (和-n类似) 


    逻辑非 !                   条件表达式的相反
if [ ! 表达式 ]
if [ ! -d $num ]               如果不存在目录$num


    逻辑与 –a                   条件表达式的并列
if [ 表达式1  –a  表达式2 ]


    逻辑或 -o                   条件表达式的或
if [ 表达式1  –o 表达式2 ]

    
SYSTEM=`uname -s`    #获取操作系统类型,我本地是linux
if [ $SYSTEM = "Linux" ] ; then     #如果是linux的话打印linux字符串
echo "Linux" 
elif [ $SYSTEM = "FreeBSD" ] ; then   
echo "FreeBSD" 
elif [ $SYSTEM = "Solaris" ] ; then 
echo "Solaris" 
else 
echo "What?" 
fi     #ifend


i=0
for pcieid in 04:00.0 04:00.1 04:00.2 04:00.3
do 
    echo pcie_$i is $pcieid
	i=$(($i+1))
done 


TMP=`lspci |grep Eth | awk '{print $1}'`

i=0
for pcieid in $TMP
do 
    echo pcie_$i is $pcieid
	i=$(($i+1))
done 

#!/bin/bash

while true
do

done

开启nfs

修改NFS配置文件,定义共享
[root@linuxidc ~]#vi /etc/exports
定义向所有客户端共享/share目录,共享方式为可读可写
[root@linuxidc ~]#cat /etc/exports
/home/ych *(rw,sync)

开启nfs服务
systemctl restart nfs
systemctl status nfs
查看exportfs

exportfs

/home/ych

客户机直接mount即可
sudo mount 10.154.102.227:/home/ych /home/ych/mount

git修改上次提交的方法

方法一:用–amend选项
#修改需要修改的地方。
git add .
git commit –amend

注:这种方式可以比较方便的保持原有的Change-Id,推荐使用。

方法二:先reset,再修改
这是可以完全控制上一次提交内容的方法。但在与Gerrit配合使用时,需特别注意保持同一个commit的多次提交的Change-Id是不变的。

否则,就需要Abondon之前的Change,产生一些垃圾不说,操作得不对,会使得简单的事情复杂化,甚至无法合并。

git reset HEAD^
#重新修改
git add .
git commit -m “MSG”

特别注意:为了保持提交到Gerrit的Change不变,需要复制对应的Change-Id到commit msg的最后,可以到Gerrit上对应的Change去复制,参见图1。

设置系统时间

date -s 20/07/2019
date -s 15:00:00

date -s "2019-7-20 15:01:00"

hwclock -w

格式化、挂载磁盘

https://www.cnblogs.com/myvic/p/6816924.html

mount -t ext3 /dev/sda1 mount

centos增加自编译内核模块到系统开机自动安装

1.拷贝ko到指定的内核模块路径
mkdir -p /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/intel/e1000e
cp -a /root/AF8.0.12/module/e1000e-2.0.0.1/src/e1000e.ko /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/intel/e1000e/
2.修改内核模块安装路径依赖
depmod -a
3.重启系统即可
reboot

生成和打patch

给修改过的内核生成patch,然后用生成的patch给未修改过的内核打补丁
其中,目录linux-2.6.31.3为未修改过的内核,目录linux-2.6.31.3_1为修改过的内核
diff -uparN linux-2.6.31.3 linux-2.6.31.3_1/ > mypatch
cd linux-2.6.31.3
patch -p1 < mypatch

通过find命令找到的文件拷贝到一个新的目录

将通过find命令找到的文件拷贝到一个新的目录中 
有这样的一个需求,需要将一部分符合条件的文件从一个目录拷贝到另一个目录中,我通过find命令从源目录查找到符合条件的文件然后使用cp命令拷贝到目标目录: 
方法一 
命令如下: 
find src_dir -name "access.log.2011102[2-6]*" -exec cp {} dst_dir \; 
拷贝文件到远程主机上的目标目录的命令: 
find src_dir -name "access.log.2011102[2-6]*" -exec scp {} 用户名@主机ip:dst_dir \; 
方法二 
find src_dir -name "access.log.2011102[2-6]*" |xargs -i cp {} dst_dir 
或 
find src_dir -name "access.log.2011102[2-6]*" |xargs -I {} cp {} dst_dir 
拷贝文件到远程主机上的目标目录的命令: 
find src_dir -name "access.log.2011102[2-6]*" |xargs -i scp {} 用户名@主机ip:dst_dir 
或 
find src_dir -name "access.log.2011102[2-6]*" |xargs -I {} scp {} 用户名@主机ip:dst_d

find /data/AF8.0.11.zx/module -name "*.ko" |xargs -i cp {} /data/work/test_ko 

ssh scp免密执行命令

sshpass -p "password" cmd
用以上命令执行需要密码的命令,就不用手动输入了

sshpass -p " " scp ych@200.200.153.18:/home/ych/AF8.0.11.zx/kernel-3.10.0/net/core/dev.c /data/AF8.0.11.zx/kernel-3.10.0/net/core/dev.c

dos2unix整个目录

find . -type f -exec dos2unix {} \;

一直循环报错:file“xxxxx”has modification times xxxxx s in the future…

find /your/dir -type f -exec touch {} +

syslog打印

#include <syslog.h>

syslog(LOG_INFO, "ych:%s(%d) ", __FUNCTION__, __LINE__);

AF 内核打印

int g_ych_debug[NR_CPUS] = {0};

extern int g_ych_debug[NR_CPUS];
#define YCH_LOG(fmt, arg...)                                  \
do                                                            \
{                                                             \
    if (!strcmp(((struct mid_packet *)mpkt)->dev->name, "eth10") || \
		!strcmp(((struct mid_packet *)mpkt)->dev->name, "eth11") || \
		!strcmp(((struct mid_packet *)mpkt)->dev->name, "eth12") || \
		!strcmp(((struct mid_packet *)mpkt)->dev->name, "eth13")) \
        printk("ych:%s(%d) "fmt"\r\n", __FUNCTION__, __LINE__, ##arg);  \
}                                                             \
while((0))


#define YCH_LOG(mpkt, fmt, arg...)                                  \
do                                                            \
{                                                             \
}                                                             \
while((0))

perf使用命令

  1. perf无法找到外部模块符号
    必须使它成为一个内核模块,然后perf可以找到它的符号
IN_TREE_DIR=/lib/modules/`uname -r`/kernel/modulename
mkdir -p $IN_TREE_DIR
cp modulename.ko $IN_TREE_DIR
depmod -a
  1. record和report命令
    perf top
    perf record -a -e cycles -o cycle.perf -g sleep 10
    perf record -C 4 -e cycles -o cycle.perf -g sleep 10
    perf record -C 7 -e cycles -o cycle.perf -g sleep 10
    perf record -C 8 -e cycles -o cycle.perf -g sleep 10
    perf record -C 9 -e cycles -o cycle.perf -g sleep 10
    perf record -C 10 -e cycles -o cycle.perf -g sleep 10
    perf record -C 11 -e cycles -o cycle.perf -g sleep 10
    perf record -C 6,7,8,9,10,11 -e cycles -o cycle.perf -g sleep 10

perf report -i nginx_http_zlib_2KB_6worker_core4.perf | more
perf report -i nginx_http_6worker_core4_nozip_ssl_nooffload.perf | more
perf report -i cycle.perf | more

centos配置本地光盘yum源

  1. 将本地ios磁盘挂载到系统,这里我的挂载路径在
   /run/media/ych/CentOS-8-BaseOS-x86_64
  1. 备份系统yum配置文件
   cp -a /etc/yum.repos.d /etc/yum.repos.d_bak
  1. 删除不用的repo文件
   cd /etc/yum.repos.d
   保留CentOS-Media.repo其他repo全部删除
  1. 修改CentOS-Media.repo文件
    改动前:
[c8-media-BaseOS]
name=CentOS-BaseOS-$releasever - Media
baseurl=file:///media/CentOS/BaseOS
        file:///media/cdrom/BaseOS
        file:///media/cdrecorder/BaseOS
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[c8-media-AppStream]
name=CentOS-AppStream-$releasever - Media
baseurl=file:///media/CentOS/AppStream
        file:///media/cdrom/AppStream
        file:///media/cdrecorder/AppStream
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

改动后:

[c8-media-BaseOS]
name=CentOS-BaseOS-$releasever - Media
baseurl=file:///run/media/ych/CentOS-8-BaseOS-x86_64/BaseOS
        #file:///media/cdrom/BaseOS
        #file:///media/cdrecorder/BaseOS
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[c8-media-AppStream]
name=CentOS-AppStream-$releasever - Media
baseurl=file:///run/media/ych/CentOS-8-BaseOS-x86_64/AppStream
        #file:///media/cdrom/AppStream
        #file:///media/cdrecorder/AppStream
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

修改centos sudoers文件,让指定用户sudo免密码

  1. 使用su/su - 命令进入root权限下
  2. 给/etc/sudoers文件添加写权限 chmod u+w /etc/sudoers
  3. 找到“root ALL=(ALL) ALL ”,在后面添加:“test ALL=(ALL) NOPASSWD: ALL”
  4. 去掉 “# %wheel ALL=(ALL) NOPASSWD: ALL” 这行前面的注释
  5. 保存退出,并将/etc/sudoers文件写权限去掉,chmod u-w /etc/sudoers
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值