一、GNU gcc的编译工具用法
我们先来写一个简单的C程序:hello.c
C代码
定义了一个print_hello函数,调用main函数打印Hello World。 如何编译它呢?
C代码
我们先来写一个简单的C程序:hello.c
C代码
1. #include <stdio.h>
2.
3. void print_hello() {
4. printf("Hello World\n");
5. }
6.
7. int main(int argc, char argv[]) {
8. print_hello();
9. return 0;
10. }
2.
3. void print_hello() {
4. printf("Hello World\n");
5. }
6.
7. int main(int argc, char argv[]) {
8. print_hello();
9. return 0;
10. }
定义了一个print_hello函数,调用main函数打印Hello World。 如何编译它呢?
C代码
1. gcc -o hello -O2 hello.c
阅读全文
通过串口收发短消息(上,下):
http://dev.csdn.net/develop/article/17/17465.shtm
http://dev.csdn.net/develop/article/17/17574.shtm
基于串口的手机短信程序收发源代码:
http://www.xkxz.com/soft/3980.htm
基于串口的手机短信程序收发源代码PHP代码:
http://www.chinaunix.net/jh/27/802131.html
vb中的代码
http://dev.csdn.net/develop/article/17/17465.shtm
http://dev.csdn.net/develop/article/17/17574.shtm
基于串口的手机短信程序收发源代码:
http://www.xkxz.com/soft/3980.htm
基于串口的手机短信程序收发源代码PHP代码:
http://www.chinaunix.net/jh/27/802131.html
vb中的代码
mscomm1.commport=1
mscomm1.setting="9600,n,8,1"
mscomm1.portopen=true
mscomm1.input=0
mscomm1.output="AT CMGF=0" //将发送模式设置成文本模式,最后要加上回车和换行,我给忘怎么加
//了
sleep(200)
mscomm1.output="AT CMGS="13915912345",129" //准备发送信息给13915912345
sleep(200)
mscomm1.output="hello" //最后要加Ctrl z,具体代码里是什么符号我也给忘了
sleep(200)
mscomm1.portopen=false
mscomm1.setting="9600,n,8,1"
mscomm1.portopen=true
mscomm1.input=0
mscomm1.output="AT CMGF=0" //将发送模式设置成文本模式,最后要加上回车和换行,我给忘怎么加
//了
sleep(200)
mscomm1.output="AT CMGS="13915912345",129" //准备发送信息给13915912345
sleep(200)
mscomm1.output="hello" //最后要加Ctrl z,具体代码里是什么符号我也给忘了
sleep(200)
mscomm1.portopen=false
内网机器:
用户名:xiangdong2
密码:123456
删除掉所有的rpm包命令: 为何要删除?请进: http://www.xiangdong.org/blog/post/1426/ ,大家千万别学我这样一个语句把重要的系统库都干掉了,千万不能重新启动!!!
后 rpm qa出现:
rpm: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
发现libstdc++.so.6在rpm的libstdc++-4.1.2-42.el5.i386.rpm中,在其他一台linux机器中:
安装:
查看so文件位置:
/usr/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6.0.8
拷贝到有问题的linux上
后再次运行:
rpm -qa
出现:
rpm: error while loading shared libraries: libstdc++.so.6: wrong ELF class: ELFCLASS32
这下就不知道了。。。????
怀疑是不是系统版本以及rpm包是32位还是64位的问题:
出问题的机器:
安装rpm得到libstdc++.so.6的机器:
有Ixxx的全是32位的,有X86—64的全是64位!
有一篇文章如是说:
有的rpm有分i386、i586和i686等不同版本,如:
abc-1.2.3-4.i386.rpm
abc-1.2.3-4.i586.rpm
abc-1.2.3-4.i686.rpm
它们有什么不同呢?
这里的i386、i586、i686指的是适用于intel i386、 i586、i686 兼容指令集的微处理器。一般来说,等级愈高的机器可接受较低等级的rpm文件。你可以透过/proc/cpuinfo这个档案查询你的CPU等级。
比对i686:
比对X86—64:
[root@7158vm08 CentOS]# ldd /bin/rpm
librpm-4.4.so => /usr/lib64/librpm-4.4.so (0x000000339f000000)
librpmdb-4.4.so => /usr/lib64/librpmdb-4.4.so (0x000000339e800000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003218400000)
librpmio-4.4.so => /usr/lib64/librpmio-4.4.so (0x000000339ec00000)
libpopt.so.0 => /usr/lib64/libpopt.so.0 (0x000000321cc00000)
libsqlite3.so.0 => /usr/lib64/libsqlite3.so.0 (0x0000003219000000)
libelf.so.1 => /usr/lib64/libelf.so.1 (0x000000321a400000)
libbeecrypt.so.6 => /usr/lib64/libbeecrypt.so.6 (0x0000003219400000)
libm.so.6 => /lib64/libm.so.6 (0x0000003217c00000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003217400000)
libz.so.1 => /usr/lib64/libz.so.1 (0x0000003218c00000)
librt.so.1 => /lib64/librt.so.1 (0x0000003218800000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003217800000)
libbz2.so.1 => /usr/lib64/libbz2.so.1 (0x00000035f0600000)
libc.so.6 => /lib64/libc.so.6 (0x0000003217000000)
libsepol.so.1 => /lib64/libsepol.so.1 (0x0000003218000000)
/lib64/ld-linux-x86-64.so.2 (0x0000003216c00000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003219800000)
libstdc++.so.6 => not found
对应的目录不一样, libstdc++.so.6一个是: /usr/lib/libstdc++.so.6 (0x00c2f000),一个是:/lib64/libstdc++.so.6 (确定是这个位置!)
一老外说是这个rpm的,但试了还是不行:
compat-libstdc++-33-3.2.3-61.i386.rpm
[root@vm19 /]# rpm -qpl compat-libstdc++-33-3.2.3-61.i386.rpm
/usr/lib/libstdc++.so.5
/usr/lib/libstdc++.so.5.0.7
最后得出得需要装64位的rpm包,而且libstdc++.so.6要通过rpm -qpl ***.rpm对应到:/lib64 才OK!
结果果然:
果然:
libstdc++-4.1.2-42.el5.x86_64.rpm 里面有这个libstdc++.so.6:
如何是好???难道运维人员是用dvd的包安装的?呵呵,接着俺们下个dvd的包就知道了,呵呵,下载中。。。拭目以待!
DVD包的rpm:
[root@vm19 rpm]# rpm -pql libstdc++-4.1.2-42.el5.i386.rpm
/usr/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6.0.8
[root@vm19 rpm]# rpm -qpl libstdc++-4.1.2-42.el5.x86_64.rpm
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.8
通过7zip解压后,放到目标机:
[root@7158vm08 ~]# cp libstdc++.so.6 /lib64/
[root@7158vm08 ~]# rpm
rpm: error while loading shared libraries: /lib64/libstdc++.so.6: file too short
还是不行报错...
[root@7158vm08 ~]# cat /etc/redhat-release
CentOS release 5.2 (Final)
我也下载的是CentOS release 5.2啊,天啊。。。
这个哥们也遇到类似问题:
http://f170.blogspot.com/2008/11/libstdclibstdcso6.html
10.210.71.72
用户名:xiangdong2
密码:123456
删除掉所有的rpm包命令: 为何要删除?请进: http://www.xiangdong.org/blog/post/1426/ ,大家千万别学我这样一个语句把重要的系统库都干掉了,千万不能重新启动!!!
rpm -qa|awk '{print "rpm -e " $0 " --allmatches --nodeps"}'|sh
后 rpm qa出现:
rpm: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
ldd /bin/rpm
[xiangdong2@7158vm08 CentOS]$ ldd /bin/rpm
libstdc++.so.6 => not found
libstdc++.so.6 => not found
发现libstdc++.so.6在rpm的libstdc++-4.1.2-42.el5.i386.rpm中,在其他一台linux机器中:
安装:
rpm -ihv libstdc++-4.1.2-42.el5.i386.rpm
查看so文件位置:
rpm -qpl libstdc++-4.1.2-42.el5.i386.rpm
/usr/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6.0.8
拷贝到有问题的linux上
cp libstdc++.so.6 /lib64/libstdc++.so.6
后再次运行:
rpm -qa
出现:
rpm: error while loading shared libraries: libstdc++.so.6: wrong ELF class: ELFCLASS32
这下就不知道了。。。????
怀疑是不是系统版本以及rpm包是32位还是64位的问题:
出问题的机器:
[xiangdong2@7158vm08 CentOS]$ uname -rsp
Linux 2.6.18-92.el5xen x86_64
Linux 2.6.18-92.el5xen x86_64
安装rpm得到libstdc++.so.6的机器:
[root@vm19 /]# uname -rsp
Linux 2.6.18-53.el5xen i686
Linux 2.6.18-53.el5xen i686
有Ixxx的全是32位的,有X86—64的全是64位!
有一篇文章如是说:
有的rpm有分i386、i586和i686等不同版本,如:
abc-1.2.3-4.i386.rpm
abc-1.2.3-4.i586.rpm
abc-1.2.3-4.i686.rpm
它们有什么不同呢?
这里的i386、i586、i686指的是适用于intel i386、 i586、i686 兼容指令集的微处理器。一般来说,等级愈高的机器可接受较低等级的rpm文件。你可以透过/proc/cpuinfo这个档案查询你的CPU等级。
比对i686:
[root@vm19 rpm]# ldd /bin/rpm
linux-gate.so.1 => (0x003e9000)
librpm-4.4.so => /usr/lib/librpm-4.4.so (0x00b45000)
librpmdb-4.4.so => /usr/lib/librpmdb-4.4.so (0x0091c000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00895000)
librpmio-4.4.so => /usr/lib/librpmio-4.4.so (0x00a35000)
libpopt.so.0 => /usr/lib/libpopt.so.0 (0x00dd3000)
libsqlite3.so.0 => /usr/lib/libsqlite3.so.0 (0x00acd000)
libelf.so.1 => /usr/lib/libelf.so.1 (0x00b2e000)
libbeecrypt.so.6 => /usr/lib/libbeecrypt.so.6 (0x008dc000)
libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x0080b000)
libdl.so.2 => /lib/libdl.so.2 (0x00805000)
libz.so.1 => /usr/lib/libz.so.1 (0x008ae000)
librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x008c3000)
libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00834000)
libbz2.so.1 => /usr/lib/libbz2.so.1 (0x00479000)
libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x006c0000)
libsepol.so.1 => /lib/libsepol.so.1 (0x0084d000)
/lib/ld-linux.so.2 (0x0069e000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x008ce000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00c2f000)
linux-gate.so.1 => (0x003e9000)
librpm-4.4.so => /usr/lib/librpm-4.4.so (0x00b45000)
librpmdb-4.4.so => /usr/lib/librpmdb-4.4.so (0x0091c000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00895000)
librpmio-4.4.so => /usr/lib/librpmio-4.4.so (0x00a35000)
libpopt.so.0 => /usr/lib/libpopt.so.0 (0x00dd3000)
libsqlite3.so.0 => /usr/lib/libsqlite3.so.0 (0x00acd000)
libelf.so.1 => /usr/lib/libelf.so.1 (0x00b2e000)
libbeecrypt.so.6 => /usr/lib/libbeecrypt.so.6 (0x008dc000)
libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x0080b000)
libdl.so.2 => /lib/libdl.so.2 (0x00805000)
libz.so.1 => /usr/lib/libz.so.1 (0x008ae000)
librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x008c3000)
libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00834000)
libbz2.so.1 => /usr/lib/libbz2.so.1 (0x00479000)
libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x006c0000)
libsepol.so.1 => /lib/libsepol.so.1 (0x0084d000)
/lib/ld-linux.so.2 (0x0069e000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x008ce000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00c2f000)
比对X86—64:
[root@7158vm08 CentOS]# ldd /bin/rpm
librpm-4.4.so => /usr/lib64/librpm-4.4.so (0x000000339f000000)
librpmdb-4.4.so => /usr/lib64/librpmdb-4.4.so (0x000000339e800000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003218400000)
librpmio-4.4.so => /usr/lib64/librpmio-4.4.so (0x000000339ec00000)
libpopt.so.0 => /usr/lib64/libpopt.so.0 (0x000000321cc00000)
libsqlite3.so.0 => /usr/lib64/libsqlite3.so.0 (0x0000003219000000)
libelf.so.1 => /usr/lib64/libelf.so.1 (0x000000321a400000)
libbeecrypt.so.6 => /usr/lib64/libbeecrypt.so.6 (0x0000003219400000)
libm.so.6 => /lib64/libm.so.6 (0x0000003217c00000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003217400000)
libz.so.1 => /usr/lib64/libz.so.1 (0x0000003218c00000)
librt.so.1 => /lib64/librt.so.1 (0x0000003218800000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003217800000)
libbz2.so.1 => /usr/lib64/libbz2.so.1 (0x00000035f0600000)
libc.so.6 => /lib64/libc.so.6 (0x0000003217000000)
libsepol.so.1 => /lib64/libsepol.so.1 (0x0000003218000000)
/lib64/ld-linux-x86-64.so.2 (0x0000003216c00000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003219800000)
libstdc++.so.6 => not found
对应的目录不一样, libstdc++.so.6一个是: /usr/lib/libstdc++.so.6 (0x00c2f000),一个是:/lib64/libstdc++.so.6 (确定是这个位置!)
一老外说是这个rpm的,但试了还是不行:
compat-libstdc++-33-3.2.3-61.i386.rpm
[root@vm19 /]# rpm -qpl compat-libstdc++-33-3.2.3-61.i386.rpm
/usr/lib/libstdc++.so.5
/usr/lib/libstdc++.so.5.0.7
最后得出得需要装64位的rpm包,而且libstdc++.so.6要通过rpm -qpl ***.rpm对应到:/lib64 才OK!
结果果然:
[root@vm19 rpm]# rpm -qpl libstdc++-4.1.2-42.el5.x86_64.rpm
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.8
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.8
[xiangdong2@vm19 rpm]$ rpm -pql libstdc++-4.1.2-42.el5.i386.rpm
/usr/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6.0.8
[xiangdong2@vm19 rpm]$ rpm -pql libstdc++-4.1.2-42.el5.x86_64.rpm
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.8
/usr/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6.0.8
[xiangdong2@vm19 rpm]$ rpm -pql libstdc++-4.1.2-42.el5.x86_64.rpm
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.8
果然:
libstdc++-4.1.2-42.el5.x86_64.rpm 里面有这个libstdc++.so.6:
[root@7158vm08 ~]# rm -Rf /usr/lib64/libstdc++.so.6
[root@7158vm08 ~]# cp -Rf libstdc++.so.6 /usr/lib64/
[root@7158vm08 ~]# rpm
rpm: error while loading shared libraries: /lib64/libstdc++.so.6: file too short
[root@7158vm08 ~]# cp -Rf libstdc++.so.6 /usr/lib64/
[root@7158vm08 ~]# rpm
rpm: error while loading shared libraries: /lib64/libstdc++.so.6: file too short
如何是好???难道运维人员是用dvd的包安装的?呵呵,接着俺们下个dvd的包就知道了,呵呵,下载中。。。拭目以待!
DVD包的rpm:
[root@vm19 rpm]# rpm -pql libstdc++-4.1.2-42.el5.i386.rpm
/usr/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6.0.8
[root@vm19 rpm]# rpm -qpl libstdc++-4.1.2-42.el5.x86_64.rpm
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.8
通过7zip解压后,放到目标机:
[root@7158vm08 ~]# cp libstdc++.so.6 /lib64/
[root@7158vm08 ~]# rpm
rpm: error while loading shared libraries: /lib64/libstdc++.so.6: file too short
还是不行报错...
[root@7158vm08 ~]# cat /etc/redhat-release
CentOS release 5.2 (Final)
我也下载的是CentOS release 5.2啊,天啊。。。
这个哥们也遇到类似问题:
http://f170.blogspot.com/2008/11/libstdclibstdcso6.html
解包:
打包:
打tar.gz包:
打tar.bz2包:
tar -zcvf ssh_tmp.personal.tar.gz ssh_tmp.personal/出现错误如下:
tar -zcvf 由于前次错误,将以上次的错误状态退出
改为去掉z,tar -cvf 后好了,但是编码乱了,这个z可能是编码吧:
tar -cvf ssh_tmp.personal.tar.gz ssh_tmp.personal/
还是不行,最后用Windows下的git bash命令行脚本结合sed解决了。
tar gz:
tar -zxvf ***.tar.gz
tar -zxvf ***.tar.gz
tar bz2:
tar -jxvf ***.tar.bz2
tar -jxvf ***.tar.bz2
打包:
打tar.gz包:
tar -zcvf ***.tar.gz custormer/
打tar.bz2包:
tar -cjf ***.tar.bz2 customer/
tar -zcvf ssh_tmp.personal.tar.gz ssh_tmp.personal/出现错误如下:
tar -zcvf 由于前次错误,将以上次的错误状态退出
改为去掉z,tar -cvf 后好了,但是编码乱了,这个z可能是编码吧:
tar -cvf ssh_tmp.personal.tar.gz ssh_tmp.personal/
还是不行,最后用Windows下的git bash命令行脚本结合sed解决了。
[实践OK]FreeBSD和Linux开端口的目录在哪儿?以Redis进程作为举例。
Unix/LinuxC技术 jackxiang 2008-12-16 16:53
sockstat -4|grep 6379
redis redis-serv 1056 4 tcp4 172.17.254.227:6379 *:*
#./redis-cli -h 172.17.254.227 -p 6379
172.17.254.227:6379> auth XjklgMe431*8
OK
ps aux | grep redis-serv
redis 1056 0.0 0.2 22324 3260 - Ss 11Nov17 101:13.88 redis-server: /usr/local/redis
来自:http://blog.csdn.net/weixin_38884250/article/details/72675734
redis redis-serv 1056 4 tcp4 172.17.254.227:6379 *:*
#./redis-cli -h 172.17.254.227 -p 6379
172.17.254.227:6379> auth XjklgMe431*8
OK
ps aux | grep redis-serv
redis 1056 0.0 0.2 22324 3260 - Ss 11Nov17 101:13.88 redis-server: /usr/local/redis
来自:http://blog.csdn.net/weixin_38884250/article/details/72675734
uname -rsp
FreeBSD&Linux:/etc/pam.d/
netstat -ntp
一、读大学,究竟读什么?
大学生和非大学生最主要的区别绝对不在于是否掌握了一门专业技能,一个经过独立思考而坚持错误观点的人比一个不假思索而接受正确观点的人更值得肯定,草木可以在校园年复一年地生长,而我们却注定要很快被另外一群人替代,尽管每次网到鱼的不过是一个网眼,但要想捕到鱼,就必须要编织一张网。
二、人生规划:三岔路口的抉择
不走弯路就是捷径,仕途,商界,学术。在这人生的三岔路口,你将何去何从,与其跟一百个人去竞争五个职位,不如跟一个人去竞争一个职位,学术精神天然的应当与尘嚣和喧哗保持足够的距离,商场不忌讳任何神话。你也完全可能成为下一个传奇。
三、专业无冷热,学校无高低
没有哪个用人单位会认为你代表了你的学校或者你的专业,既然是概率,就存在不止一种可能性,如果是选择学术,冷门专业比热门专业更容易获得成就,跨专业几乎早已成为一种流行一种时尚,大学之间的实力之争到了考研考场和人才市场原来是那样的微不足道。阅读全文
大学生和非大学生最主要的区别绝对不在于是否掌握了一门专业技能,一个经过独立思考而坚持错误观点的人比一个不假思索而接受正确观点的人更值得肯定,草木可以在校园年复一年地生长,而我们却注定要很快被另外一群人替代,尽管每次网到鱼的不过是一个网眼,但要想捕到鱼,就必须要编织一张网。
二、人生规划:三岔路口的抉择
不走弯路就是捷径,仕途,商界,学术。在这人生的三岔路口,你将何去何从,与其跟一百个人去竞争五个职位,不如跟一个人去竞争一个职位,学术精神天然的应当与尘嚣和喧哗保持足够的距离,商场不忌讳任何神话。你也完全可能成为下一个传奇。
三、专业无冷热,学校无高低
没有哪个用人单位会认为你代表了你的学校或者你的专业,既然是概率,就存在不止一种可能性,如果是选择学术,冷门专业比热门专业更容易获得成就,跨专业几乎早已成为一种流行一种时尚,大学之间的实力之争到了考研考场和人才市场原来是那样的微不足道。阅读全文
[1]好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的体会,以后钱根本不是问题。频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新手!
[2]可以做技术,切不可沉湎于技术。千万不可一门心思钻研技术!给自己很大压力,如果你的心思全部放在这上面,那么注定你将成为孔乙己一类的人物!适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不是最大的支柱,除非你只愿意到老还是个工程师!
[3]不要去做技术高手,只去做综合素质高手!在企业里混,我们时常瞧不起某人,说他“什么都不懂,凭啥拿那么多钱,凭啥升官!”这是普遍的典型的工程师的迂腐之言。8051很牛吗?人家能上去必然有他的本事,而且是你没有的本事。你想想,老板搞经营那么多年,难道见识不如你这个新兵?人家或许善于管理,善于领会老板意图,善于部门协调等等。因此务必培养自己多方面的能力,包括管理,亲和力,察言观色能力,攻关能力等,要成为综合素质的高手,则前途无量,否则只能躲在角落看示波器!技术以外的技能才是更重要的本事!!从古到今,美国日本,一律如此!阅读全文
[2]可以做技术,切不可沉湎于技术。千万不可一门心思钻研技术!给自己很大压力,如果你的心思全部放在这上面,那么注定你将成为孔乙己一类的人物!适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不是最大的支柱,除非你只愿意到老还是个工程师!
[3]不要去做技术高手,只去做综合素质高手!在企业里混,我们时常瞧不起某人,说他“什么都不懂,凭啥拿那么多钱,凭啥升官!”这是普遍的典型的工程师的迂腐之言。8051很牛吗?人家能上去必然有他的本事,而且是你没有的本事。你想想,老板搞经营那么多年,难道见识不如你这个新兵?人家或许善于管理,善于领会老板意图,善于部门协调等等。因此务必培养自己多方面的能力,包括管理,亲和力,察言观色能力,攻关能力等,要成为综合素质的高手,则前途无量,否则只能躲在角落看示波器!技术以外的技能才是更重要的本事!!从古到今,美国日本,一律如此!阅读全文
查看YUM的RPM包依赖的包由谁来提供,以及对应的包命令yum deplist yumPKg:
yum deplist openssh|grep -i ssl
dependency: libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)
provider: openssl.x86_64 1.0.1e-57.el6
provider: openssl.x86_64 1.0.1e-57.el6
dependency: libcrypto.so.10(OPENSSL_1.0.1)(64bit)
provider: openssl.x86_64 1.0.1e-57.el6
provider: openssl.x86_64 1.0.1e-57.el6
rpm -q openssh-5.3p1 --requires|grep ssl
CentOS7上面运行yum clean all时会有这个提示:
AutoReqProv no:
--requires list capabilities required by package(s)
--provides list capabilities that this package provides
rpm -qp php-5.6.20-160919111909.el7.centos.x86_64.rpm --requires
libiconv
libmcrypt
mcrypt
mhash
libtool-ltdl-devel
rpm -qp mkvtoolnix-13.0.0-1.x86_64.rpm --requires
hicolor-icon-theme
libFLAC.so.8()(64bit)
libQt5Concurrent.so.5()(64bit)
libQt5Core.so.5()(64bit)
libQt5Core.so.5(Qt_5)(64bit)
libQt5Core.so.5(Qt_5.6)(64bit)
libQt5Gui.so.5()(64bit)
libQt5Gui.so.5(Qt_5)(64bit)
libQt5Multimedia.so.5()(64bit)
libQt5Multimedia.so.5(Qt_5)(64bit)
libQt5Network.so.5()(64bit)
libQt5Network.so.5(Qt_5)(64bit)
libQt5Widgets.so.5()(64bit)
libQt5Widgets.so.5(Qt_5)(64bit)
libboost_filesystem.so.1.53.0()(64bit)
libboost_regex-mt.so.1.53.0()(64bit)
libboost_system.so.1.53.0()(64bit)
rpm -qp php-5.6.20-160919111909.el7.centos.x86_64.rpm --provides
php = 5.6.20-160919111909.el7.centos
php(x86-64) = 5.6.20-160919111909.el7.centos
查询一个包是否被安装
# rpm -q < rpm package name>
列出所有被安装的rpm package
# rpm -qa
-p, --package query/verify a package file
(一)rpm包文件安装位置及列表:
[root@localhost x86_64]# rpm -qpl nginx-1.7.1-el5.x86_64.rpm
/usr/local/nginxinstallbyrpm
/usr/local/nginxinstallbyrpm/conf
/usr/local/nginxinstallbyrpm/conf/fastcgi.conf
/usr/local/nginxinstallbyrpm/conf/fastcgi.conf.default
/usr/local/nginxinstallbyrpm/conf/fastcgi_params
/usr/local/nginxinstallbyrpm/conf/fastcgi_params.default
/usr/local/nginxinstallbyrpm/conf/koi-utf
/usr/local/nginxinstallbyrpm/conf/koi-win
(二)rpm软件依赖检查命令:
[root@localhost x86_64]# rpm -qp nginx-1.7.1-el5.x86_64.rpm -requires
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1
/bin/sh
libc.so.6()(64bit)
libc.so.6(GLIBC_2.10)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.2)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libcrypt.so.1()(64bit)
libcrypt.so.1(GLIBC_2.2.5)(64bit)
libcrypto.so.10()(64bit)
libcrypto.so.10(libcrypto.so.10)(64bit)
libpcre.so.1()(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libz.so.1()(64bit)
(三)查看嵌入脚本, -scripts:(preuninstall 卸载前)
[root@localhost x86_64]# rpm -qp nginx-1.7.1-el5.x86_64.rpm -scripts
preuninstall scriptlet (using /bin/sh):
if [ -z "`ps aux | grep nginx | grep -v grep`" ];then
killall nginx >/dev/null
exit 0
fi
(四)查看rpm包的安装信息:
[root@localhost x86_64]# rpm -qpi nginx-1.7.1-el5.x86_64.rpm -scripts
Name : nginx Relocations: (not relocatable)
Version : 1.7.1 Vendor: (none)
Release : el5 Build Date: Thu 10 Mar 2016 11:42:25 AM CST
Install Date: (not installed) Build Host: iZ25dcp92ckZ
Group : Applications/Server Source RPM: nginx-1.7.1-el5.src.rpm
Size : 707923 License: GPL
Signature : (none)
Packager : yunjianfei <yunjianfei1987@gmail.com>
URL : http://nginx.org/
Summary : High Performance Web Server
Description :
nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server
preuninstall scriptlet (using /bin/sh):
if [ -z "`ps aux | grep nginx | grep -v grep`" ];then
killall nginx >/dev/null
exit 0
fi
(五)自动产生rpm包依赖关系:
autoreqprov
默认不写值是1,也就是自动产生依赖关系,而主查对于一些共享库进行依赖(除开写了的外)。
加了autoreqprov=1和autoreqprov=0的rpm包查看如下方法:
rpm -qp nginx-1.7.1-el5.x86_64.rpm --requires
/bin/sh
libc.so.6()(64bit)
libc.so.6(GLIBC_2.10)(64bit)
(六)rpm包的配置文件查看:
rpm -qp /usr/local/nginx/html/centos6.4/x86_64/nginx-1.7.1-el5.x86_64.rpm --configfiles
(七)查看rpm包的安装情况:
[root@localhost x86_64]# rpm -qa perl-Test-Simple
perl-Test-Simple-0.92-141.el6_7.1.x86_64
[root@localhost x86_64]# file pcre-7.8-7.el6.x86_64.rpm
pcre-7.8-7.el6.x86_64.rpm: RPM v3.0 bin i386/x86_64 pcre-7.8-7.el6
(八)rpm包配置文件验证:
[root@localhost /]# rpm -qvV nginx-filesystem
......... /etc/nginx
......... /etc/nginx/conf.d
......... /etc/nginx/default.d
......... /usr/share/nginx
......... /usr/share/nginx/html
(九)rpm伯克利文件存放rpm包安装相关信息:
[root@iZ25dcp92ckZ rpmbuild]# file /var/lib/rpm/* |grep Berkeley
/var/lib/rpm/Basenames: Berkeley DB (Btree, version 9, native byte-order)
/var/lib/rpm/Conflictname: Berkeley DB (Btree, version 9, native byte-order)
/var/lib/rpm/Dirnames: Berkeley DB (Btree, version 9, native byte-order)
(十)rpm安装好的包里反查到属于哪个软件包的方法,rpm里的一个文件反查属于哪个rpm包:
[root@localhost /]# rpm -qf /usr/bin/sz
lrzsz-0.12.20-27.1.el6.x86_64 //ls -lart /var/lib/rpm/Packages 这个表里及相关表反查到的。
(十一)查看rpm包里的配置文件:
查看一下已安装软件的配置文件;
语法格式:rpm -qc 软件名
举例:
#rpm -qa|grep nginx
nginx-1.14.0-180523170757.el7.centos.x86_64
#rpm -qc nginx-1.14.0
/usr/local/nginx/conf/fastcgi.conf
/usr/local/nginx/conf/fastcgi_params
/usr/local/nginx/conf/koi-utf
/usr/local/nginx/conf/koi-win
/usr/local/nginx/conf/mime.types
-c, --configfiles
List only configuration files (implies -l).
rpm -qf /sbin/ifconfig //找不到这个,centos7没网络,没ifconfig咋整的,反查到缺少该包。
net-tools-2.0-0.17.20131004git.el7.x86_64
实践如下:
#chattr +i /var/lib/rpm/Packages ——>添加“i”隐藏属性后,就无法更动这个文件了 ,再rpm -ihv xxx.rpm,提示这个Packages index using db3-Permission denied(13)
举例比如,rpmbuild,咱发现这个命令没有,其它机器上有,又不知道这个文件是哪个rpm包里的于是反查呗:
build:[root@iZ25dcp92ckZ vhost]# whereis rpmbuild
rpmbuild: /usr/bin/rpmbuild
[root@iZ25dcp92ckZ vhost]# rpm -qf /usr/bin/rpmbuild
rpm-build-4.11.3-17.el7.x86_64
yum install rpm-build -y
[root@iZ25dcp92ckZ vhost]# rpm -qf /usr/bin/rz
lrzsz-0.12.20-36.el7.x86_64
[root@iZ25z0ugwgtZ xdebug]# rpm -qf /usr/bin/dig //名字和包一点关系没有如何反查在这儿有用了
bind-utils-9.9.4-29.el7_2.2.x86_64
#显示文件中查看是否存在系统以外的文件
rpm -Vf /bin/ls
rpm -Vf /usr/sbin/sshd
rpm -Vf /sbin/ifconfig
rpm -Vf /usr/sbin/lsof
#检查系统是否有elf文件被替换
(十一)阻塞问题:因为berkeley db对多任务并发操作支持不够好,从而导致数据库死锁而引起进程阻塞。一般处理是杀死相关进程,清空文件,运行yum命令清空:
(十二)配置好源后查看rpm输出信息知道仓库在哪儿:
yum clean all
yum info nginx-1.7.1
Loaded plugins: fastestmirror, security
Repository base is listed more than once in the configuration
Determining fastest mirrors
......
Available Packages
Name : nginx
Arch : x86_64
Version : 1.7.1
Release : el5
Size : 242 k
Repo : extra
Summary : High Performance Web Server
URL : http://nginx.org/
License : GPL
Description : nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server
(十三)yum install nginx-1.7.1,如何检查该包是否已经被安装?
rpm -qi nginx-1.7.1
package nginx-1.7.1 is not installed
(十四)首次及更新yum服务端rpm的索引文件:
yum -y install createrepo
createrepo --u http://192.168.1.245/winrpm -d -p -o . . //实现本机并指定镜像文件在192.168.1.245上。
createrepo --update -d -p .
(十五)yum本地缓存目录:
cat /etc/yum.conf |grep cachedir
cachedir=/var/cache/yum/$basearch/$releasever // /var/cache/yum/x86_64/6/
ls -lart /var/cache/yum/x86_64/6/base/
repomd.xml
packages
gen
cachecookie
11bcf3233241e37e1a0e04d2fde8a609215059b5b0319fd660f796d462bbe6a8-primary.sqlite
(十六)本地缓存的位置及对应关系:
repomd.xml这个文件是一个从服务器上同步的,通过yum clean all可以去掉的:
服务端:
md5sum /usr/local/nginx/html/centos6.4/x86_64/repodata/repomd.xml
792442251ee4d10e68dfedfea2818041 /usr/local/nginx/html/centos6.4/x86_64/repodata/repomd.xml
客户端:
md5sum /var/cache/yum/x86_64/6/extra/repomd.xml
792442251ee4d10e68dfedfea2818041 /var/cache/yum/x86_64/6/extra/repomd.xml
客户端的配置情况[extra]目录对应上面的客户端的extra目录(/var/cache/yum/x86_64/6/extra/):
cat /etc/yum.repos.d/test.repo
[extra] //个[extra]必须是唯一的单词,不能重复。
name=centos-extra
#baseurl=http://192.168.101.227/centos6.4/extra
baseurl=http://192.168.101.227/centos6.4/x86_64
gpgcheck=1
enabled=1
(十七)对不同yum仓库里有相同的rpm包时(不推荐这么搞),如果客户端都配置了,他会去下哪一个呢?
cat /etc/yum.repos.d/yum0.repo
cat /etc/yum.repos.d/yum1.repo
cat /etc/yum.repos.d/yum2.repo
是根据cost值越小来进行下载的:
cost=100
cost=105
cost=103
(十八)指定仓库安装里面的rpm包(被追求完美的系统的管理员排斥,觉得应用把yum服务的实现绑架了,尽量不要采用指定仓库的方式来安装):
(十九) 指定更新仓库索引,大幅度提升索引更新速度:
附录:
rpm包相关信息在本地sql存起来:
sqlite3 /var/cache/yum/x86_64/6/extra/ac3d9311735ae54c215864a35307072dda8b3b03503f272bb17c281e949279b2-primary.sqlite
sqlite> .tables
conflicts db_info files obsoletes packages provides requires
sqlite> .schema packages
CREATE TABLE packages ( pkgKey INTEGER PRIMARY KEY, pkgId TEXT, name TEXT, arch TEXT, version TEXT, epoch TEXT, release TEXT, summary TEXT, description TEXT, url TEXT, time_file INTEGER, time_build INTEGER, rpm_license TEXT, rpm_vendor TEXT, rpm_group TEXT, rpm_buildhost TEXT, rpm_sourcerpm TEXT, rpm_header_start INTEGER, rpm_header_end INTEGER, rpm_packager TEXT, size_package INTEGER, size_installed INTEGER, size_archive INTEGER, location_href TEXT, location_base TEXT, checksum_type TEXT);
CREATE INDEX packageId ON packages (pkgId);
CREATE INDEX packagename ON packages (name);
CREATE TRIGGER removals AFTER DELETE ON packages BEGIN DELETE FROM files WHERE pkgKey = old.pkgKey; DELETE FROM requires WHERE pkgKey = old.pkgKey; DELETE FROM provides WHERE pkgKey = old.pkgKey; DELETE FROM conflicts WHERE pkgKey = old.pkgKey; DELETE FROM obsoletes WHERE pkgKey = old.pkgKey; END;
sqlite> select * from packages;
1|6e099492eb691f0e869c02a7352530ec6a8d0056c1aadcde3613cc1f8e24e52c|pcre|x86_64|7.8|0|7.el6|Perl-compatible regular expression library|Perl-compatible regular expression library.
PCRE has its own native API, but a set of "wrapper" functions that are based on
the POSIX API are also supplied in the library libpcreposix. Note that this
just provides a POSIX calling interface to PCRE: the regular expressions
themselves still follow Perl syntax and semantics. The header file
for the POSIX-style functions is called pcreposix.h.|http://www.pcre.org/|1437770553|1437691568|BSD|CentOS|System Environment/Libraries|c6b8.bsys.dev.centos.org|pcre-7.8-7.el6.src.rpm|1384|11408|CentOS BuildSystem <http://bugs.centos.org>|200564|529027|531768|pcre-7.8-7.el6.x86_64.rpm||sha256
2|f1bced3b528579ba55ef1f3924e03f0979dd188a3ab5a877058a2ef247bc75ca|nginx|x86_64|1.7.1|0|el5|High Performance Web Server|nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server|http://nginx.org/|1457681066|1457581345|GPL||Applications/Server|iZ25dcp92ckZ|nginx-1.7.1-el5.src.rpm|280|5836|yunjianfei <yunjianfei1987@gmail.com>|248156|707923|711684|nginx-1.7.1-el5.x86_64.rpm||sha256
3|b354e7ed72daec3d497ed85fa68e5bd77556f642a2645659d40877dc6449382f|pcre-devel|x86_64|7.8|0|7.el6|Development files for pcre|Development files (Headers, libraries for dynamic linking, etc) for pcre.|http://www.pcre.org/|1437770555|1437691568|BSD|CentOS|Development/Libraries|c6b8.bsys.dev.centos.org|pcre-7.8-7.el6.src.rpm|1384|21612|CentOS BuildSystem <http://bugs.centos.org>|327960|980154|995184|pcre-devel-7.8-7.el6.x86_64.rpm||sha256
createrepo -d -p -o /tmp ../rpm/ //把repodata输出到/tmp目录下,和rpm包分开。
================================================================
如果有修改则会出现sm5....T c /etc/boy.conf //MODE、SIZE、MD5SUM、mtime都改变列出来了。
================================================================
rpm包依赖关系的解除:
在我们安装某一个rpm包的时候,系统有可能提示某一个库文件或者rpm的支持,当想在安装需要该rpm包倚赖的这个库文件或者rpm包时,该库文件或者rpm包又依赖另外的文件或rpm包,导致安装很难快速解决包之间的以来关系达到安装需要的组件的目的。redhat提供的解决方案,安装依赖关系库,就可以解决此问题,该文件可以用find -name rpmdb* 在rpm包所在文件夹中找到,然后运行 rpm -ivh --aid abc.rpm,abc.rpm为需要安装的包即可。当然复杂的时候还需要手动解决少数包依赖关系,简单的情况下,可以一次性解决所有以来关系。阅读全文
yum deplist openssh|grep -i ssl
dependency: libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)
provider: openssl.x86_64 1.0.1e-57.el6
provider: openssl.x86_64 1.0.1e-57.el6
dependency: libcrypto.so.10(OPENSSL_1.0.1)(64bit)
provider: openssl.x86_64 1.0.1e-57.el6
provider: openssl.x86_64 1.0.1e-57.el6
rpm -q openssh-5.3p1 --requires|grep ssl
CentOS7上面运行yum clean all时会有这个提示:
AutoReqProv no:
--requires list capabilities required by package(s)
--provides list capabilities that this package provides
rpm -qp php-5.6.20-160919111909.el7.centos.x86_64.rpm --requires
libiconv
libmcrypt
mcrypt
mhash
libtool-ltdl-devel
rpm -qp mkvtoolnix-13.0.0-1.x86_64.rpm --requires
hicolor-icon-theme
libFLAC.so.8()(64bit)
libQt5Concurrent.so.5()(64bit)
libQt5Core.so.5()(64bit)
libQt5Core.so.5(Qt_5)(64bit)
libQt5Core.so.5(Qt_5.6)(64bit)
libQt5Gui.so.5()(64bit)
libQt5Gui.so.5(Qt_5)(64bit)
libQt5Multimedia.so.5()(64bit)
libQt5Multimedia.so.5(Qt_5)(64bit)
libQt5Network.so.5()(64bit)
libQt5Network.so.5(Qt_5)(64bit)
libQt5Widgets.so.5()(64bit)
libQt5Widgets.so.5(Qt_5)(64bit)
libboost_filesystem.so.1.53.0()(64bit)
libboost_regex-mt.so.1.53.0()(64bit)
libboost_system.so.1.53.0()(64bit)
rpm -qp php-5.6.20-160919111909.el7.centos.x86_64.rpm --provides
php = 5.6.20-160919111909.el7.centos
php(x86-64) = 5.6.20-160919111909.el7.centos
查询一个包是否被安装
# rpm -q < rpm package name>
列出所有被安装的rpm package
# rpm -qa
-p, --package query/verify a package file
(一)rpm包文件安装位置及列表:
[root@localhost x86_64]# rpm -qpl nginx-1.7.1-el5.x86_64.rpm
/usr/local/nginxinstallbyrpm
/usr/local/nginxinstallbyrpm/conf
/usr/local/nginxinstallbyrpm/conf/fastcgi.conf
/usr/local/nginxinstallbyrpm/conf/fastcgi.conf.default
/usr/local/nginxinstallbyrpm/conf/fastcgi_params
/usr/local/nginxinstallbyrpm/conf/fastcgi_params.default
/usr/local/nginxinstallbyrpm/conf/koi-utf
/usr/local/nginxinstallbyrpm/conf/koi-win
(二)rpm软件依赖检查命令:
[root@localhost x86_64]# rpm -qp nginx-1.7.1-el5.x86_64.rpm -requires
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1
/bin/sh
libc.so.6()(64bit)
libc.so.6(GLIBC_2.10)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.2)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libcrypt.so.1()(64bit)
libcrypt.so.1(GLIBC_2.2.5)(64bit)
libcrypto.so.10()(64bit)
libcrypto.so.10(libcrypto.so.10)(64bit)
libpcre.so.1()(64bit)
libpthread.so.0()(64bit)
libpthread.so.0(GLIBC_2.2.5)(64bit)
libz.so.1()(64bit)
(三)查看嵌入脚本, -scripts:(preuninstall 卸载前)
[root@localhost x86_64]# rpm -qp nginx-1.7.1-el5.x86_64.rpm -scripts
preuninstall scriptlet (using /bin/sh):
if [ -z "`ps aux | grep nginx | grep -v grep`" ];then
killall nginx >/dev/null
exit 0
fi
(四)查看rpm包的安装信息:
[root@localhost x86_64]# rpm -qpi nginx-1.7.1-el5.x86_64.rpm -scripts
Name : nginx Relocations: (not relocatable)
Version : 1.7.1 Vendor: (none)
Release : el5 Build Date: Thu 10 Mar 2016 11:42:25 AM CST
Install Date: (not installed) Build Host: iZ25dcp92ckZ
Group : Applications/Server Source RPM: nginx-1.7.1-el5.src.rpm
Size : 707923 License: GPL
Signature : (none)
Packager : yunjianfei <yunjianfei1987@gmail.com>
URL : http://nginx.org/
Summary : High Performance Web Server
Description :
nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server
preuninstall scriptlet (using /bin/sh):
if [ -z "`ps aux | grep nginx | grep -v grep`" ];then
killall nginx >/dev/null
exit 0
fi
(五)自动产生rpm包依赖关系:
autoreqprov
默认不写值是1,也就是自动产生依赖关系,而主查对于一些共享库进行依赖(除开写了的外)。
加了autoreqprov=1和autoreqprov=0的rpm包查看如下方法:
rpm -qp nginx-1.7.1-el5.x86_64.rpm --requires
/bin/sh
libc.so.6()(64bit)
libc.so.6(GLIBC_2.10)(64bit)
(六)rpm包的配置文件查看:
rpm -qp /usr/local/nginx/html/centos6.4/x86_64/nginx-1.7.1-el5.x86_64.rpm --configfiles
(七)查看rpm包的安装情况:
[root@localhost x86_64]# rpm -qa perl-Test-Simple
perl-Test-Simple-0.92-141.el6_7.1.x86_64
[root@localhost x86_64]# file pcre-7.8-7.el6.x86_64.rpm
pcre-7.8-7.el6.x86_64.rpm: RPM v3.0 bin i386/x86_64 pcre-7.8-7.el6
(八)rpm包配置文件验证:
[root@localhost /]# rpm -qvV nginx-filesystem
......... /etc/nginx
......... /etc/nginx/conf.d
......... /etc/nginx/default.d
......... /usr/share/nginx
......... /usr/share/nginx/html
(九)rpm伯克利文件存放rpm包安装相关信息:
[root@iZ25dcp92ckZ rpmbuild]# file /var/lib/rpm/* |grep Berkeley
/var/lib/rpm/Basenames: Berkeley DB (Btree, version 9, native byte-order)
/var/lib/rpm/Conflictname: Berkeley DB (Btree, version 9, native byte-order)
/var/lib/rpm/Dirnames: Berkeley DB (Btree, version 9, native byte-order)
(十)rpm安装好的包里反查到属于哪个软件包的方法,rpm里的一个文件反查属于哪个rpm包:
[root@localhost /]# rpm -qf /usr/bin/sz
lrzsz-0.12.20-27.1.el6.x86_64 //ls -lart /var/lib/rpm/Packages 这个表里及相关表反查到的。
(十一)查看rpm包里的配置文件:
查看一下已安装软件的配置文件;
语法格式:rpm -qc 软件名
举例:
#rpm -qa|grep nginx
nginx-1.14.0-180523170757.el7.centos.x86_64
#rpm -qc nginx-1.14.0
/usr/local/nginx/conf/fastcgi.conf
/usr/local/nginx/conf/fastcgi_params
/usr/local/nginx/conf/koi-utf
/usr/local/nginx/conf/koi-win
/usr/local/nginx/conf/mime.types
-c, --configfiles
List only configuration files (implies -l).
rpm -qf /sbin/ifconfig //找不到这个,centos7没网络,没ifconfig咋整的,反查到缺少该包。
net-tools-2.0-0.17.20131004git.el7.x86_64
实践如下:
#chattr +i /var/lib/rpm/Packages ——>添加“i”隐藏属性后,就无法更动这个文件了 ,再rpm -ihv xxx.rpm,提示这个Packages index using db3-Permission denied(13)
举例比如,rpmbuild,咱发现这个命令没有,其它机器上有,又不知道这个文件是哪个rpm包里的于是反查呗:
build:[root@iZ25dcp92ckZ vhost]# whereis rpmbuild
rpmbuild: /usr/bin/rpmbuild
[root@iZ25dcp92ckZ vhost]# rpm -qf /usr/bin/rpmbuild
rpm-build-4.11.3-17.el7.x86_64
yum install rpm-build -y
[root@iZ25dcp92ckZ vhost]# rpm -qf /usr/bin/rz
lrzsz-0.12.20-36.el7.x86_64
[root@iZ25z0ugwgtZ xdebug]# rpm -qf /usr/bin/dig //名字和包一点关系没有如何反查在这儿有用了
bind-utils-9.9.4-29.el7_2.2.x86_64
#显示文件中查看是否存在系统以外的文件
rpm -Vf /bin/ls
rpm -Vf /usr/sbin/sshd
rpm -Vf /sbin/ifconfig
rpm -Vf /usr/sbin/lsof
#检查系统是否有elf文件被替换
(十一)阻塞问题:因为berkeley db对多任务并发操作支持不够好,从而导致数据库死锁而引起进程阻塞。一般处理是杀死相关进程,清空文件,运行yum命令清空:
(十二)配置好源后查看rpm输出信息知道仓库在哪儿:
yum clean all
yum info nginx-1.7.1
Loaded plugins: fastestmirror, security
Repository base is listed more than once in the configuration
Determining fastest mirrors
......
Available Packages
Name : nginx
Arch : x86_64
Version : 1.7.1
Release : el5
Size : 242 k
Repo : extra
Summary : High Performance Web Server
URL : http://nginx.org/
License : GPL
Description : nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server
(十三)yum install nginx-1.7.1,如何检查该包是否已经被安装?
rpm -qi nginx-1.7.1
package nginx-1.7.1 is not installed
(十四)首次及更新yum服务端rpm的索引文件:
yum -y install createrepo
createrepo --u http://192.168.1.245/winrpm -d -p -o . . //实现本机并指定镜像文件在192.168.1.245上。
createrepo --update -d -p .
(十五)yum本地缓存目录:
cat /etc/yum.conf |grep cachedir
cachedir=/var/cache/yum/$basearch/$releasever // /var/cache/yum/x86_64/6/
ls -lart /var/cache/yum/x86_64/6/base/
repomd.xml
packages
gen
cachecookie
11bcf3233241e37e1a0e04d2fde8a609215059b5b0319fd660f796d462bbe6a8-primary.sqlite
(十六)本地缓存的位置及对应关系:
repomd.xml这个文件是一个从服务器上同步的,通过yum clean all可以去掉的:
服务端:
md5sum /usr/local/nginx/html/centos6.4/x86_64/repodata/repomd.xml
792442251ee4d10e68dfedfea2818041 /usr/local/nginx/html/centos6.4/x86_64/repodata/repomd.xml
客户端:
md5sum /var/cache/yum/x86_64/6/extra/repomd.xml
792442251ee4d10e68dfedfea2818041 /var/cache/yum/x86_64/6/extra/repomd.xml
客户端的配置情况[extra]目录对应上面的客户端的extra目录(/var/cache/yum/x86_64/6/extra/):
cat /etc/yum.repos.d/test.repo
[extra] //个[extra]必须是唯一的单词,不能重复。
name=centos-extra
#baseurl=http://192.168.101.227/centos6.4/extra
baseurl=http://192.168.101.227/centos6.4/x86_64
gpgcheck=1
enabled=1
(十七)对不同yum仓库里有相同的rpm包时(不推荐这么搞),如果客户端都配置了,他会去下哪一个呢?
cat /etc/yum.repos.d/yum0.repo
cat /etc/yum.repos.d/yum1.repo
cat /etc/yum.repos.d/yum2.repo
是根据cost值越小来进行下载的:
cost=100
cost=105
cost=103
(十八)指定仓库安装里面的rpm包(被追求完美的系统的管理员排斥,觉得应用把yum服务的实现绑架了,尽量不要采用指定仓库的方式来安装):
(十九) 指定更新仓库索引,大幅度提升索引更新速度:
附录:
rpm包相关信息在本地sql存起来:
sqlite3 /var/cache/yum/x86_64/6/extra/ac3d9311735ae54c215864a35307072dda8b3b03503f272bb17c281e949279b2-primary.sqlite
sqlite> .tables
conflicts db_info files obsoletes packages provides requires
sqlite> .schema packages
CREATE TABLE packages ( pkgKey INTEGER PRIMARY KEY, pkgId TEXT, name TEXT, arch TEXT, version TEXT, epoch TEXT, release TEXT, summary TEXT, description TEXT, url TEXT, time_file INTEGER, time_build INTEGER, rpm_license TEXT, rpm_vendor TEXT, rpm_group TEXT, rpm_buildhost TEXT, rpm_sourcerpm TEXT, rpm_header_start INTEGER, rpm_header_end INTEGER, rpm_packager TEXT, size_package INTEGER, size_installed INTEGER, size_archive INTEGER, location_href TEXT, location_base TEXT, checksum_type TEXT);
CREATE INDEX packageId ON packages (pkgId);
CREATE INDEX packagename ON packages (name);
CREATE TRIGGER removals AFTER DELETE ON packages BEGIN DELETE FROM files WHERE pkgKey = old.pkgKey; DELETE FROM requires WHERE pkgKey = old.pkgKey; DELETE FROM provides WHERE pkgKey = old.pkgKey; DELETE FROM conflicts WHERE pkgKey = old.pkgKey; DELETE FROM obsoletes WHERE pkgKey = old.pkgKey; END;
sqlite> select * from packages;
1|6e099492eb691f0e869c02a7352530ec6a8d0056c1aadcde3613cc1f8e24e52c|pcre|x86_64|7.8|0|7.el6|Perl-compatible regular expression library|Perl-compatible regular expression library.
PCRE has its own native API, but a set of "wrapper" functions that are based on
the POSIX API are also supplied in the library libpcreposix. Note that this
just provides a POSIX calling interface to PCRE: the regular expressions
themselves still follow Perl syntax and semantics. The header file
for the POSIX-style functions is called pcreposix.h.|http://www.pcre.org/|1437770553|1437691568|BSD|CentOS|System Environment/Libraries|c6b8.bsys.dev.centos.org|pcre-7.8-7.el6.src.rpm|1384|11408|CentOS BuildSystem <http://bugs.centos.org>|200564|529027|531768|pcre-7.8-7.el6.x86_64.rpm||sha256
2|f1bced3b528579ba55ef1f3924e03f0979dd188a3ab5a877058a2ef247bc75ca|nginx|x86_64|1.7.1|0|el5|High Performance Web Server|nginx [engine x] is a HTTP and reverse proxy server, as well as a mail proxy server|http://nginx.org/|1457681066|1457581345|GPL||Applications/Server|iZ25dcp92ckZ|nginx-1.7.1-el5.src.rpm|280|5836|yunjianfei <yunjianfei1987@gmail.com>|248156|707923|711684|nginx-1.7.1-el5.x86_64.rpm||sha256
3|b354e7ed72daec3d497ed85fa68e5bd77556f642a2645659d40877dc6449382f|pcre-devel|x86_64|7.8|0|7.el6|Development files for pcre|Development files (Headers, libraries for dynamic linking, etc) for pcre.|http://www.pcre.org/|1437770555|1437691568|BSD|CentOS|Development/Libraries|c6b8.bsys.dev.centos.org|pcre-7.8-7.el6.src.rpm|1384|21612|CentOS BuildSystem <http://bugs.centos.org>|327960|980154|995184|pcre-devel-7.8-7.el6.x86_64.rpm||sha256
createrepo -d -p -o /tmp ../rpm/ //把repodata输出到/tmp目录下,和rpm包分开。
================================================================
如果有修改则会出现sm5....T c /etc/boy.conf //MODE、SIZE、MD5SUM、mtime都改变列出来了。
================================================================
rpm包依赖关系的解除:
在我们安装某一个rpm包的时候,系统有可能提示某一个库文件或者rpm的支持,当想在安装需要该rpm包倚赖的这个库文件或者rpm包时,该库文件或者rpm包又依赖另外的文件或rpm包,导致安装很难快速解决包之间的以来关系达到安装需要的组件的目的。redhat提供的解决方案,安装依赖关系库,就可以解决此问题,该文件可以用find -name rpmdb* 在rpm包所在文件夹中找到,然后运行 rpm -ivh --aid abc.rpm,abc.rpm为需要安装的包即可。当然复杂的时候还需要手动解决少数包依赖关系,简单的情况下,可以一次性解决所有以来关系。阅读全文
实践OK,您是否需要模拟初始登录,您可以使用它sudo -s来获取root shell。
来自:https://qa.1r1g.cn/serverfault/ask/25709631/
首先,提升用户至root
#su - (注意后面的-)
2、添加文件写权限。
chmod u+w /etc/sudoers (注:linux下)
chmod u+w /usr/local/etc/sudoers (注:FreeBSD下)
3、添加下面这一行至上述文件
username ALL=(ALL) ALL(注:linux下)
username ALL=(ALL) SETENV: ALL(注:FreeBSD下)
我的FreeBSD:
4、保存并退出
5、取消文件写权限
否则出现:sudo: /usr/local/etc/sudoers is mode 0640, should be 0440 (注:FreeBSD下)
chmod u-w /etc/sudoers (注:linux下)
chmod u-w /usr/local/etc/sudoers (注:FreeBSD下)
好了,这样就可以了。(最好重新登陆改账号!)
PS:
多谢那位兄弟的提醒。。。
来自:https://qa.1r1g.cn/serverfault/ask/25709631/
首先,提升用户至root
#su - (注意后面的-)
2、添加文件写权限。
chmod u+w /etc/sudoers (注:linux下)
chmod u+w /usr/local/etc/sudoers (注:FreeBSD下)
3、添加下面这一行至上述文件
username ALL=(ALL) ALL(注:linux下)
username ALL=(ALL) SETENV: ALL(注:FreeBSD下)
我的FreeBSD:
xiangdong2 ALL=(ALL) SETENV: ALL
4、保存并退出
5、取消文件写权限
否则出现:sudo: /usr/local/etc/sudoers is mode 0640, should be 0440 (注:FreeBSD下)
chmod u-w /etc/sudoers (注:linux下)
chmod u-w /usr/local/etc/sudoers (注:FreeBSD下)
好了,这样就可以了。(最好重新登陆改账号!)
PS:
多谢那位兄弟的提醒。。。
在邮件的smtp协议中通常对内容进行base64编码传输,在邮箱的path路径下如果是外域过来的信件一般都是经过编码的,自己本域的信件可能是明文存放,为此,出现了base64解码和编码,前些javascrip都可以实现,有专门写了个界面去干这事:
http://www.cnd8.com/down/24926.htm?no=1 可以下载!
http://www.cnd8.com/down/24926.htm?no=1 可以下载!
去sun下载一个jdk的bin包:
https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SingleVariationTypeFilter
然后对这个包:
chmod a+x jdk-6u11-linux-i586.bin
./jdk-6u11-linux-i586.bin
确认安装即可,然后将解压的文件放到自己的一个目录,修改PATH变量,然后在终端运行:
即可!
https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SingleVariationTypeFilter
然后对这个包:
chmod a+x jdk-6u11-linux-i586.bin
./jdk-6u11-linux-i586.bin
确认安装即可,然后将解压的文件放到自己的一个目录,修改PATH变量,然后在终端运行:
java
javac
javac
即可!
兄弟部门在全国N台服务器的空间放一些视频文件,由于只给我开放FTP帐号,于是找了一款Linux命令行下的FTP客户端软件──ncftp,用来作整个目录批量上传。ncftpput是它的一个附带程序,在shell脚本中调用ncftpput上传文件到FTP服务器,非常方便。
详细内容见其官方网站:http://www.ncftp.com/
编译安装:
示例:将本地/data0/htdocs/videofile/flv/games/目录内的所有文件和目录,上传到FTP服务器的flv/games/目录内(如果不存在flv/games/目录则自动创建)。
本人在freebsd安装了一下,没有问题,也能安装喔。。!
详细内容见其官方网站:http://www.ncftp.com/
编译安装:
wget ftp://ftp.ncftp.com/ncftp/ncftp-3.2.2-src.tar.gz
tar zxvf ncftp-3.2.2-src.tar.gz
cd ncftp-3.2.2/
./configure --prefix=/usr/local/ncftp
make && make install
tar zxvf ncftp-3.2.2-src.tar.gz
cd ncftp-3.2.2/
./configure --prefix=/usr/local/ncftp
make && make install
示例:将本地/data0/htdocs/videofile/flv/games/目录内的所有文件和目录,上传到FTP服务器的flv/games/目录内(如果不存在flv/games/目录则自动创建)。
/usr/local/ncftp/bin/ncftpput -u FTP帐号 -p FTP密码 -P FTP端口 -m -R 192.168.1.2 flv/games/ /data0/htdocs/videofile/flv/games/*
本人在freebsd安装了一下,没有问题,也能安装喔。。!
有一个文件如下:
我现在想显示每一行, 但每一行的最后一个字段不显示, 例如结果为:
请问应该怎么实现啊, 先谢谢了
awk '{$NF="";print}'
$NF是最后一个字段的内容,把最后一个字段清空!
二)AWK显示最后一列的写法,$NF最后一列的使用方法:
但是如何获取最后一列呢?
可以使用awk -F',' '{print $NF}' 来获取,mark一下
来自:https://blog.csdn.net/slx_2011/article/details/19827307
ls -lart /data/logs/nginx/*|awk '{print $NF}'
/data/logs/nginx/error.log
/data/logs/nginx/access.log
/data/logs/nginx/jackxiang.txt
/data/logs/nginx/jackX.tt
三)单独的NF是一个分割多少列的值:
NF 表示的是浏览记录的域的个数
$NF 表示的最后一个Field(列),即输出最后一个字段的内容
[root@localhost SHELL]# free -m | grep buffers\/
-/+ buffers/cache: 1815 1859
[root@localhost SHELL]# free -m | grep buffers\/ | awk '{print $NF}'
1859
[root@localhost SHELL]# free -m | grep buffers\/ | awk '{print NF}'
4
[root@localhost SHELL]#
---------------------
作者:lm_123_456
来源:CSDN
原文:https://blog.csdn.net/github_33736971/article/details/54286736
版权声明:本文为博主原创文章,转载请附上博文链接!
w aa n t ax d
t ch ae f
d jh ah s t ih s
t ch ae f
d jh ah s t ih s
我现在想显示每一行, 但每一行的最后一个字段不显示, 例如结果为:
w aa n t ax
t ch ae
d jh ah s t ih
t ch ae
d jh ah s t ih
请问应该怎么实现啊, 先谢谢了
awk '{$NF="";print}'
awk '{$NF="";print}' test.txt
$NF是最后一个字段的内容,把最后一个字段清空!
[root@vm19 ~]# awk '{$NF="";print}' test.txt
w aa n t ax
t ch ae
d jh ah s t ih
w aa n t ax
t ch ae
d jh ah s t ih
二)AWK显示最后一列的写法,$NF最后一列的使用方法:
但是如何获取最后一列呢?
可以使用awk -F',' '{print $NF}' 来获取,mark一下
来自:https://blog.csdn.net/slx_2011/article/details/19827307
ls -lart /data/logs/nginx/*|awk '{print $NF}'
/data/logs/nginx/error.log
/data/logs/nginx/access.log
/data/logs/nginx/jackxiang.txt
/data/logs/nginx/jackX.tt
三)单独的NF是一个分割多少列的值:
NF 表示的是浏览记录的域的个数
$NF 表示的最后一个Field(列),即输出最后一个字段的内容
[root@localhost SHELL]# free -m | grep buffers\/
-/+ buffers/cache: 1815 1859
[root@localhost SHELL]# free -m | grep buffers\/ | awk '{print $NF}'
1859
[root@localhost SHELL]# free -m | grep buffers\/ | awk '{print NF}'
4
[root@localhost SHELL]#
---------------------
作者:lm_123_456
来源:CSDN
原文:https://blog.csdn.net/github_33736971/article/details/54286736
版权声明:本文为博主原创文章,转载请附上博文链接!
Fedora7安装Beryl手记
http://hi.baidu.com/busybox/blog/item/3447378210883794f603a6bb.html
Compiz Fusion新增两大特效!“Vista”和“Leopard”:
http://hi.baidu.com/busybox/blog/item/3447378210883794f603a6bb.html
资料:
http://bbs.wuyou.com/viewthread.php?tid=104536&extra=page%3D5
http://cpublic.bloghome.cn/posts/94671.html
http://www.pmme.cn/archives/vista-vs-ubuntu-beryl/
http://hi.baidu.com/busybox/blog/item/3447378210883794f603a6bb.html
Compiz Fusion新增两大特效!“Vista”和“Leopard”:
http://hi.baidu.com/busybox/blog/item/3447378210883794f603a6bb.html
资料:
http://bbs.wuyou.com/viewthread.php?tid=104536&extra=page%3D5
http://cpublic.bloghome.cn/posts/94671.html
http://www.pmme.cn/archives/vista-vs-ubuntu-beryl/
搜听:http://mp3.iciba.com/viewsong-11357.shtml#
I never thought that I would feel this way
All I ever wanted was for love to stay 阅读全文
I never thought that I would feel this way
All I ever wanted was for love to stay 阅读全文
cherokee 号称是目前最快的 web 服务器软件,在性能上,甚至比 Nginx 还略胜一筹。与 Apache、Lighttpd、Nginx 等其他同类软件的对比,大家不妨看看这个测试页面。我在本机安装了 Cherokee,一番使用下来,Cherokee 给我的感觉是,其易用性做得也很不错。
Cherokee 的功能包括支持 FastCGI、SCGI、PHP、CGI、TLS 及 SSL 加密连接,虚拟主机,授权认证,实时编码,载入均衡,与 Apache 兼容的 log 文件等等。阅读全文
Cherokee 的功能包括支持 FastCGI、SCGI、PHP、CGI、TLS 及 SSL 加密连接,虚拟主机,授权认证,实时编码,载入均衡,与 Apache 兼容的 log 文件等等。阅读全文
理论上应该在/usr/local/etc/里,看见php.ini-dist和php.ini-recommend了,复制成php.ini,通过查看包对应的文件位置:
testsina# pkg_info -L php5-5.2.6_2|grep php.ini
/usr/local/etc/php.ini-dist
/usr/local/etc/php.ini-recommended
/usr/local/include/php/main/php_ini.h
/usr/local/etc/php.ini-dist
/usr/local/etc/php.ini-recommended
/usr/local/include/php/main/php_ini.h