sudo scutil –set HostName MacBookPro
在10.12版本测试通过
[root@WebServer3 ~]# ssh-keygen -t rsa
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:
a2:1d:43:32:26:06:68:48:d5:62:16:6d:a2:c7:53:8c root@WebServer3
输入命令后直接都按回车就行。
第一提示是密钥保存位置
Enter file in which to save the key (/root/.ssh/id_rsa):
直接回车保存到默认地方 /root/.ssh/id_rsa
第二个提示是输入一个不同于你的password的密码。直接按回车,不输入密码,保持密码为空。
其中公共密钥保存在 ~/.ssh/id_rsa.pub
私有密钥保存在 ~/.ssh/id_rsa
拷贝密钥文件到目标服务器
[root@WebServer3 ~]#scp ~/.ssh/id_rsa.pub 192.168.0.23:/root/.ssh/authorized_keys
注:需要判断authorized_keys是否存在已经被授权的机器,别把之前的覆盖掉
vim ~/.ssh/config host * ControlMaster auto ControlPath ~/.ssh/cm_socket/master-%r@%h:%p 注:在自己mac终端
mkdir ~/.ssh/cm_socket
command + q 退出并重启终端才能生效
信号 Defalut 信号产生原因 1) SIGHUP Term 当用户退出shell时,由该shell启动的所有进程将收到这个信号 2) SIGINT Term 当用户按下了组合键时,用户终端向正在运行中的由该终端启动的程序发出此信号 3) SIGQUIT Core 当按下 组合键时产生该信号,终端向正在运行中的由该终端启动的程序发出些信号 4) SIGILL Core CPU检测到某进程执行了非法指令 5) SIGTRAP Core 该信号由断点指令或其他 trap指令产生 6) SIGABRT Core 调用abort函数时产生该信号 7) SIGBUS Core 非法访问内存地址,包括内存对齐出错 8) SIGFPE Core 在发生致命的运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为0等所有的算法错误 9) SIGKILL Term 无条件终止进程。本信号不能被忽略,处理和阻塞。 10) SIGUSE1 Term 用户定义的信号,即程序员可以在程序中定义并使用该信号。 11) SIGSEGV Core 指示进程进行了无效内存访问(段错误会产生该信号) 12) SIGUSR2 Term 这是另外一个用户自定义信号 ,程序员可以在程序中定义 并使用该信号 13) SIGPIPE Term Broken pipe向一个没有读端的管道写数据 14) SIGALRM Term 定时器超时,超时的时间 由系统调用alarm设置 15) SIGTERM Term 程序结束信号,与SIGKILL不同的是,该信号可以被阻塞和终止。通常用来要示程序正常退出 16) SIGSTKFLT Term 协处理器堆栈错误 17) SIGCHLD Ign fork() 子进程结束时,父进程会收到这个信号 18) SIGCONT Cont 在进程挂起时继续,否则是忽略,不能被忽略,处理和阻塞 19) SIGSTOP Stop 提供给管理员暂停进程的特权,不能被忽略,处理和阻塞 20) SIGTSTP Stop 停止进程的运行。按下 组合键时发出这个信号 21) SIGTTIN Stop 后台进程读终端控制台 22) SIGTTOU Stop 该信号类似于SIGTTIN,在后台进程要向终端输出数据时发生 23) SIGURG Ign 套接字上有紧急数据时,向当前正在运行的进程发出些信号,报告有紧急数据到达 24) SIGXCPU Term 进程执行时间超过了分配给该进程的CPU时间 ,系统产生该信号并发送给该进程 25) SIGXFSZ Term 超过文件的最大长度设置 26) SIGVTALRM Term 虚拟时钟超时时产生该信号。类似于SIGALRM,但是该信号只计算该进程占用CPU的使用时间 27) SIGPROF Term 类似于SIGVTALRM,它不公包括该进程占用CPU时间还包括执行系统调用时间 28) SIGWINCH Ign 窗口变化大小时发出 29) SIGIO Ign 此信号向进程指示发出了一个异步IO事件 30) SIGPWR Term 关机 31) SIGSYS Core 无效的系统调用
参考资料:http://www.mycode.net.cn/platform/653.html
git不能添加空目录,目前找到的解决方法有两个:
1、在空目录添加一个任意的文件占位
2、再空目录添加一个git规则文件,类似于apache中的.htaccess rewrite文件
文件名称:
.gitignore
文件内容:
# Ignore everything in this directory 这样写的话补单可以解决添加空目录的问题,也顺便解决了有些文件不需要提交到git主干,比如log日志文件 * # Except this file !.gitignore !.gitignore
下面的方法来自网络,其实也没见多块,有个目录下有几百万个平均3M的文件,也是删了好久才删完,所以这个方法有待考究。。。
当我们在linux系统中要删除数万或者数十万甚至数百万的文件时使用rm -rf *就不太好用,因为要等待很长一段时间。在这种情况之下我们可以使用linux系统命令rsync来巧妙的处理。rsync实际上用的是替换原理,处理数十万个文件也是秒删。
1. rsync安装,有些系统默认安装有该命令
ubuntu系统:sudo apt-get install rsync
fedora 系统:sudo yum install rsync
其他的可以源码安装,到下面的网站下载
http://rsync.samba.org
2. rsync提供了一些跟删除有关的参数
rsync –help | grep delete
–del an alias for –delete-during
–delete delete extraneous files from destination dirs
–delete-before receiver deletes before transfer, not during
–delete-during receiver deletes during transfer (default)
–delete-delay find deletions during, delete after
–delete-after receiver deletes after transfer, not during
–delete-excluded also delete excluded files from destination dirs
–ignore-errors delete even if there are I/O errors
–max-delete=NUM don’t delete more than NUM files
其中–delete-before接收者在传输之前进行删除操作
3. 示例
清空目录或文件,如下:
1、先建立一个空目录
mkdir /data/blank
2、用rsync删除目标目录
rsync –delete-before -d -a -H -v –progress –stats /data/blank/ /var/edatacache/
或者
rsync –delete-before -d /data/blank/ /var/edatacache/
这样/var/edatacache目录就被快速的清空了。
选项说明:
–delete-before 接收者在传输之前进行删除操作
–progress 在传输时显示传输过程
-a 归档模式,表示以递归方式传输文件,并保持所有文件属性
-H 保持硬连接的文件
-v 详细输出模式
–stats 给出某些文件的传输状态
-d transfer directories without recursing
3、也可以用来删除大文件
假如我们在/root/下有一个几十G甚至上百G的文件data,现在我们要删除它
一、创建一个空文件
touch /root/empty
二、用rsync清空/root/data文件
rsync –delete-before -d –progess –stats /root/empty /root/data
注意:
当SRC和DEST文件性质不一致时将会报错
当SRC和DEST性质都为文件【f】时,意思是清空文件内容而不是删除文件
当SRC和DEST性质都为目录【d】时,意思是删除该目录下的所有文件,使其变为空目录
/home/pay/local/mysql56/bin/mysqladmin -uroot -p processlist | grep ‘LOAD DATA’ |awk -F’|’ ‘{print $2}’ |xargs -n 1 /home/pay/local/mysql56/bin/mysqladmin -uroot -p kill
参考资料:
http://www.cnblogs.com/siqi/p/3984499.html
LOAD方式可以参考:mysql将csv格式的文件导入
mysqldump添加where条件的方法:
mysqldump -u用户名 -p密码 数据库名 pre_home_comment –where=” dateline > 1277495460″ > C://forum_comment_new_data.sql
参考资料:
http://imysql.com/2007_10_15_large_innodb_table_export_import
实践1:
对于超级大表(上千万行)的导入:
split -l 100 t_recvables_2016-10-15.sql
我这里采用分批导入
1、split -l 100 t_recvables_2016-10-15.txt
2、for f in `ls x*`;do db_mine –default-character-set=gbk db_finance < $f; wait; echo $f” done.”; done;
注意:这里遇到一个问题:
ERROR 1406 (22001) at line 1: Data too long for column ‘fail_reason’ at row 2
解决方法是–default-character-set=gbk,可是建表语句其实是utf8,具体原因没研究,不过换成gbk确实解决了问题
参考资料:
http://www.cnblogs.com/ovliverlin/archive/2007/11/26/972549.html
http://hunan.iteye.com/blog/752606
PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的!
主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意
1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖)
2)键名为字符时,+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值
需要注意的是数组键形式 ‘数字’ 等价于 数字
$a = array('a','b'); $b = array('c','d'); $c = $a + $b; var_dump($c); var_dump(array_merge($a, $b)); //输出内容 array(2) { [0]=> string(1) "a" [1]=> string(1) "b" } array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" }