最近在做公司的服务器网络监控。由于要做到实时监控,所以想到要用发送短信到手机的方式。在网上找到一个linux命令行下的飞信工具。来配合 nagios做监控。服务器有任何状况都可以发送短信到手机上。这样对于系统管理者来说很是方便。我在Debian和Ubuntu下测试成功。下面是飞信在debian系统的安装过程。

1.首先手机要开通中国移动的飞信业务。目前使用飞信发送短信是免费的。

2.下载飞信的linux客户端程序.解开包后只有一个文件sms。不错。这个就是飞信发送短信的程序啦。现在的飞信还是不能用的。因为它需要libace的glibc库的支持。阅读全文
http://www.rwang.cn/Dowanloading.html

想玩3D桌面,但不會裝的朋友,
體驗fedora core6 + beryl 3D效果

fc6+beryl本站下載點:  ftp://cle.linux.org.tw/OSSACC/pakelivecd/fc6-livecd.iso 阅读全文
实际例子先:
(1)想要截获所有172.25.38.70的主机收到的和发出的所有的数据包:


(2)

(3)截取长度为5000,抓取10000个包,网卡为eth1,所有80端口到日志文件log.dmp中:

上面参数的说明如下:
tcpdump -i $Nnet -s 5000 -c 10000 dst port $db   -w log.dmp    监听$nnet,抓取10000个送到$db端口的包,截取每个包的前5000bytes保存到log.dmp文件中。
-i 指定监听哪个网络端口
-s 截取包的长度,0表示截取整个数据包
-c参数指定要监听的数据包数量
dst 监视所有目标端口为$db的数据包
-w 输出到名为log.dmp的文件中
阅读全文
如果会话窗口被kill,状态转为dead无法连接,可以使用screen -wipe命令清除会话窗口:


开机启动screen并在后台运行其他程序:
目的:开机启动后能看到输出日志,方便调试代码:

cat /home/irdcops/shell/starteasyswoole/start.sh



测试执行:
chmod a+x /home/irdcops/shell/starteasyswoole/start.sh
sh /home/irdcops/shell/starteasyswoole/start.sh
#screen  -ls
        3573.easyswoole (Detached)
screen -x 3573


放到开机启动:
vi /etc/rc.local
#开机启动easyswoole
sh /home/irdcops/shell/starteasyswoole/start.sh

screen建立新窗口时更改窗口尺寸:
CentOS 下禁止screen建立新窗口

实践OK来自:https://blog.csdn.net/zbuter/article/details/79520721

时更改窗口尺寸

Xshell或Putty之类的连接到Centos下使用screen时会改变窗口的尺寸,非常烦人,可以通过如下方法修改使其不更改窗口尺寸。

编辑/etc/screenrc或~/.screenrc 加入下面的代码

# Change the xterm initialization string from is2=\E[!p\E[?3;4l\E[4l\E>  
# (This fixes the "Aborted because of window size change" konsole symptoms found  
#  in bug #134198)
termcapinfo xterm* 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'

来自: https://www.linuxidc.com/Linux/2015-12/126193.htm


screen中rz/sz无效?貌似无解。参考 https://www.wikivs.com/wiki/screen_vs_tmux ,zmodem transfers是screen only的功能。
Sz 卡死怎么办?杀死它:        ps aux|grep screen |grep -v grep|awk '{print "kill -9 " $2}'|sh
安装:
CentOS下安装screen:yum install screen

0、创建screen会话:
screen -S wordname

1、查看当前全部的 screen :
$screen -ls
会显示下面的信息:
[root@localhost uploadPythonTest]# screen -ls
There are screens on:
        20893.test      (Attached)
        21055.jack      (Attached)
其中每一条最前面的就是 screen 的 id

2、连接到 detached 的 screen :
$screen -r 1542  //只能一个终端连接,可以用screen -x test (会话名:如果忘记或者刚开始没有指定会话名,执行screen -ls列出当前的会话列表;),或screen -x 20893观看,事家证明观看终端也能修改,只要一个观看终端用exit退出,其它都灰飞烟灭了。如下:
[root@localhost uploadPythonTest]# screen -ls
There are screens on:
        20893.test      (Attached)
        21055.jack      (Attached)
