Don’t Repeat Yourself

1. ssh工具推荐

xshell,可以把xftp安装上,传输文件方便

2. 搭建本地yum源


当操作系统安装后,难免会出现有些工具未安装,如果通过rpm包手动安装
又会出现大量的依赖关系需要处理,我们可以通过搭建本地的yum源让yum来完成自动安装,从而不需要处理依赖。


  1. 挂载光盘或者iso

    mount /dev/sr0 /mnt
    或者
    mount -o loop /*.iso /mnt

  2. 安装createrepo
    rpm -ivh createrepo-x.y.z.rpm
    如果有依赖,先安装依赖

  3. 添加安装源

    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

  4. 更新安装源
    yum clean all

  5. 安装想要的软件

    如安装java

    yum -y install java-1.8.0*

  6. 指定安装目录
    A. mkdir /home/yum-install

    B. 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/genvpnavailable = yesbrowseable = yespublic = yeswritable = yesadmin 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/sh2 src=$13 dst=$24 5 inotifywait -mrq  -e modify,delete,create,attrib $src  | while read files6 do7     rsync -avzP $src $dst & >/dev/null8 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文件

  1. 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
  2. 挂载分区
    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   : 3vendor_id   : GenuineIntelcpu family  : 6model       : 55model name  : Intel(R) Celeron(R) CPU  J1900  @ 1.99GHzstepping    : 8microcode   : 0x829cpu MHz     : 2400.000cache size  : 1024 KBphysical id : 0siblings    : 4core id     : 3cpu cores   : 4    CPU个数:physical id
每个CPU的物理核数: cpu cores
逻辑core数:processor

24. 查看内存的频率,是否多通道

使用如下命令可查看平台下的内存通道。dmidecode -t memory | grep Locatordmidecode -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 -aLSB 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

开发人员的linux操作系统Tips相关推荐

  1. 开发人员学Linux(10):CentOS7安装配置代码质量管理平台SonarQube6.4

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 上一章讲述了如何配置使用源代码管理工具SVN并使之与Apache集成,从而实现代码的变更可追溯,虽然在大多数团队里强 ...

  2. 开发人员学Linux(4):使用JMeter对网站和数据库进行压力测试

    前言 表面看来,JMeter与本系列课程似乎关系不大,但实际上在后面的很多场景中起着重要作用:如何获知修改了某些代码或者设置之后系统性能是提升了还是下降了呢?商业的压力测试工具LoadRunner确实 ...

  3. 开发人员学Linux(10):CentOS7安装配置代码质量管理平台SonarQube

    1.前言 上一章讲述了如何配置使用源代码管理工具SVN并使之与Apache集成,从而实现代码的变更可追溯,虽然在大多数团队里强调代码提交之前必须找团队中经验丰富的人来审核通过后方可提交,但这一条有时候 ...

  4. 开发用什么linux系统版本,6种适用于开发人员的Linux发行版本!

    Linux是非常流行的操作系统,也是非常适用于开发人员和程序员的平台,众所周知,Linux有很多发行版本,所针对的人群也是不同的,那么哪些Linux发行版本适用于开发人员呢?我们来看看吧. 1.Fed ...

  5. 开发人员学Linux(3):CentOS7中安装JDK8和Tomcat8

    题外话:直到今天开始写本系列的第三篇时本人才想好为这个系列取一个名字,本系列不是为Linux运维人员准备的,而是主要为开发人员准备的,包括但不限于: 希望了解Linux的开发人员: 需要在Linux上 ...

  6. 开发人员学Linux(1):VirtualBox中安装CentOS7过程记录

    2019独角兽企业重金招聘Python工程师标准>>> 在开发过程中常常需要进行一些预研,而有些操作对操作系统可能具有破坏性且是不可恢复的,或者需要在不同的操作系统中去观察结果,虽然 ...

  7. 开发人员学Linux(13):CentOS7安装配置IT设备监控系统Zabbix

    1.前言 在前一篇讲述了如何安装Memcached和Redis,在这一篇主要讲述如何安装企业级IT设备监控系统Zabbix.本人曾在某大型集团公司信息化部门工作,公司在多个城市以及一个城市的多个区有办 ...

  8. 开发人员学Linux(8):CentOS7编译安装Subversion及Apache并集成

    1.前言 本篇将介绍如何编译安装SVN服务器端管理软件subverion和Web服务器Apache.本来在前面的系列文章已经讲过使用Nginx作为Web服务器的,所以我一直在找有关subverion集 ...

  9. 开发人员学Linux(2):VirtualBox中安装CentOS7系统设置

    上一篇<VirtualBox中安装CentOS7过程记录>中讲述了如何安装VirtualBox和在VirtualBox中安装CentOS7,但是限于篇幅有很多问题没有展开,在本篇将展开介绍 ...

  10. linux tomcat 进程杀掉_测试开发人员必备Linux命令

    Hi-新朋友,记得点蓝字关注我们哟 大家耳熟能详的移动应用有很多,但是后台服务器系统基本千篇一律都是Linux,无非出于其免费开源的特性,正如android在手机上的普及.作为一款移动应用测试人员中的 ...

最新文章

  1. deep learning:RBM公式推导+源码 ----- C++
  2. 南通大学计算机专业分数线2020,2020南通大学录取分数线_历年各专业分数线(2017-2019)_各省投档线_一品高考网...
  3. idea 项目jar反编译java_带你上手阿里开源的 Java 诊断利器:Arthas
  4. (二)双线性插值python实现
  5. c java 内部类_java程序中能否在内部类当中再定义一个内部类?
  6. 通信原理matlab实验课程设计,通信原理matlab课程设计报告
  7. (06)Verilog HDL组合逻辑:always
  8. 最暖的10个小故事,看完心都融化了
  9. JavaScript DOM基础2
  10. Kettle_设置全局变量
  11. 数据库:如何安装SQL,手把手教你
  12. Logit模型和Logistic模型
  13. 对称加密算法基本介绍
  14. 各种内部排序方法及其比较实验报告
  15. 电商运营如何打造爆品?
  16. CentOS7中使用yum安装Nginx
  17. 尚硅谷-SpringSecurity
  18. Windows 10 磁盘重新分区
  19. nginx.conf配置文件说明
  20. [图形学] 基于物理的渲染(PBR)

热门文章

  1. CCNA配置试验之八 帧中继——点到点子接口(point-to-point)
  2. ie浏览器文档模式设置
  3. CommonAPI-SomeIP 使用
  4. 物联网是什么意思?物联网概念是什么?
  5. 刚安装mysql怎么设置密码_安装完MySQL数据库设置密码
  6. 基于STM32f103c8t6的红外接收发送
  7. Windows环境下sublime text 3搭建前端开发环境
  8. 【机器学习】左逆、右逆、伪逆和广义逆的概念理解
  9. 8086微处理器介绍
  10. JS中更改样式属性或者更改类名