You have that server you can’t reboot but need to patch the kernel NOW (eg. #kernel flaw found#).. well, you can try this out.
First of all, we print out running kernel version:
# uname -r 2.6.32-71.29.1.el6.i686
Ok, we have to patch:
# yum update kernel*
Grab the kexec tools:
# yum install kexec-tools
Now we get last installed kernel version release and put it on a var:
# latestkernel=`ls -t /boot/vmlinuz-* | sed "s/\/boot\/vmlinuz-//g" | head -n1` # echo $latestkernel 2.6.32-220.4.1.el6.i686
Now we need to load the new kernel version in memory:
# kexec -l /boot/vmlinuz-${latestkernel} --initrd=/boot/initramfs-${latestkernel}.img --append="`cat /proc/cmdline`"
Finally, we can issue a reset:
# kexec -e
..and.. wow, we lost the system! ..Well, not exactly.
The system will “restart without restarting”..something like a fast reboot, without performing BIOS checks (and you know how long can a full system restart last).
# uname -r 2.6.32-220.4.1.el6.i686
It worked!
* Be aware that kernel reset will perform a connection reset as well, together with resetting your uptime, so if you’re searching for something to grant your uptime record while security patching, well, this is not for you.
# rpmbuild -bb BitTornado.spec <省略> 英語の場合 Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/tmp/BitTornado-0.3.18-1-buildroot error: Installed (but unpackaged) file(s) found: 伸張ファイルの検査中: /usr/lib/rpm/check-files /var/tmp/BitTornado-0.3.18-1-buildroot エラー: インストール済み(ただし未伸張)ファイルが見つかりました: /usr/local/bin/bt-t-make.pyc /usr/local/bin/bt-t-make.pyo /usr/local/bin/btcompletedir.pyc <省略>
以下のチェックコマンドがマクロに定義されているためっぽい。
# rpmbuild --showrc | grep __check -14: __check_files /usr/lib/rpm/check-files %{buildroot}
–defineオプションで定義されているマクロを消してあげれば、OK。
# rpmbuild -bb --define="__check_files %{nil}" BitTornado.spec
# virsh net-destroy default # virsh net-undefine default # service libvirtd restart # ifconfig
$ sudo apt-get install pv
$ pv -L 3m 1G.bin > hoge 14MB 0:00:38 [2.87MB/s] [========> ] 11% ETA 0:05:03
$ cat 1G.bin |pv -L 3m > hoge 9MB 0:00:03 [ 3MB/s] [ <=>
sshで使う時も、パイプであれば何ら変わらない。
$ ssh [email protected] 'cat ~/big-data.bin' | pv -L 3m > big-data.bin
linux:top中显示每个进程正在哪个CPU上执行 运行top后,按1可以看见每个CPU上的繁忙情况以及IOWAIT。 可是,我希望看到,到底哪个进程在哪个CPU上执行,到底是哪个进程导致IOWAIT很高。 认真看man top,终于找到方法: 执行top后,按f,按j,然后按空格退出,这样就出现一列#C,可以看见当前进程正在哪个CPU上执行了。 按W(大写的W),将top的配置写入配置文件,下次打开top的时候就能看见同样的配置了。
singlecore
#!/bin/bash cpus_dir="/sys/devices/system/cpu" for cpu in $(ls "$cpus_dir" | grep 'cpu[0-9]\+')do cpu_online="$cpus_dir/$cpu/online" if [[ -e "$cpu_online" && $(cat $cpu_online) = 1 ]] then echo 0 > "$cpu_online" fi done
multicore
#!/bin/bash cpus_dir="/sys/devices/system/cpu" for cpu in $(ls "$cpus_dir" | grep 'cpu[0-9]\+')do cpu_online="$cpus_dir/$cpu/online" if [[ -e "$cpu_online" && $(cat $cpu_online) = 0 ]] then echo 1 > "$cpu_online" fi
修改2个文件。 1./etc/security/limits.conf * - nofile 1006154 2./etc/pam.d/login session required /lib/security/pam_limits.so ulimit -a查看 下 OK ulimit -HSn 1006514 只对当前用户生效,重启也失效
mount -o -loop megasr-13.15.1218.2009-1-rhel50-u3-all.img /root/megasr cd /mnt gzip -cd /tftpboot/initrd-centos-5.3-i386-bin-DVD.img |cpio -ivd cd modules gzip -cd modules.cgz |cpio -vid cp /root/megasr/2.6.18-128.el5/i686/megasr.ko 2.6.18-128.el5/i686/ rm -rf modules.cgz find 2.6.18-128.el5 |cpio -o -H crc |gzip -9 > modules.cgz rm -rf 2.6.18-128.el5/ cd .. modinfo -F alias /root/megasr/2.6.18-128.el5/i686/megasr.ko |sed -e 's/^/alias /' -e 's/$/ megasr/' >> modules.alias find . |cpio -o -H newc |gzip -9 > /tftpboot/initrd7.img
kudzu --probe --class=network
1) Create a RAID array using the Intel Embedded Server RAID Technology II RAID BIOS Configuration Utility. 2) Boot your system using RHEL disc one. 3) At boot prompt type “linux nostorage” 4) Proceed with the installation and you will see a screen which provides you with [Add device] button. 5) Click “Add Device”, a list of all drivers will appear 6) Press F2 to select driver from floppy 7) Insert the floppy with the Installer DUD image 8 ) Select device that corresponds to the floppy drive (sda in case of USB floppy) 9) After the driver is loaded the list of all drivers will appear again 10) Scroll down the driver list and select. Update megaide driver in the list 11) Click OK 12) The driver will be loaded and the list of detected devices will appear 13) Click Done 14) Complete installation with RHEL CD
http://caspian.dotconf.net/menu/Software/SendEmail/
smartctl -A /dev/sdc
sudo !! 以 root 帐户执行上一条命令。 python -m SimpleHTTPServer 利用 Python 搭建一个简单的 Web 服务器,可通过 http://$HOSTNAME:8000 访问。 :w !sudo tee % 在 Vim 中无需权限保存编辑的文件。 cd - 更改到上一次访问的目录。 ^foo^bar 将上一条命令中的 foo 替换为 bar,并执行。 cp filename{,.bak} 快速备份或复制文件。 mtr google.com traceroute + ping。 !whatever:p 搜索命令历史,但不执行。 $ssh-copy-id user@host 将 ssh keys 复制到 user@host 以启用无密码 SSH 登录。 ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg 把 Linux 桌面录制为视频。
#查找文件并统计文件大小 du -ch $(find ./ -type f -name *.20100317*)
tree -H localhost > tree.html #生成html文件,-H 后为服务器地址
用 mkisofs 命令制作 iso 文件
mkisofs -o file.iso xxxxx/
中文名时会出现乱码,解决方法如下
mkisofs -J -r -o file.iso xxxxx/
dmidecode -s system-serial-number
序列号转express services code网站http://www.creativyst.com/Doc/Articles/HT/Dell/DellPop.htm
lspci |grep Ethernet
fuser -m /test /test: 2241 2331 kill 进程之后可以umount
mount -w -o remount,rw /dev/VolGroup00/LogVol00 /
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
e2label /dev/hda3 #将显示/dev/hda3分区的卷标。 e2lable /dev/hda3 /DATA #把/dev/hda3分区的卷标设为/DATA
tar lcvf - .|(cd /mnt/temp; tar xpvf - ) #全盘备份到/mnt/temp
创建一个100M的文件
dd if=/dev/zero of=file.dat bs=1024k count=100
解決ssh连接时 unprotected private key file 问题 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0755 for '/home/kakasi/programming/planetlab' are too open. It is recommended that your private key files are NOT accessible by others. This private key will be ignored. 原因是我把private key跟public key改过权限 "chmod 0600 [private key file]" 就可以了
实现:Linux主机做路由,为子网实现共享上网。2个IP,一个公网IP(22.33.44.55),一个内外网关(192.168.0.254)。
首先打开路由转发,并且为了保证开机重启后生效。如下操作:
1:修改/etc/sycctl.conf,打开路由转发。 [root@kook ~]# vi /etc/sysctl.conf net.ipv4.ip_forward = 1 2:立即生效 [root@kook ~]# sysctl -p net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 4294967295 kernel.shmall = 268435456 添加iptables的NAT,同样保证开机路由生效。 1:添加iptable的NAT [root@kook ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE 2:修改默认iptables,保障重启开机后仍然生效。 [root@kook ~]# iptables-save > /etc/sysconfig/iptables 3:让iptables开机启动 [root@kook ~]# chkconfig iptables on [root@kook ~]# chkconfig ——list iptables iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off 在子网下测试,是否可以上网。完成。
yum -y install nfs* service portmap start
配置文件/etc/exports内容如下:
$ cat /etc/exports /home/share 192.168.102.0/24(rw,sync) *(ro)
配置说明: 对192.168.102.15赋予读写权限,其他机器仅有只读权限。
4 在客户机上查看NFS的资源共享情况
# showmount -e 192.168.102.47 Export list for 192.168.102.47: /home/share (everyone)
5 使用mount命令即可挂栽共享资源在客户机 192.168.102.15 上加载共享资源
# mount 192.168.102.47:/home/share /mnt
6 一些NFS共享的常用参数:
ro 只读访问 rw 读写访问 sync 所有数据在请求时写入共享 async NFS在写入数据前可以相应请求 secure NFS通过1024以下的安全TCP/IP端口发送 insecure NFS通过1024以上的端口发送 wdelay 如果多个用户要写入NFS目录,则归组写入(默认) no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 hide 在NFS共享目录中不共享其子目录 no_hide 共享NFS目录的子目录 subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) no_subtree_check 和上面相对,不检查父目录权限 all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 no_all_squash 保留共享文件的UID和GID(默认) root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认) no_root_squash root用户具有根目录的完全管理访问权限 anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
$ ssh-keygen -t rsa (su到想要生成密钥的用户) Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): <-密钥路径 Enter passphrase (empty for no passphrase): <-密钥保护密码 Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. <-私钥 Your public key has been saved in /root/.ssh/id_rsa.pub. <-公钥 The key fingerprint is: 17:28:4c:c3:e4:18:d4:c2:31:bd:be:a7:a9:d4:a8:48 [email protected]
公有密钥写入验证文件
cat id_rsa.pub >> authorized_keys
修改sshd_config配件文件如下
Port 22 Protocol 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key KeyRegenerationInterval 1h SyslogFacility AUTHPRIV LoginGraceTime 5m PermitRootLogin yes PubkeyAuthentication yes #使用密钥验证 AuthorizedKeysFile .ssh/authorized_keys #验证文件 IgnoreRhosts yes HostbasedAuthentication no PasswordAuthentication yes #如果只想使用密钥进行ssh登陆的话,把yes改为no PermitEmptyPasswords no ChallengeResponseAuthentication no Subsystem sftp /usr/libexec/openssh/sftp-server
修改后重启ssh服务
查看WEB主页运行的服务 w3m -dump_head http://www.linuxfans.org
取消mput询问,关闭交互方式 prompt prompt off
把文件名拆分处理,可以任意修改文件名
find -name '*.png' -printf "%f\n"|awk -F'.' '{print $1}'|xargs -i{} mv {}.png {}_hd.png
rename .png _hd.png *.png
ls -i filename #显示文件节点号 find ./ -inum 节点号 -print -exec rm {} -rf \;
RHEL 4: su -c 'rpm -Uvh http://download.fedora.redhat.com/pub/epel/4/i386/epel-release-4-4.noarch.rpm' RHEL 5: su -c 'rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm’ RHEL 5: su -c 'rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm'
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt rpm -Uvh http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm rpm -Uvh http://apt.sw.be/redhat/el5/en/x86_64/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
#setenforce 0 #修改后不重启生效 #cacti设置时需要关闭selinux
mkisofs -J -R -V -v -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table \ -o /home/admin/Centos-5.2.iso /home/admin/minicd
目地:利用kickstart,制作无人值守安装光盘 作用:对于一些不熟悉linux系统安装的,用自制的无人值守安装光盘,完成整个系统的安装. 1、准备安装源 #mount /dev /cdrom /mnt #mkdir /data #建立自建ISO源目录 #cd /mnt ;tar lcvf - .|(cd /cdrom; tar xpvf - ) #注意不要用*,要用.号代替,如果用*,隐藏文件将不会拷贝 2、修改启动加载设置 #vim /data/isolinux/isolinux.cfg default test install prompt 1 timeout 50 display boot.msg F1 boot.msg F2 options.msg F3 general.msg F4 param.msg F5 rescue.msg label test install kernel vmlinuz append ks=cdrom:/ks.cfg initrd=initrd.img label linux kernel vmlinuz append initrd=initrd.img label text kernel vmlinuz append initrd=initrd.img text label ks kernel vmlinuz append ks initrd=initrd.img label local localboot 1 label memtest86 kernel memtest append - 1)设置默认启动为test install 2)设置开机后等候5分钟 3)新增的操作系统,代号为test install 4)kickstat配置文件的定义,利用这个参数,可以让Anaconda从安装光盘顶层目录中的ks.cfg作为kickstart配置文件。注:kickstart的配置文件,可以放在其它目录,比如isolinux目录下,如果在顶层目录,文件名必须为ks.cfg,放在其他位置,可以自己指定. 3.kickstart 配置文件的制作: 可以对/root/anaconda-ks.cfg文件进行修改,生成自己所需要ks.cfg,也可以利用system-config-kickstart图形化生成 #cat ks.cfg #platform=x86, AMD64, or Intel EM64T # System authorization information install text cdrom lang en_US.UTF-8 keyboard us reboot key --skip auth --useshadow --enablemd5 # System bootloader configuration bootloader --location=mbr # Partition clearing information clearpart --drives=hda --initlabel # Use graphical install #graphical # Firewall configuration firewall --disabled # Run the Setup Agent on first boot firstboot --disable skipx # Installation logging level logging --level=info # Use network installation # Reboot after installation reboot #Root password rootpw --iscrypted $1$jcKDPffl$8uVOA.SIV39O67W0HOM7G. # SELinux configuration selinux --disabled # System timezone timezone America/New_York # Install OS instead of upgrade # X Window System configuration information xconfig --defaultdesktop=GNOME --depth=8 --resolution=640x480 part /boot --fstype ext3 --size=100 --ondrive=hda part / --fstype ext3 --size=5000 --ondrive=hda part swap --size=2000 --ondrive=hda part /home --fstype ext3 --size=5000 %packages @development-libs @development-tools @system-tools @admin-tools 4、产生自制安装光盘 1)删除各目录中的TRANS.TBL文件 #find /data -type f -name "TRANS.TBL"|xargs rm -f 2)删除isolinux/boot.cat文件 #rm /data/isolinux/boot.cat 3)将isolinux/中所有文件设为可写入 chmod +w /data/isolinux/* 4)制作ISO #mkisofs -o /centos.iso -J -r -v -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "centos install DVD" /data (光盘源目录) 5)产生检验码 默认情况下,系统是没有安装implantisomd5工具,需要单独安装两个rpm包: anaconda-11.1.2.195-1.el5.centos.i386.rpm anaconda-runtime-11.1.2.195-1.el5.centos.i386.rpm 安装完以后,将会在/usr/lib/anaconda-runtime生成一批文件 #/usr/lib/anaconda-runtime/implantisomd5 --force /centos.iso 6)在linux下刻录光盘 #growisofs -dvd-compat -Z /dev/cdrom=/centos.iso 完成刻录! 制作过程中出现的问题: 1)启动过程中,提示cd-rom 没有找到 解决方法:注意检查ISO顶级目录是否存在.discinfo文件,如果这个文件不存在,将导致初始化过程中找不到光盘。 2)在安装包的过程中,提示一些包,不能被打开 解决方法:这有可能在制作ISO的过程中,RPM有损坏,可以用UltraISO工具去加载ISO删除这个包,然后,从完整的源盘的增加这个包。另外,也可以考虑重新制作。 3)光盘启动,提示checksum error,光盘校验码出错 解决方法:用implantisomd5工具,产生检验码,并保证,源盘数据完整
1. 用RedHat标准安装盘启动系统当出现提示符时敲入:linux rescue就会以修复模式启动系统
2. 系统启动完毕后,会将硬盘mount到/mnt/sysimage,届时会有提示
3. 进入提示符后,敲入命令:
chroot /mnt/sysimage
4. 敲入命令:
passwd
更改密码
5. 连续敲入两次exit,即重起系统,将光盘拿出,按正常模式启动系统
除了用光盘引导rescue模式,还有一种方法是用启动装载器来进入单用户模式:
1. grub
进入启动画面之后,敲入“e”,把光标移动到kernel …那一行,再敲入“e”,在kernel 一行的最后加上空格single,回车敲入“b”,启动系统,即进入单用户模式,这个时候就可以用passwd命令改密码了。
2. lilo
进入lilo命令行模式,敲入linux single,即进入单用户模式。passwd …
如果grub/lilo设了密码,一定要记住才行。要是忘了grub/lilo的密码,就只有用rescue模式了。over
/usr/sbin/lsof -i :110 #查看什么程序运行在110端口下
dmidecode -t memory #查看内存
cat /proc/cpuinfo #查看CPU
hdparm -cdtT /dev/sda #硬盘读写速度 hdparm -i /dev/hda #硬盘序列号,SCSI无效
sdparm --quiet --page=sn /dev/sda #SCSI硬盘序列号,sdparm需要安装 #可通过rpmforge源,yum方式安装
unalias cp -f 强制复制生效 cp -f
dos2unix filename.ldif iconv -f gb2312 -t UTF-8 -o filename.ldif.utf8 filename.ldif #Linux转码功能,可以让openldap支持中文导入
grep -n "^$" filename #显示空行行号
find . -name "whatever.*" -print0 | rsync -av --files-from=- --from0 ./ remotehost:/destination/ #查找指定文件,rsync到远程服务器,并创建递归目录 # -e "/usr/bin/ssh -oNoneSwitch=yes" 禁用数据加密验证,需要重新编译ssh支持 find lb06* -name "*DATE*_*" -print0 |rsync -av -e "/usr/bin/ssh -oNoneSwitch=yes" ¥ --files-from=- --from0 ./ remotehost:/destination/ find lb* -name adlantis_sp -print0 -exec cp -aRv {} --parents --target-directory=/mnt/usb060b/ \;
查找并排除多个目录
find . -path './media' -prune -o -path './images' -prune -o -path './backups' -prune -o -print
新建用户
#!/bin/bash useradd $1 echo mypassword | passwd --stdin $1 # Invocation ./myscript.sh frank
第一道第五个字段的整数取值范围及意义是: 0~59 表示分 1~23 表示小时 1~31 表示日 1~12 表示月份 0~6 表示星期(其中0表示星期日) 下记为使用例 #每天早上6点 106* * * date #每两个小时 0*/2* * * date #晚上11点到早上8点之间每两个小时,早上部点 0 23-7/2,8* * * date #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4* mon-wed date #1月份日早上4点 0 4 1 jan* date
ping -c 10 127.0.0.1 发送10个数据包到127.0.0.1等结果
/usr/bin/rsync -vzrtopg --progress --delete --exclude-from=/etc/rsyncd.exclude --password-file=/etc/rsyncd.pwd [email protected]::home /home #此命令为一行
mkdir /tmp/test rsync --delete-before -a -H -v --progress --stats /tmp/test/ log/
选项说明 -v, --verbose 详细模式输出 -q, --quiet 精简输出模式 -c, --checksum 打开校验开关,强制对文件传输进行校验 -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD -r, --recursive 对子目录以递归模式处理 -R, --relative 使用相对路径信息 rsync foo/bar/foo.c remote:/tmp/ 则在/tmp目录下创建foo.c文件,而如果使用-R参数: rsync -R foo/bar/foo.c remote:/tmp/ 则会创建文件/tmp/foo/bar/foo.c,也就是会保持完全路径信息。 -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。 --backup-dir 将备份文件(如~filename)存放在在目录下。 -suffix=SUFFIX 定义备份文件前缀 -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件) -l, --links 保留软链结 -L, --copy-links 想对待常规文件一样处理软链结 --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结 --safe-links 忽略指向SRC路径目录树以外的链结 -H, --hard-links 保留硬链结 -p, --perms 保持文件权限 -o, --owner 保持文件属主信息 -g, --group 保持文件属组信息 -D, --devices 保持设备文件信息 -t, --times 保持文件时间信息 -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间 -n, --dry-run现实哪些文件将被传输 -W, --whole-file 拷贝文件,不进行增量检测 -x, --one-file-system 不要跨越文件系统边界 -B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节 -e, --rsh=COMMAND 指定替代rsh的shell程序 --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息 -C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件 --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件 --delete 删除那些DST中SRC没有的文件 --delete-excluded 同样删除接收端那些被该选项指定排除的文件 --delete-after 传输结束以后再删除 --ignore-errors 及时出现IO错误也进行删除 --max-delete=NUM 最多删除NUM个文件 --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输 --force 强制删除目录,即使不为空 --numeric-ids 不将数字的用户和组ID匹配为用户名和组名 --timeout=TIME IP超时时间,单位为秒 -I, --ignore-times 不跳过那些有同样的时间和长度的文件 --size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间 --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0 -T --temp-dir=DIR 在DIR中创建临时文件 --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份 -P 等同于 --partial --progress 显示备份过程 -z, --compress 对备份的文件在传输时进行压缩处理 --exclude=PATTERN 指定排除不需要传输的文件模式 --include=PATTERN 指定不排除而需要传输的文件模式 --exclude-from=FILE 排除FILE中指定模式的文件 --include-from=FILE 不排除FILE指定模式匹配的文件 --version 打印版本信息 --address 绑定到特定的地址 --config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件 --port=PORT 指定其他的rsync服务端口 --blocking-io 对远程shell使用阻塞IO -stats 给出某些文件的传输状态 --progress 在传输时现实传输过程 --log-format=FORMAT 指定日志文件格式 --password-file=FILE 从FILE中得到密码 --bwlimit=KBPS 限制I/O带宽,KBytes per second -h, --help 显示帮助信息
默认安装包生成目录如果没有,需要自己建
for dir in RPMS SRPMS SPECS SOURCES BUILD; do mkdir -p /usr/src/redhat/$dir; done mkdir /usr/src/redhat/RPMS/noarch mkdir /usr/src/redhat/RPMS/x86_64 for x in 3 4 5 6; do mkdir /usr/src/redhat/RPMS/i$x\86; done echo "%_topdir /usr/src/redhat" > ~/.rpmmacros
rpm安装包的spec文件例子:rpmtest.spec
Summary: example Name: rpmtest Version: 0.1 Release: 1 Group: Application/User License: Share Packager: rpmtest %description #rpmtest example %changelog * Sun Jun 6 2004 CSP - build for the first time. %prep %build %install %files /usr/lib/rpmtest.out
生成spec文件后,在root的用户下使用rpmbuild -bb rpmtest.spec生成rpm安装包rpmtest-0.1-1.i386.rpm。
通过rpm -i –test rpmtest-0.1-1.i386.rpm测试程序是否可以安装。
通过rpm -ivh rpmtest-0.1-1.i386.rpm安装程序
通过rpm -e rpmtest-0.1-1卸载程序
specifies multiple packages rpm -e --allmatches <packages-name>
grep 'devpts \| sysfs' /etc/fstab #显示两个关键字
md5sum * > md5sum.txt md5sum -c md5sum.txt
touch ./-i
参考网站 http://fedoranews.org/tchung/gpg/ 1 用gpg生成私钥公钥对(过程中需要回答各种问题,一般除了名字和email以外,都可以直接敲回车使用默认值) $ gpg --gen-key #需要硬盘有读写才能生成乱序数列 $dd if=/dev/urandom of=/tmp/mass bs=1M count=512 2 列出来看一下是否生成 $ gpg --list-keys 3 导出公钥到一个文件(供客户端验证私钥时使用) $ gpg --export -a '生成钥匙对时使用的名字' > RPM-GPG-KEY 4 导入公钥,(服务器端导入是为了验证,以后每个客户端都要导入一次) $ sudo rpm --import RPM-GPG-KEY 5 导入之后列一下 $ rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n' 6 新建一个~/.rpmmacro文件,内容只要两行,如下 %_signature gpg %_gpg_name 生成钥匙对时使用的名字 7 终于可以签了 $ rpm --addsign rpm包 8 验证一下 $ rpm -K rpm包
$kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX 其中前面31个信号为不可靠信号(非实时的,可能会出现信号的丢失),后面的信号为可靠信号(实时的real_time,对信号 排队,不会丢失)。 1) SIGHUP (挂起) 当运行进程的用户注销时通知该进程,使进程终止 2) SIGINT (中断) 当用户按下时,通知前台进程组终止进程 3) SIGQUIT (退出) 用户按下或时通知进程,使进程终止 4) SIGILL (非法指令) 执行了非法指令,如可执行文件本身出现错误、试图执行数据段、堆栈溢出 5) SIGTRAP 由断点指令或其它trap指令产生. 由debugger使用 6) SIGABRT (异常中止) 调用abort函数生成的信号 7) SIGBUS 非法地址, 包括内存地址对齐(alignment)出错. eg: 访问一个四个字长的整数, 但其地址不是4的倍数. 8) SIGFPE (算术异常) 发生致命算术运算错误,包括浮点运算错误、溢出及除数为0. 9) SIGKILL (确认杀死) 当用户通过kill -9命令向进程发送信号时,可靠的终止进程 10) SIGUSR1 用户使用 11) SIGSEGV (段越界) 当进程尝试访问不属于自己的内存空间导致内存错误时,终止进程 12) SIGUSR2 用户使用 13) SIGPIPE 写至无读进程的管道, 或者Socket通信SOCT_STREAM的读进程已经终止,而再写入。 14) SIGALRM (超时) alarm函数使用该信号,时钟定时器超时响应 15) SIGTERM (软中断) 使用不带参数的kill命令时终止进程 17) SIGCHLD (子进程结束) 当子进程终止时通知父进程 18) SIGCONT (暂停进程继续) 让一个停止(stopped)的进程继续执行. 本信号不能被阻塞. 19) SIGSTOP (停止) 作业控制信号,暂停停止(stopped)进程的执行. 本信号不能被阻塞, 处理或忽略. 20) SIGTSTP (暂停/停止) 交互式停止信号, Ctrl-Z 发出这个信号 21) SIGTTIN 当后台作业要从用户终端读数据时, 终端驱动程序产生SIGTTIN信号 22) SIGTTOU 当后台作业要往用户终端写数据时, 终端驱动程序产生SIGTTOU信号 23) SIGURG 有"紧急"数据或网络上带外数据到达socket时产生. 24) SIGXCPU 超过CPU时间资源限制. 这个限制可以由getrlimit/setrlimit来读取/改变。 25) SIGXFSZ 当进程企图扩大文件以至于超过文件大小资源限制。 26) SIGVTALRM 虚拟时钟信号. 类似于SIGALRM, 但是计算的是该进程占用的CPU时间. 27) SIGPROF (梗概时间超时) setitimer(2)函数设置的梗概统计间隔计时器(profiling interval timer) 28) SIGWINCH 窗口大小改变时发出. 29) SIGIO(异步I/O) 文件描述符准备就绪, 可以开始进行输入/输出操作. 30) SIGPWR 电源失效/重启动 31) SIGSYS 非法的系统调用。