# 源文件 [root@localhost ~]# cat 111 that's venus file dont edit it by venus # 替换字符串 [root@localhost ~]# sed -i 's/venus/simon/' 111 [root@localhost ~]# cat 111 that's simon file dont edit it by simon 可以看到venus都被替换为simon # 字符串中包含单引号的替换 [root@localhost ~]# cat 111 that's simon file dont edit it by simon sed中的单引号需要换成双引号 [root@localhost ~]# sed -i "s/that's/aaa/" 111 [root@localhost ~]# cat 111 aaa simon file dont edit it by simon # 字符串中包含双引号的替换 [root@localhost ~]# cat 111 that"s simon file dont edit it by simon [root@localhost ~]# sed -i 's/that"s/aaa/' 111 [root@localhost ~]# cat 111 aaa simon file dont edit it by simon # 对于带$符号的替换 [root@localhost ~]# cat 111 name=venus that's $name file dont edit it by simon [root@localhost ~]# sed -i 's/$name/aaa/' 111 [root@localhost ~]# cat 111 name=venus that's aaa file dont edit it by simon 不需要转义 # 插入 行下面 [root@localhost ~]# cat 111 a b c 在a下面插入eee字符串 [root@localhost ~]# sed -i '/a/a\eee' 111 [root@localhost ~]# cat 111 a eee b c # 在a上面插入fff字符串 [root@localhost ~]# cat 111 a eee b c abc eee [root@localhost ~]# sed -i '/a/i\fff' 111 [root@localhost ~]# cat 111 fff a eee b c fff abc eee # 插入有特殊字符的 [root@localhost ~]# cat 111 a b c [root@localhost ~]# sed -i '/a/a\hello world \\' 111 [root@localhost ~]# cat 111 a hello world \ b c 就需要转义特殊字符 # 插入带换行的字符串 [root@localhost ~]# cat 111 a b c [root@localhost ~]# sed -i '/b/a\hello world \\\nhello world2' 111 [root@localhost ~]# cat 111 a b hello world \ hello world2 c 通过\n来换行
- Linux用户(以Ubuntu为例)
$ openssl
进入OpenSSL程序OpenSSL> genrsa -out rsa_private_key.pem 1024
生成私钥OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
Java开发者需要将私钥转换成PKCS8格式OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
生成公钥OpenSSL> exit ##
退出OpenSSL程序 - Windows用户在cmd窗口中进行以下操作:
C:\Users\Hammer>cd C:\OpenSSL-Win32\bin
进入OpenSSL安装目录C:\OpenSSL-Win32\bin>openssl.exe
进入OpenSSL程序OpenSSL> genrsa -out rsa_private_key.pem 1024
生成私钥OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
Java开发者需要将私钥转换成PKCS8格式OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
生成公钥OpenSSL> exit ##
退出OpenSSL程序
注意:对于使用Java的开发者,将pkcs8在console中输出的私钥去除头尾、换行和空格,作为开发者私钥,对于.NET和PHP的开发者来说,无需进行pkcs8命令行操作。
经过以上步骤,开发者可以在当前文件夹中(Windows用户在C:\OpenSSL-Win32\bin)看到rsa_private_key.pem和rsa_public_key.pem两个文件,前者为私钥,后者为公钥。开发者将私钥保留,将公钥提交给支付宝网关,用于信息加密及解密。以下为使用OpenSSL生成的私钥文件和公钥文件示例。
- 标准的私钥文件示例(PHP、.NET使用)
123
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQC+L0rfjLl3neHleNMOsYTW8r0QXZ5RVb2p/vvY3fJNNugvJ7lo4+fdBz+LN4mDxTz4MTOhi5e2yeAqx+v3nKpNmPzC5LmDjhHZURhwbqFtIpZD51mOfno2c3MDwlrsVi6mTypbNu4uaQzw/TOpwufSLWF7k6p2pLoVmmqJzQiD0QIDAQABAoGAakB1risquv9D4zX7hCv9MTFwGyKSfpJOYhkIjwKAik7wrNeeqFEbisqv35FpjGq3Q1oJpGkem4pxaLVEyZOHONefZ9MGVChT/MNH5b0FJYWl392RZy8KCdq376Vt4gKVlABvaV1DkapL+nLh7LMo/bENudARsxD55IGObMU19lkCQQDwHmzWPMHfc3kdY6AqiLrOss+MVIAhQqZOHhDe0aW2gZtwiWeYK1wB/fRxJ5esk1sScOWgzvCN/oGJLhU3kipHAkEAysNoSdG2oWADxlIt4W9kUiiiqNgimHGMHPwp4JMxupHMTm7D9XtGUIiDijZxunHv3kvktNfWj3Yji0661zHVJwJBAM8TDf077F4NsVc9AXVs8N0sq3xzqwQD/HPFzfq6hdR8tVY5yRMb4X7+SX4EDPORKKsgnYcur5lk8MUi7r072iUCQQC8xQvUne+fcdpRyrR4StJlQvucogwjTKMbYRBDygXkIlTJOIorgudFlrKP/HwJDoY4uQNl8gQJb/1LdrKwIe7FAkBl0TNtfodGrDXBHwBgtN/t3pyi+sz7OpJdUklKE7zMSBuLd1E3O4JMzvWP9wEE7JDb+brjgK4/cxxUHUTkk592
-----END RSA PRIVATE KEY-----
- PKCS8处理后的私钥文件示例(Java使用)
123
-----BEGIN PRIVATE KEY-----
MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAN0yqPkLXlnhM+2H/57aHsYHaHXazr9pFQun907TMvmbR04wHChVsKVgGUF1hC0FN9hfeYT5v2SXg1WJSg2tSgk7F29SpsF0I36oSLCIszxdu7ClO7c22mxEVuCjmYpJdqb6XweAZzv4Is661jXP4PdrCTHRdVTU5zR9xUByiLSVAgMBAAECgYEAhznORRonHylm9oKaygEsqQGkYdBXbnsOS6busLi6xA+iovEUdbAVIrTCG9t854z2HAgaISoRUKyztJoOtJfI1wJaQU+XL+U3JIh4jmNx/k5UzJijfvfpT7Cv3ueMtqyAGBJrkLvXjiS7O5ylaCGuB0Qz711bWGkRrVoosPM3N6ECQQD8hVQUgnHEVHZYtvFqfcoq2g/onPbSqyjdrRu35a7PvgDAZx69Mr/XggGNTgT3jJn7+2XmiGkHM1fd1Ob/3uAdAkEA4D7aE3ZgXG/PQqlm3VbE/+4MvNl8xhjqOkByBOY2ZFfWKhlRziLEPSSAh16xEJ79WgY9iti+guLRAMravGrs2QJBAOmKWYeaWKNNxiIoF7/4VDgrcpkcSf3uRB44UjFSn8kLnWBUPo6WV+x1FQBdjqRviZ4NFGIP+KqrJnFHzNgJhVUCQFzCAukMDV4PLfeQJSmna8PFz2UKva8fvTutTryyEYu+PauaX5laDjyQbc4RIEMU0Q29CRX3BA8WDYg7YPGRdTkCQQCG+pjU2FB17ZLuKRlKEdtXNV6zQFTmFc1TKhlsDTtCkWs/xwkoCfZKstuV3Uc5J4BNJDkQOGm38pDRPcUDUh2/
-----END PRIVATE KEY-----
- 公钥文件示例
123
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB
-----END PUBLIC KEY-----
2.3.3.上传公钥
将公钥文件去除头尾、换行和空格,仅需填入字符串,例如转换前公钥pem文件格式:
1
2
3
|
-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB -----END PUBLIC KEY----- |
转换后得到的字符串为:
1 |
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB |
linux内核官网: www.kernel.org 获取最新内核
目前最新稳定版: wget -c https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.5.2.tar.xz
安装编译环境: yum install -y gcc gcc-c++ ncurses-devel openssl-devel
tar.xz 文件解压
xz -z 压缩
xz -d 解压
这里需要在系统原有的内核配置文件的基础上建立新的编译选项,所以复制一份之前的配置文件到内核源码目录下,命名为.config。
[root@localhost ~]# cp /boot/config-3.10.0-327.el7.x86_64 linux-4.5.2/.config
选择NTFS写入支持:
[root@localhost linux-4.5.2]# make menuconfig 这一步会读取之前复制过来的.config文件内容并做为初始值,在此基础加新的模块。
截图略:
File systems —>DOS/FAT/NT Filesystems —> 按空格选中 [*] NTFS write support 通过TAB切换选择save,根据提示一路保存
生成内核文件:
[root@localhost linux-4.5.2]# make bzImage
[root@localhost linux-4.5.2]# make modules
[root@localhost linux-4.5.2]# make modules_install
[root@localhost linux-4.5.2]# make install
更改默认启动项为最新内核:
[root@localhost ~]# vim /boot/grub2/grub.cfg
查看当前 menuentry 菜单入口
最新的为 ‘CentOS Linux (4.5.2) 7 (Core)’ 通过4.5.2是内核版本确认是刚安装的新内核
[root@localhost ~]# vim /boot/grub2/grubenv 更改为最新 menuentry
屏蔽原先内容,添加:
saved_entry=CentOS Linux (4.5.2) 7 (Core)
reboot机器
[root@localhost ~]# uname -a
Linux localhost.localdomain 4.5.2 #1 SMP Wed Apr 27 22:20:39 CST 2016 x86_64 x86_64 x86_64 GNU/Linux
看到内核为最新的了。
PS:
通过runlevel命令查看当前运行级别。 grub列表按E编辑,还是single为单用户模式,按ctrl+x启动,以前6版本为按B启动。
#替换字符串 用法:REPLACE(字符串,关键词,替换内容)
SELECT REPLACE('aaaaabc','abc','ppp');
# 返回值 aaaappp
# REPLACE INTO 向表插入/更新数据,如果唯一键存在则更新全部字段否则插入,注意如果更新的字段为空,则清空字段。如果未定义列,则此列为(NULL)
插入操作:
REPLACE INTO `test1` (`id`,`name`) VALUES ('1','a'),('2','b');
插入两条数据,id是唯一键,不存在,则插入数据。
更新操作:
REPLACE INTO `test1` (`id`,`name`,`age`) VALUES ('1','a','11'),('2','b','22');
唯一键存在,则更新数据,更新id=1的name=a,age=11。更新id=2的name=b,age=22 (全部更新)
更新name字段 a=>22:
REPLACE INTO `test1` (`id`,`name`,`age`) VALUES ('1','22','11'),('2','b','22');
更新name字段 22=>aa,并且不定义age列:
REPLACE INTO `test1` (`id`,`name`) VALUES ('1','aa'),('2','b');