目前分類:linux (16)
- Aug 09 Sun 2020 00:09
Linux——性能监视神器dstat
- Jan 28 Mon 2019 12:00
工具参考篇
引用網址:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/index.html
- 1. gdb 调试利器
- 2. ldd 查看程序依赖库
- 3. lsof 一切皆文件
- 4. ps 进程查看器
- 5. pstack 跟踪进程栈
- 6. strace 跟踪进程中的系统调用
- 7. ipcs 查询进程间通信状态
- 8. top linux下的任务管理器
- 9. free 查询可用内存
- 10. vmstat 监视内存使用情况
- 11. iostat 监视I/O子系统
- 12. sar 找出系统瓶颈的利器
- 13. readelf elf文件格式分析
- 14. objdump 二进制文件分析
- 15. nm 目标文件格式分析
- 16. size 查看程序内存映像大小
- 17. wget 文件下载
- 18. scp 跨机远程拷贝
- 19. crontab 定时任务
1. gdb 调试利器
GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c++程序员,gdb是必不可少的工具;
- Sep 22 Fri 2017 11:39
CentOS 7 vs CentOS 6的不同
- Apr 11 Tue 2017 21:47
Linux性能优化的两个重要参数(参考)
引用網址:http://www.cnblogs.com/dkblog/archive/2013/01/10/2854591.html
vfs_cache_pressure:
该文件表示内核回收用于directory和inode cache内存的倾向;缺省值100表示内核将根据pagecache和swapcache,把directory和inode cache保持在一个合理的百分比;降低该值低于100,将导致内核倾向于保留directory和inode cache;增加该值超过100,将导致内核倾向于回收directory和inode cache。
缺省设置:100
- Dec 14 Wed 2016 20:56
Centos RPM包制作原理
引用網址:https://my.oschina.net/guol/blog/182310
有时候为了部署自己的包更方便一些,我们会制作自己的RPM包,制作RPM包都有哪些步骤呢,学习这些步骤就是本文的目的。在Centos下制作RPM包依赖rpm-build这个包,所以需要提前安装好该软件包。
- Sep 08 Thu 2016 12:06
CentOS / RHEL v6.x: Install And Configure Serial Console
引用網址:http://www.cyberciti.biz/faq/centos-rhel-6-install-serial-console/
ow do I configure serial console under CentOS Linux or Red Hat Enterprise Linux 6.x running on HP or Dell server?
You need to use setserial command. The command is designed to set and/or report the configuration information associated with a serial port.
- Feb 26 Fri 2016 09:56
TIME-WAIT的TCP快速回收
新增的一组Apache服务器上线以来,我用netstat -an命令发现服务器中有大量状态为TIME-WAIT的TCP连接,于是用/sbin/sysctl -a查看了一下Linux的各项内核参数,并翻阅有关资料,决定修改其中的两项参数,以达到减少TCP连接中TIME-WAIT sockets的目的。
vi /etc/sysctl.conf
- Feb 26 Fri 2016 09:55
解決Too many open files
ulimit -n 65535(可以写入启动文件/etc/rc.d/rc.local中)
vi /etc/sysctl.conf : fs.file-max = 65535
- Feb 26 Fri 2016 09:08
基于BIND实现智能DNS解析
- Feb 26 Fri 2016 09:05
详解 linux 下的DNS配置过程及原理参数
- Feb 25 Thu 2016 22:12
upstart build
第一種方式
下載upstart-0.6.5-13.el6_5.3.src.rpm
- Feb 25 Thu 2016 22:08
自制LINUX BOOT ON USB
#建立usb磁區
fdisk /dev/sdb
- Feb 25 Thu 2016 22:03
usblinux 把linux系统安装到u盘里
引用網址:http://zhidao.baidu.com/question/1366252084697098619.html
加电
BIOS 找启动方式,找设备
MBR
grub
vmlinux initrd
产生init
/etc/inittab -->找到应该启动的级别
按照不同的级别启动不同类型的服务 /etc/rcX.d/
/etc/rc.sysinit
/etc/rc.local
产生终端 可以登录
ls /root/install.log
livecd 不用安装,直接可以使用系统的CD,DVD
回顾开机启动的过程:
开机-->bios(配置主板的程序,basic input and output system,加电自检,找到启动设备的编号)-->找到mbr(master bootloader record,它是属于硬盘的0磁盘0扇区)-->grub-->通过grub找到vmlinuz和initrd(驱动硬件)--> 内核启动,产生init进程-->/etc/inittab(确定系统的启动级别)-->/etc/rc.sysinit(获取主机的网络环境和主机类型,测试与载入设备,是否启动selinux,模块的加载,设置系统时间.................)-->/etc/rc.local
与USB有关的模块
[root@li ~]# lsmod |grep ci
uhci_hcd 25421 0
ohci_hcd 24553 0
ehci_hcd 33869 0
--因为U盘分区在windows下不认,所以我这里两G的U盘,直接都用来做usblinux
1,首先删除U盘里原有分区
第一种:用fdisk /dev/sdb,然后用d命令去删除
第二种:dd if=/dev/zero of=/dev/sdb bs=1024 count=1 --删除磁盘分区信息
重新按照规划的去分区:
Disk /dev/sdb: 2000 MB, 2000570368 bytes
62 heads, 62 sectors/track, 1016 cylinders
Units = cylinders of 3844 * 512 = 1968128 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 763 1466455 83 Linux
/dev/sdb2 764 1016 486266 82 Linux swap / Solaris
Command (m for help): w
--或者分为1G做usblinux,500m做swap,500m留给fat32
Disk /dev/sdb: 2000 MB, 2000570368 bytes
62 heads, 62 sectors/track, 1016 cylinders
Units = cylinders of 3844 * 512 = 1968128 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 509 978267 83 Linux
/dev/sdb2 510 764 490110 82 Linux swap / Solaris
/dev/sdb3 765 1016 484344 b W95 FAT32
Command (m for help): w
[root@li ~]# partprobe
--有些U盘报kerenl相关的两到三段信息,就不要使用多分区,就分一个分区。
2,格式化分区,并挂载
[root@li www]# partprobe --fdisk分区后,都要用此命令刷新
--这一步,有很多U盘会报错,如果报错的话最好去windows虚拟机下全格一下,再重新在linux下来做
[root@li www]# mkfs -t ext3 /dev/sdb1
[root@li www]# mkswap /dev/sdb2
[root@li www]# mkdir /usb
[root@li www]# mount /dev/sdb1 /usb/ --建立一个目录,挂载/dev/sdb1
3,安装基本的目录结构
准备光盘iso文件,挂载到一个目录去
[root@li www]# mount /share/iso/rhel-5.4-server-i386-dvd.iso /yum/ -o loop
[root@li www]# cd /yum/Server/
[root@li Server]# rpm -qip filesystem-2.4.0-2.i386.rpm
Description :
filesystem 软件包是安装在红帽 Linux 系统上的一个基本
软件包。filesystem 含有一个 Linux 操作系统的基本目录布局,
包括各目录的正确许可权限。
要使用--nodeps脱离依赖性才可以安装
[root@li Server]# rpm -ivh --root=/usb/ --nodeps filesystem-2.4.0-2.i386.rpm
或者先装setup包,再装filesystem包
[root@li ~]# rpm -ivh --root=/usb /share/yum/Server/setup-2.5.58-7.el5.noarch.rpm
[root@li ~]# rpm -ivh --root=/usb /share/yum/Server/filesystem-2.4.0-2.i386.rpm
[root@li ~]# ls /usb --一个基本的目录布局就已经装好了
bin etc lost+found opt sbin sys var
boot home media proc selinux tmp
dev lib mnt root srv usr
4,安装相应的软件包,也就是定制功能
下面最主要的一步就是安装系统的软件包,首先要思考安装的这个USB系统需要什么功能,比如最基本的命令ls,cd等
这里可以选择使用busybox(是一个基本命令工具集),但如果对其不是特别熟悉,还是按基本命令一个一个的来选
首先要装bash包,包含50多个内部命令
[root@dns Server]# chroot /usb --不装bash无法 chroot进去
chroot: cannot run command `/bin/bash': No such file or directory
[root@dns Server]# rpm -qf /bin/ls
coreutils-5.97-23.el5
[root@dns Server]# rpm -qf `which vi`
vim-minimal-7.0.109-6.el5
[root@dns Server]# rpm -qf `which vim`
vim-enhanced-7.0.109-6.el5
[root@dns Server]# rpm -qf `which ping`
iputils-20020927-46.el5
[root@dns Server]# rpm -qf `which mount`
util-linux-2.13-0.52.el5
[root@dns Server]# rpm -qf `which tar`
tar-1.15.1-23.0.1.el5
[root@dns Server]# rpm -qf `which rpm`
rpm-4.4.2.3-18.el5
[root@dns Server]# rpm -qf `which man`
man-1.6d-1.1
[root@dns Server]# rpm -qf `which ssh`
openssh-clients-4.3p2-36.el5
[root@dns Server]# rpm -qf `which awk`
gawk-3.1.5-14.el5
[root@dns Server]# rpm -qf `which sed`
sed-4.1.5-5.fc6
[root@dns Server]# rpm -qf `which grep`
grep-2.5.1-55.el5
[root@dns Server]# rpm -qf `which find`
findutils-4.2.27-6.el5
[root@dns Server]# rpm -qf `which locate`
mlocate-0.15-1.el5.2
[root@dns Server]# rpm -qf `which useradd`
shadow-utils-4.0.17-14.el5
[root@dns Server]# rpm -qf `which passwd`
passwd-0.73-1
[root@dns Server]# rpm -qf `which init`
SysVinit-2.86-15.el5
[root@dns Server]# rpm -qf `which clear`
ncurses-5.5-24.20060715
[root@dns Server]# rpm -qf `which ps`
procps-3.2.7-11.1.el5
[root@dns Server]# rpm -qf /usr/bin/which
which-2.16-7
[root@dns Server]# rpm -qf `which ifconfig`
net-tools-1.60-78.el5
[root@dns Server]# rpm -qf `which fdisk`
util-linux-2.13-0.52.el5
[root@dns Server]# rpm -qf `which partprobe`
parted-1.8.1-23.el5
[root@li ~]# rpm -qf `which showmount`
nfs-utils-1.0.9-42.el5
[root@li ~]# rpm -qf `which service`
initscripts-8.45.30-2.el5
[root@li Server]# rpm -qf `which bzip2`
bzip2-1.0.3-4.el5_2
[root@li Server]# rpm -qf `which gzip`
gzip-1.3.5-10.el5
--经过上面对基本命令的包查找,最终安装下列这些基本包
[root@dns Server]# yum install --installroot=/usb bash coreutils vim-minimal vim-enhanced iputils util-linux tar rpm man openssh-clients gawk sed grep findutils mlocate shadow-utils passwd SysVinit ncurses procps which net-tools util-linux parted nfs-utils initscripts bzip2 gzip
--如果上面步骤安装完后,有忘记安装的包,再使用yum装不上去
[root@li ~]# yum install --installroot=/usb iptables
Loaded plugins: downloadonly, rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
No package iptables available.
Nothing to do
--所以再安装的话使用rpm去安装
[root@li ~]# rpm -ivh --root=/usb /share/yum/Server/iptables-1.3.5-5.3.el5.i386.rpm
5,安装启动引导文件和模块
[root@li Server]# chroot /usb --使用此命令,就是以/usb目录为根目录了
bash-3.2# ls /boot/ --可以看到现在usblinux里的/boot目录没有任何文件
bash-3.2# exit --用exit退出chroot模式
exit
[root@li ~]# cp /etc/skel/.bash* /usb/root/ -rf
--拷环境变量模版过去
定制支持usb存储启动的ramdisk(initrd文件)
[root@li Server]# mkinitrd --with usb_storage /usb/boot/initrd.img `uname -r`
从真机上拷贝vmlinuz到usblinux对应目录
[root@li Server]# cp /boot/vmlinuz-2.6.18-164.el5 /usb/boot/vmlinuz
从真机上拷贝内核模块到usblinux对应目录
[root@li Server]# cp /lib/modules/2.6.18-164.el5/ /usb/lib/modules/ -rf
拷内核源码,可选步骤
[root@li Server]# mkdir /usb/usr/src/kernels/
[root@dns Server]# cp /usr/src/kernels/2.6.18-164.el5-i686/ /usb/usr/src/kernels/ -rf
6,安装并手动写grub
--如果是用真实机分区来代替U盘做usblinux的话,这一步不用做,只需要把这个分区的引导信息加入到真实机的配置文件里就可以了
安装grub包,用--nodeps脱离依赖性
[root@li Server]# rpm -ivh --nodeps --root=/usb grub-0.97-13.5.i386.rpm
--脱离依赖安装,会没有splash.xpm.gz图片,可以从真机拷一个
也可以按下面安装
[root@li ~]# rpm -ivh --root=/usb /share/yum/Server/*logos*
warning: /share/yum/Server/redhat-logos-4.9.16-1.noarch.rpm
[root@li ~]# rpm -ivh --root=/usb /share/yum/Server/grub-0.97-13.5.i386.rpm
--但这样安装完后,grub目录下只有一个背景图片
[root@dns Server]# ls /usb/boot/grub/
splash.xpm.gz
grub-install安装到/dev/sdb
[root@li Server]# grub-install --root-directory=/usb --recheck /dev/sdb
--如果是用真实机分区来做的话,这里/dev/sdb改成/dev/sda
--grub-install之后,grub目录的基本文件就有了(除了配置文件grub.conf)
[root@dns Server]# ls /usb/boot/grub/
device.map iso9660_stage1_5 splash.xpm.gz vstafs_stage1_5
e2fs_stage1_5 jfs_stage1_5 stage1 xfs_stage1_5
fat_stage1_5 minix_stage1_5 stage2
ffs_stage1_5 reiserfs_stage1_5 ufs2_stage1_5
修改device.map
[root@li Server]# vim /usb/boot/grub/device.map
(hd0) /dev/sdb
--如果是用真实机分区来做的话,这里/dev/sdb改成/dev/sda
手动写grub.conf文件
--下面是以u盘来做的写法
[root@li Server]# vim /usb/boot/grub/grub.conf
default=0
timeout=-1
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title usblinux
root (hd0,0)
kernel /boot/vmlinuz ro root=/dev/sdb1
initrd /boot/initrd.img
=============================================
--因为我这次是使用真实机的/dev/sda14来做根./dev/sda15做swap
上面的第6步不用做,只做这一小段就好了
所以把下面这段加到真实机的/boot/grub/grub.conf里
title usblinux
root (hd0,13) --因为我模拟的这个usblinux的根为sda14,所以这里写13
kernel /boot/vmlinuz ro root=/dev/sda14
initrd /boot/initrd.img
# grub-install /dev/sda --加完后,就grub-install安装一下
--------------------------------------------------
7,拷贝密码文件,拷贝环境变量
--这一步可以不拷,因为现在usblinux上默认有passwd和group文件,没有shadow和gshadow
--里面默认有root用户和系统用户
[root@li Server]# cp /etc/passwd /usb/etc/passwd
[root@li Server]# chroot /usb/ --再次chroot到/usb目录,提示符就变了
[root@li /]# pwconv --同步/etc/passwd和/etc/shadow
[root@li /]# grpconv --同步/etc/group和/etc/gshadow
[root@li /]# passwd root --修改root的密码,到时候登录需要
8,手动编写fstab文件
[root@li /]# vim /etc/fstab --注意这里是usblinux系统里的fstab,因为已经chroot进来了
/dev/sdb1 / ext3 defaults 0 0
/dev/sdb2 swap swap defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
--用真实机的/dev/sda14来做根./dev/sda15做swap的话,就把上面的sdb1换成sda14,sdb2换成sda15,其它的不变
9,让usblinux支持网络
从真机拷贝eth0的配置文件到usblinux对应目录中:
[root@li Server]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /usb/etc/sysconfig/network-scripts/
修改网络配置文件,可以改成静态IP
[root@li Server]# vim /usb/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
从真机拷贝全局网络配置文件到usblinux对应目录中
[root@li Server]# cp /etc/sysconfig/network /usb/etc/sysconfig/
从真机拷贝modprobe.conf到usblinux对应目录中
[root@li Server]# cp /etc/modprobe.conf /usb/etc/
alias eth0 8139too --注意这一句在不同的系统里可能要修改,现在这里的网卡模块是8139too,所以这里是8139too就可以;这个在虚拟机里为pcnet32
然后重启系统,在bios选择使用usb引导进入系统,去验证功能
--如果是真实机分区做的,就不用改bios,直接在grub选择菜单选择usblinux引导进入就可以了
-------------------------------------------------------------
上面的步骤里还没有去加的功能有 动态获取IP (需要安装dhclient包)
没有yum命令,没有图形界面 (有需要的话,自己使用rpm安装yum命令后,使用yum安装图形包的两个组)
启动时有大量无用信息, 可以在grub.conf里加rhgb quiet来解决
但重启后还会有一个错误信息:
(会有一个usb_storage的报错信息,但此信息没有影响,是mkinitrd --with usb_storage时造成的)
如果一定要除掉这句报错,可以手工修改initrd文件
# cd /tmp
# cp /usb/boot/initrd.img /tmp/initrd.img.gz
# gunzip initrd.img.gz
# cpio -i --make-directories < initrd.img
# rm initrd.img
# vim init --打开,删除以下的几行
echo "loading usb-storage.ko module"
insmod /lib/usb-storage.ko
echo waiting for dirver initialization
stabilized /proc/bus/usb/devices
echo waiting for driver initializtin
# find . | cpio -c -o > ../initrd.img
# gzip -9 ../initrd.img
# cp ../initrd.mg.gz /usb/boot/initrd.img
=============================================================
- Feb 25 Thu 2016 21:56
CentOS 6.5玩转自制Linux、远程登录及Nginx安装测试
- Feb 25 Thu 2016 21:48
20命令行工具來監控Linux性能
引用網址:http://www.tecmint.com/command-line-tools-to-monitor-linux-performance/
這真是每一個非常艱鉅的任務系統或網絡管理員監控和調試Linux的系統性能每一天的問題。作為一個後的Linux管理員的5年在IT行業,我才知道那是多麼難以進行監督,並保持系統正常運行。出於這個原因,我們已經編制的名單前20名經常使用的命令行監控工具,可能是每一個有用的Linux / Unix系統管理員。這些命令的各種口味下提供的Linux和可以是有用的,以監測和找到性能問題的實際原因。這裡顯示此命令列表是非常夠你挑一個適合您的監控方案。