Don’t Repeat Yourself
1. ssh工具推荐
xshell,可以把xftp安装上,传输文件方便
2. 搭建本地yum源
当操作系统安装后,难免会出现有些工具未安装,如果通过rpm包手动安装
又会出现大量的依赖关系需要处理,我们可以通过搭建本地的yum源让yum来完成自动安装,从而不需要处理依赖。
-
挂载光盘或者iso
mount /dev/sr0 /mnt
或者
mount -o loop /*.iso /mnt 安装createrepo
rpm -ivh createrepo-x.y.z.rpm
如果有依赖,先安装依赖-
添加安装源
cd /etc/yum.repos.d/
mkdir back
mv * back/
cp back/cenos-base.repo ./
删除centos-base.repo中的内容,只留以下内容
name=local
baseurl=file:///mnt/—>这里的目录mnt就是1中挂载的光盘位置
enabled=1
gpgcheck=0 更新安装源
yum clean all-
安装想要的软件
如安装java
yum -y install java-1.8.0*
-
指定安装目录
A. mkdir /home/yum-installB. yum -y install java-1.8.0* –installroot=/home/yum-install
执行installroot时,如是第一次,会自动创建相关目录,并用/etc/yum.repose.d/下的*repo。 以后的执行如果指定了installroot,那么将会用installroot目录下的/etc/yum.repose.d,所以需要执行C
C. cp /etc/yum.repose.d/*.repo /home/yum-install/etc/
3. linux访问windows
1. 首先在windows端设置共享目录src
2. 在linux端输入命令
mount.cifs //192.168.30.100/src /tmp/ -o username=cq,nounix,noserverino password=00000000 domain=WORKGROUP soft directio rw
注意:其中username、password、domain需要和自己Windows共享目录的设置一致。
4. linux访问linux
scp filename root@192.168.30.25:/home
5. windows 访问linux
1. linux需要已安装samba服务器
2. 添加需要共享的目录
在配置文件/etc/samba/smb.conf中添加如下几行:
[vppclean]
path = /home/cq/genvpn
available = yes
browseable = yes
public = yes
writable = yes
admin usrs = root
3. 给smb添加root用户的密码
smbpasswd -a root 11111111
4. 重启服务
service smb restart
5. windows 访问linux的共享
在我的电脑上点击鼠标右键,选择“映射网络驱动器”
在弹出的窗口中输入"\\192.168.30.9\vppclean"
6. 添加鼠标右键
a. 在HKEY_CLASSES_ROOT\*\shell添加项"Edit with Vim"
b. 再在项"Edit with vim"下添加子项“command”,把键值设定为
“D:\cq\tool\VIM\gVimPortable_7.4\vim74\gvim.exe”
-p --remote-tab-silent "%1"
c. 根据步骤b可以把任何命令添加到鼠标右键
7. linux不启动图形界面
systemctl set-default multi-user.target
等同于
ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
8. 解压rpm包
平常安装rpm包时,不清楚它安装了哪些东西,下面命令
可以从rpm包中提取出目录结构
rpm2cpio xx.rpm | cpio -div
也可以使用-vv参数得到更多内容输出
rpm -ivv xx.rpm
9. 内核模块在操作系统光盘的位置
以centos7.0安装光盘为例,内核模块在LiveOS/squashfs.img中,查看方式如下。
mount -o loop squashfs.img /mnt/m1
10. 解压cpio或者img
cpio -idmv < filenam.cpio/filename.img
11. 同步代码文件,防止误删除 #
1 #!/bin/sh
2 src=$1
3 dst=$2
4
5 inotifywait -mrq -e modify,delete,create,attrib $src | while read files
6 do
7 rsync -avzP $src $dst & >/dev/null
8 done
12. 在所有的.c文件中查找字符串
find ./ -name *.c | xargs grep CLIB_DEBUG
13. tar解压时使用系统的当前时间
使用参数m tar zxvfm *.tgz
14. iptables 从定向流 #
iptables -t nat -A POSTROUTING -s 192.168.0.56/32 -d 192.168.2.156/32 -p udp -j SNAT --to-source 192.168.2.78
conntrack -D
15. 挂载img文件
- kpartx -av *.img 会出现以下输入
add map loop0p1 (253:3): 0 509952 linear /dev/loop0 2048
add map loop0p2 (253:4): 0 3523024 linear /dev/loop0 512000 - 挂载分区
mount /dev/mapper/loop0p1 /tmp
16. 查看进程中的线程在哪个core运行
top -H -p 进程ID
17. 查看某个线程的运行栈
pstack 进程ID/线程ID
18. 创建项目分支
1. 项目长期存在的两个分支
master: 主分支,负责记录上线版本的迭代,该分支的代码与线上代码是完全一致的。
develop: 开发分支,该分支记录相对稳定的版本,所有的feature分支和bugfix分支都
从该分支创建。
2. 其他分支为短期分支,其完成功能开发之后需要删除
feature/*: 特性(功能)分支,用于开发新的功能,不同的功能创建不同的功能分支,功能
分支开发完成并自测通过之后,需要合并到develop分支,之后删除该分支。
bugfix/*: bug修复分支,用于修复不紧急的bug,普通bug均需要创建bugfix分支开发,
开发完成自测没问题后合并到develop分支后,删除该分支。
release/*: 发布分支,用于代码上线准备,该分支从develop分支创建,创建之后由测试
同学发布到测试环境进行测试,测试过程中发现bug需要开发人员在该release
分支上进行bug修复,所有bug修复完后,在上线之前,需要合并该release分支
到master分支和develop分支。
hotfix/*: 紧急bug修复分支,该分支只有在紧急情况下使用,从master分支创建,用于紧急
修复线上bug,修复完成后,需要合并该分支到master分支以便上线,同时需要再
合并到develop分支。
19. 查看文件被哪些进程占用?
lsof | grep hugepages
20. make时提示up to date
是因为makefile文件里面的target与目录名字同名
解决方法,把该名字加入到.PHONY中
21. 关掉selinux
setenforce 0
22. 启动shell时默认执行命令
当通过ssh连接到linux时,会打开一个shell,shell会首先读取文件/etc/profile 来设置当前shell的环境变量,用户就可以在此文件中加入自己需要的命令,如打开shell时默认产生core-dump:在/etc/profile 中添加 ulimit -c unlimited
23. 查看有几个CPU,每个CPU的物理核数,逻辑core数
cat /proc/cpuinfo
信息如下:
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 55
model name : Intel(R) Celeron(R) CPU J1900 @ 1.99GHz
stepping : 8
microcode : 0x829
cpu MHz : 2400.000
cache size : 1024 KB
physical id : 0
siblings : 4
core id : 3
cpu cores : 4
CPU个数:physical id
每个CPU的物理核数: cpu cores
逻辑core数:processor
24. 查看内存的频率,是否多通道
使用如下命令可查看平台下的内存通道。
dmidecode -t memory | grep Locator
dmidecode -t memory | grep Speed
25. 创建RPM包
0. 制作RPM包的几个关键阶段
%prep阶段
这个阶段主要完成对源代码的解压和打补丁,系统把源码包从SOURCES解压到BUILD目录,并切换到BUILD下的压缩包解压生成的目录里,完成打补丁等准备工作,最后退回到BUILD目录下。
%build
这个阶段开始构建包,就是执行常见的configure和make操作
%install
这个阶段就是执行make install操作。这个阶段会在BUILDROOT目录里建好目录结构,然后将需要导报到rpm软件包里的文件从BUILD里拷贝到BUILDROOT里对应的目录里。
%clean阶段
执行编译完成后的一些清理工作,相当于make clean
%files阶段
这里是包含制作rpm包文件的阶段,它主要用来说明会将%{buildroot}目录下的哪些文件和目录最终打包到rpm包里。
其他附加阶段
%pre rpm包安装前执行的脚本
%post rpm包安装后执行的脚本
%preun rpm包卸载前执行的脚本
%postun rpm包卸载后执行的脚本
常见宏定义
在/usr/lib/rpm/macros文件中定义了各种宏变量
1. 写spec文件
2. 查看spec文件是否正确
rpmspec -P xxx.spec
此命令会预分析spec文件
26. Linux开机启动顺序
1. 加载内核
2. 启动init(/etc/inittab)内核启动的第一个用户级别的进程,其pid始终为1,其它的开机启动脚本都是通过这个进程来启动的
3. 执行/etc/rc.d/rc.sysinit这时init执行的第一个脚本,这个脚本主要的工作是进行系统的初始化。
4. 根据inittab中的设置执行/etc/rc.d/rc*.d,运行设置的级别的脚本
5. 执行/etc/rc.d/rc.local,在各级别服务启动后,会执行该文件。
6. /sbin/mingetty,等待用户登录
27. 查看本机udp程序
netstat -anup
28. gdb 调试正在运行的进程
gdb attach process_id
29. centos 插拔网线导致掉ip
网口的状态变化会导致网口的ip掉,原因是NetworkManager后台守护程序导致的
关闭此服务
systemctl disable NetworkManager.service
查看运行状态
systemctl -l status NetworkManager
30. 查看Linux系统属于哪个操作系统版本
lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.0.1406 (Core)
Release: 7.0.1406
Codename: Core
31. 启效rc.local服务
systemctl enable rc-local
查看状态 systemctl -l status rc-local