特殊情况:
[root@iZ25dcp92ckZ multepoolserver]# screen -ls
There are screens on:
        15141.swoole    (Detached)
        2470.swoole     (Detached)
        29718.pts-1.iZ25dcp92ckZ        (Detached)
[root@iZ25dcp92ckZ multepoolserver]# screen -x 15141.swoole  //不能只写:screen -x swoole,因为两个一样的,只是编号不一样,要么写:screen -x 15141也成。screen -r 也是一样的道理。


两人时实看到对方的操作的话可以用 screen命令 相同用户一个再终端输入screen 另一个输入screen -x 然后你们每个人的操作都可以看到对方。
screen -x  jack       或:  screen -x  21055

3、暂时离开从 screen 中退出(但不关闭 screen 进程):
按 Ctrl-A-D,暂时离开,保留screen会话中的任务或程序,当需要临时离开时(会话中的程序不会关闭,仍在运行)可以用快捷键Ctrl+a d(即按住Ctrl,依次再按a,d)

4.恢复会话,恢复screen会话:
当回来时可以再执行执行:screen -r wordname 即可恢复到离开前创建的lnmp会话的工作界面。
如果忘记或者刚开始没有指定会话名,执行screen -ls列出当前的会话列表;

screen -d -r yourname -> 结束当前session并回到yourname这个session
screen -d -r swooleHello //不是在screen或screen里可以直接跳转到另一个screen
5、关闭screen会话:
执行:exit  ,实践发现:无论用screen -x test多少个terminal进行同时操作演示,一旦任意有一个退出,整个就退了了。不想退出得按ctrl + a +d挂起继续干其它事情。

6、远程演示:

首先在服务器上执行screen -S test创建一个screen的会话,观众可以链接到 远程服务器执行screen -x test 这样观众的屏幕上就会出现和演示者同步的内容。

7、常用的快捷键

Ctrl + a c 在当前screen会话中创建窗口
Ctrl + a w 窗口列表
Ctrl + a n 下一个窗口
Ctrl + a p 上一个窗口
Ctrl + a 0-9 在第0个窗口和第9个窗口之间切换
______________________________________________________
Linux让程序后台运行命令之screen与nohup:
http://www.2cto.com/os/201110/109458.html

Linux Screen 超简单用法:
http://www.cnblogs.com/biggates/archive/2013/01/30/2883164.html
______________________________________________________
===Gaston:
ctrl+a c 创建scree
ctrl+a p  上一个scree
ctrl+a n 下一个scree

===
检查是否在screen中:tty
结果应该为:/dev/pts/0
退出:Ctrl+a+d
===
Linux结束screen进程:
linux screen 全部退出 -- 脚本

来自:http://blog.csdn.net/lucktroy/article/details/7704115

以下是自己实践Ok的:
----------------------------------------------------------------------------------------------------------------------
以下都是在screen里面才能有效的快捷键【ctrl-a】:
首先进入scree里后:也就是如输入screen后,如:screen -S jackxiang ,下面的快捷键才能用。
Ctrl-a c              新建 bash screen 终端  【这个也很有用】
Ctrl-a "              列出 【这个最有用,可以列出来选】
Ctrl-a A             重命名  【这个可以用来做一个终端开发时用,结合上面的Ctrl-a "   很好用】
Ctrl-d                 退出当前的screen,如果没有进入screen,该命令失效



进而可以替代上面的 Ctrl-a "  命令,实现快速切换的功能,实践是Ok的。(来自:gastonwu):
ctrl+a c 创建scree
ctrl+a p  上一个scree
ctrl+a n 下一个scree

screen -S name  以name命名的会话  【 这个在一开始就拿好名也会用到】
screen -r name/ID //回到名称为name的会话  【实践有些问题,可能是没用好?这个是用来做一些自己前面自己命名好的name返回】
screen -d -r //可以把一个正在运行的会话抢过来   这种情况是在两人都有用screen的情况下打劫
----------------------------------------------------------------------------------------------------------------------


安装完成后可以直接使用screen相关命令操作
1)screen -ls //列出当前有哪些Screen在运行
2)screen -S name //以name命名的会话
3)screen -r name/ID //回到名称为name的会话
4)
[root@test ~]# screen -ls
抢会话: 2542编号
screen -d -r 2542
抢后: 变为attached
screen -ls
There are screens on:
2542.pts-0.localhost    (Attached)
2728.name       (Attached)


screen -S  jackxiang
screen -ls jackxiang这个自己命名的会话出来了
There are screens on:
2542.pts-0.localhost    (Attached)
2728.name       (Attached)
2851.jackxiang  (Attached)

从另一个终端把这个jackxiang抢过来:
screen -d -r jackxiang //这时这个会话给我抢了,被抢的终端显示:[remote detached],并退出。

tty看下:
root@192.168.137.128:~# tty
/dev/pts/10
Ctrl-a S 新建水平分割窗口(大写S,用shift+s写大写,测试Ok)
Ctrl-a Tab 切换窗口 (测试Ok)
---------------------------------------------------------------------------------------------------------------------------------
比如centos32位的,可以执行以下命令安装:
yum install screen

其实就是虚拟终端,你可以用它创建很多虚拟终端,每个终端可以创建1~10个窗口,每个窗口相当于一个linux shell窗口,可以执行的操作和正常shell完全一样。
终端中的窗口操作】(挂载某个终端)
Ctrl-a c         新建 bash screen 终端
Ctrl-a "         列出
Ctrl-a A         重命名
Ctrl-a n         在当前窗口中切换到下一个 screen 终端
Ctrl-a p         在当前窗口中切换到上一个 screen 终端  
Ctrl-a 空格      窗口切换
Ctrl+a w :窗口列表
Ctrl+a 0-9 :在第0个窗口和第9个窗口之间切换
Ctrl+a K(大写) :关闭当前窗口,并且切换到下一个窗口(当退出最后一个窗口时,该终端自动终止,并且退回到原始shell状态)
exit :关闭当前窗口,并且切换到下一个窗口(当退出最后一个窗口时,该终端自动终止,并且退回到原始shell状态)
来自:http://hi.baidu.com/willor/item/3b60db19132035fd65eabfab

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以下来自:http://blog.hackroad.com/read.php/573.htm
代码:Ctrl-a c 新建 bash screen 终端
Ctrl-a " 列出
Ctrl-a A 重命名
Ctrl-a n 在当前窗口中切换到下一个 screen 终端
Ctrl-a p 在当前窗口中切换到上一个 screen 终端

Ctrl-a d 断开所有 screen 终端,返回 screen 执行前状态,但 screen 内所有终端的任务都在执行
screen -ls 列出当前用户的所有 screen 实例,包括联接和断开的
screen -R 重新联接到已断开的 screen 实例,如果有多个已断开的 screen 实例,则用 区分

Ctrl-a 进入选择模式
或 Ctrl-u 光标上移一页
或 Ctrl-d 光标下移一页
或 h 光标左移一格
或 j 光标下移一行
或 k 光标上移一行
或 l 光标右移一格
选择开始,选择结束
退出选择模式
Ctrl-a ] 粘贴选择的内容
----------------------------------------------------------------------------------------------------------------------
如果你没有安装有screen,可以到以下网站搜索适合你的系统的RPM包。
http://www.rpmfind.net/linux/rpm2html/search.php?query=screen
我是6.3能找到如下centos的东东,并下载安装是Ok的:
CentOS 6.3 for x86_64  screen-4.0.3-16.el6.x86_64.rpm
CentOS 6.4 for i386  screen-4.0.3-16.el6.i686.rpm
CentOS 6.3 for i386  screen-4.0.3-16.el6.i686.rpm
CentOS 6.4 for x86_64  screen-4.0.3-16.el6.x86_64.rpm

----------------------------------------------------------------------------------------------------------------------
Screen 用法:
#screen
进入新的终端,然后:ctrl+a+p  回到前终端,再:ctrl+a+n到当前运行screen后的终端。
#screen -ls
参考终端情况, 26889.pts-7.vm19        (Detached)
通过:
screen -r 26889;
wget *.iso 很大
关掉终端!

[xiangdong2@vm19 ~]$ screen -ls
There is a screen on:
        26889.pts-7.vm19        (Detached)
1 Socket in /var/run/screen/S-xiangdong2.


screen -r 26889

exit推出挂起的screen...



作用:可以在不同tty之间共享

1. 安装rpm包

查询是否有相关安装包:yum search screen

安装:yum install screen.i386

2. 创建窗口:screen

3. 检查是否在screen中:tty

结果应该为:/dev/pts/0

4. 退出:Ctrl+a+d

5. 查看screen编号:screen -ls

6. 再进入screen:screen -r screen名字

7. 关闭screen:Ctrl+d

---------------------------------------------------------------------------------------------------------------------------------------------
功能说明:

使用telnet或SSH远程登录linux时,如果连接非正常中断,重新连接时,系统将开一个新的session,无法恢复原来的 session.screen命令可以解决这个问题。Screen工具是一个终端多路转接器,在本质上,这意味着你能够使用一个单一的终端窗口运行多终端的应用。

语  法:

screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]阅读全文
  cmwap和cmnet的区别,很多人都知道这是移动提供的两个不同的接入点,但是说到区别,恐怕很多玩家都不是十分清楚。其实,CMWAP 和 CMNET 只是移动人为划分的两个GPRS接入方式。前者是为手机WAP上网而设立的,后者则主要是为PC、笔记本电脑、PDA等利用GPRS上网服务。它们在实现方式上并没有任何差别,但因为定位不同,所以和CMNET相比,CMWAP便有了部分限制,资费上也存在差别


    需要注意的是,20元包月仅限于手机浏览WAP产生的流量,如果用户通过手机连接笔记本访问Internet,则会产生CMNET流量费,收费要按0.03元/KB计算。用户可以删除手机中的CMNET接入点来避免产生高昂的CMNET流量费。


   在中关村等电脑卖场,可以看到从广东、浙江等地窜货过来的GPRS包月卡,很多在校学生都是一部手机用2张SIM卡,一张用来打电话,一张用来上网,原因就是北京移动的GPRS资费长期居高不下!
最后,还是扣了200多个大洋,考!
http://www.fdigg.net/list.aspx?word=CentOS-5.2-x86_64-bin-DVD.iso&level=0&schoolId=0&Input=
FreeBsd:
21% [===========>                                               ] 966,787,336 2.15M/s  eta 35m 54s
这个速度我想你喜欢,呵呵呵!

ftp://166.111.8.205/mirror/
一、GNU gcc的编译工具用法

我们先来写一个简单的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. }  


定义了一个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中的代码

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
内网机器:
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在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


安装rpm得到libstdc++.so.6的机器:
[root@vm19 /]# uname -rsp
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)

比对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

[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

果然:
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

如何是好???难道运维人员是用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 -zxvf ***.tar.gz

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解决了。
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

uname -rsp
FreeBSD&Linux:

/etc/pam.d/


netstat -ntp
一、读大学,究竟读什么?
  大学生和非大学生最主要的区别绝对不在于是否掌握了一门专业技能,一个经过独立思考而坚持错误观点的人比一个不假思索而接受正确观点的人更值得肯定,草木可以在校园年复一年地生长,而我们却注定要很快被另外一群人替代,尽管每次网到鱼的不过是一个网眼,但要想捕到鱼,就必须要编织一张网。
  
  二、人生规划:三岔路口的抉择
  不走弯路就是捷径,仕途,商界,学术。在这人生的三岔路口,你将何去何从,与其跟一百个人去竞争五个职位,不如跟一个人去竞争一个职位,学术精神天然的应当与尘嚣和喧哗保持足够的距离,商场不忌讳任何神话。你也完全可能成为下一个传奇。
  
  三、专业无冷热,学校无高低
  没有哪个用人单位会认为你代表了你的学校或者你的专业,既然是概率,就存在不止一种可能性,如果是选择学术,冷门专业比热门专业更容易获得成就,跨专业几乎早已成为一种流行一种时尚,大学之间的实力之争到了考研考场和人才市场原来是那样的微不足道。阅读全文
[1]好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的体会,以后钱根本不是问题。频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新手!   
[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为需要安装的包即可。当然复杂的时候还需要手动解决少数包依赖关系,简单的情况下,可以一次性解决所有以来关系。阅读全文
实践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:
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  可以下载!
分页: 260/339 第一页 上页 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 下页 最后页 [ 显示模式: 摘要 | 列表 ]