CentOS7修改时区的正确姿势

https://blog.csdn.net/yin138/article/details/52765089

CentOS7修改时区的正确姿势 
今天在CentOS7上运行Java程序,发现程序生成的时间与当前时间匹配不上,还以为是数据停止更新了,后来发现没有正确使用修改时区的姿势,导致程序时区错误。 
正确的修改CentOS7 时区的姿势:

其他系统的修改文件可能是/var/etc/localtime. 
错误的姿势,通过cp命令覆盖/etc/localtime时间。 
我就是通过百度的结果修改的,导致了悲剧发生。 
通过cp命令修改时区,通过date, data -R命令显示的时区都是正确的,可是对于java程序而言,是错误的,具体原因在于Java访问系统时区的方式上,可参见文章:Java TimeZone 和 Linux TimeZone问题。 
该文章很好的说明了Java访问系统时区的方式: 
1. 如有环境变量 TZ设置,则用TZ中设置的时区 
2. 在 /etc/sysconfig/clock文件中找 “ZONE”的值 
3. 如何2)都没,就用/etc/localtime 和 /usr/share/zoneinfo 下的时区文件进行匹配,如找到匹配的,就返回对应的路径和文件名。 
问题在于,如果使用cp命令来修改/etc/localtime文件,那么可能就会导致修改的不是/etc/localtime文件,而是原时区的文件内容. 
/etc/localtime是通过符号链接链接/usr/share/zoneinfo下的文件,而java是通过文件名来确认时区的,data命令是通过文件内容确认时区的,这样就导致了data命令时区正确,而java的时区是错误的. 
CentOS下/etc/localtime是符号链接 
如上图所示:CentOS7是通过符号链接到/usr/share/zoneinfo/下的时区文件的,如果通过cp指令只会修改原时区文件内容,这样,通过date的系统命令,查看时间是OK的,可是java是通过读取文件名的方式确认时区信息的。所以时区还是纽约。

通过如下代码可以简单的Java所读取的时间和时区信息。 
通过-Duser.timezone参数修改需要按特定时区运行的java程序,例如:

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yin138/article/details/52765089

java.nio.file.FileSystemException: Too many open files

这个程序启动时跑的好好的,跑一晚上就会出问题,报错如下:

java.nio.file.FileSystemException: database: Too many open files

        at sun.nio.fs.UnixException.translateToIOException(UnixException.java:91)

        at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)

        at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)

        at sun.nio.fs.UnixFileSystemProvider.newDirectoryStream(UnixFileSystemProvider.java:427)

        at java.nio.file.Files.newDirectoryStream(Files.java:589)

        at org.drinkless.tdlib.example.data.Record.syncAccounts(Record.java:120)

        at org.drinkless.tdlib.example.task.MainTask.getTask(MainTask.java:73)

        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:498)

        at org.drinkless.tdlib.example.task.State.next(State.java:82)

        at org.drinkless.tdlib.example.task.State.run(State.java:29)


应该是打开的文件数量超过了系统的上限导致的,使用 lsof -p pid | wc -l  查看进程打开的文件数:

java    4568 root    3r   REG              253,0  72959474   33818935 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64/jre/lib/rt.jar

java    4568 root    4r   REG              253,2   4842440 1073741983 /home/tdjava/2/tdjava-all.jar

java    4568 root    5w   REG              253,2  38445155 1073741926 /home/tdjava/2/client.log

java    4568 root    6w   REG              253,2 103067118 1073741928 /home/tdjava/2/tdlib.log

java    4568 root    7r   REG              253,0    736006   33818926 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64/jre/lib/jsse.jar

java    4568 root    8u  unix 0xffff8800a74aa800       0t0     974935 socket

java    4568 root    9r   CHR                1,8       0t0          9 /dev/random

java    4568 root   10r   CHR                1,9       0t0         10 /dev/urandom

java    4568 root   11r   CHR                1,8       0t0          9 /dev/random

java    4568 root   12r   CHR                1,8       0t0          9 /dev/random

java    4568 root   13r   CHR                1,9       0t0         10 /dev/urandom

java    4568 root   14r   CHR                1,9       0t0         10 /dev/urandom

java    4568 root   15r   REG              253,0    107934   33818924 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64/jre/lib/jce.jar

java    4568 root   16r   REG              253,0     30583     140337 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64/jre/lib/ext/sunec.jar

java    4568 root   17r   REG              253,0    295008     140338 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64/jre/lib/ext/sunjce_provider.jar

java    4568 root   18r   REG              253,0   3507901   33818934 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64/jre/lib/resources.jar

java    4568 root   19u  unix 0xffff8801fda47400       0t0     958880 socket

java    4568 root   20u  IPv6             958882       0t0        TCP bogon:57192->101.200.82.233:8801 (ESTABLISHED)

java    4568 root   21r   DIR              253,2       131 3221225610 /home/tdjava/2/database

java    4568 root   22r   DIR              253,2       131 3221225610 /home/tdjava/2/database

java    4568 root   23r   DIR              253,2       131 3221225610 /home/tdjava/2/database

java    4568 root   24r   DIR              253,2       131 3221225610 /home/tdjava/2/database

java    4568 root   25r   DIR              253,2       131 3221225610 /home/tdjava/2/database

java    4568 root   26r   DIR              253,2       131 3221225610 /home/tdjava/2/database

java    4568 root   27r   DIR              253,2       131 3221225610 /home/tdjava/2/database

java    4568 root   28r   DIR              253,2       131 3221225610 /home/tdjava/2/database

java    4568 root   29r   DIR              253,2       131 3221225610 /home/tdjava/2/database

java    4568 root   30r   DIR              253,2       131 3221225610 /home/tdjava/2/database

java    4568 root   31r   DIR              253,2       131 3221225610 /home/tdjava/2/database

java    4568 root   32r   DIR              253,2       131 3221225610 /home/tdjava/2/database

java    4568 root   33r   DIR              253,2       131 3221225610 /home/tdjava/2/database

其中 /home/tdjava/2/database 被打开了N次,却没有关闭。检查代码,应该是流没有关闭:

修改为:

提醒自己注意使用完资源一定要考虑,是不是需要释放。

第一次买房成功

WechatIMG1707.jpeg

从定目标决定买,到交房一共只用了78天,这速度还可以的吧,感觉就好像去超市买菜一样,哈哈。

当然期间也不是一帆风顺,经历了一次摇号失败,被房东放鸽子,被新环境中介黑了1500块钱。

好在后面房子的房东比较给力,京茂的中介服务也很好,办事效率高,整个交易流程都特别顺畅,从看房、签合同、过户、公积金面签、交房,期间北京长沙来回跑了3趟就把事都办完了。

要特别感觉父母和亲戚朋友们,没有你们这件事办不好。

How to Update to gcc4.9.x on Centos7

http://happy123.me/blog/2017/04/15/how-to-update-to-gcc4-dot-9-x-on-centos7/

现在很多软件包默认编译要求GLIBCXX >=3.4.20,碰到这种事redhat系又哭了,目前Centos7.x默认仓库里的gcc还是4.8.5的,所以需要一个办法升级gcc相关组件>=4.9.1。

CentOS下升级gcc版本有两个途径,一个是添加其他源进行自动升级,一个是手动编译升级,这里先顺便讲下自动升级的两个办法:

添加Fedora源

在 /etc/yum.repos.d 目录中添加文件 FedoraRepo.repo ,并输入以下内容:

然后执行

使用Devtoolset-4升级

CentOS7搭建sock5代理

1、从官网下载源码

2、配置编译环境及安装编译SS5依赖组件

3、解压、编译、安装

4、修改SS5配置文件

①修改认证方式 /etc/opt/ss5/ss5.conf,查找取消下面两行注释

安装后这两行是注释的(当时弄的时候没注意,后面用客户端通过代理服务器连接测试时一直显示错误的认证方式,找了好久)。 
默认的是:无用户认证。 
如果想要使用 username/password 用户认证方法,需要将上面两行修改成下面这样:

②添加用户名及密码 /etc/opt/ss5/ss5.passwd,每行一个用户+密码(之间用空格)

给bash文件增加可执行权限

④禁用ss5日志,这个日志刷的特别猛,很快就会将硬盘占满。具体修改/etc/rc.d/init.d/ss5这个文件,加上-m参数即可,注意有几个地方都要加

5、启动ss5

启动完成后,可以使用以下命令查看连接情况

6、将ss5加入开机自动启动

长沙看房

    预算120W,3房,偏向河西。

    最近也慢慢在看房,可能是刚过年,现在新房开盘的很少,没有找到合适的。而且人不在长沙,各种不方便,暂时先网上看了一波二手房。


1、保利麓谷林语(二手房)

1520345407638349.png

2013年左右的楼,西二环外。6号线地铁在建,中段(枫林路站站--东四线站)已于 2016 年12月28日开工建设,计划2021 年建成开通。这个盘靠近2个地铁口。学校就在小区边上。

  • 房价:房天下2月份11573元/平,链家2月份12212元/平

  • 租金:3房2k-2.5k(链家)

  • 学区:明德麓谷学校(小学、初中) 

  • 周边:

  • 优势:有学区、在建地铁、麓谷板块IT产业多就业方便。

  • 缺点:

2、沁园春御院(二手房)

41EAC2B3-FD8E-455E-AB3D-D45AA25F17BC.png

2010年左右的楼,二环内,6号线在建。

  • 房价:房天下2月份13078元/平

  • 租金:3房2.5k-3k左右(房天下,链家)

  • 学区:岳麓区第一小学 

  • 周边:

  • 优势:河西核心,地段好,好学区,在建地铁。

  • 缺点:有点贵,没初中?

3、保利西海岸(二手房)

B00F4CA7-9D98-4010-807F-D76FEAFA2CB3.png

这两年的房子,地段,交通,学区都好,房天下2月份均价14897元/平,钱包有点无力承受。

Simple antidebugging and antiantidebugging

http://everettjf.com/2015/12/28/simple-ios-antidebugging-and-antiantidebugging/

ptrace

保护

可以在main函数中先调用ptrace。

去掉保护

参考文章 https://everettjf.github.io/2015/12/20/amap-ios-client-kill-anti-debugging-protect/

RESTRICT section

学习完这本书,发现cycript太好用了,Objective-C这语言太灵活了…… 但,有些程序无法使用。

保护

在Project的 Other Linker Flags 增加

去掉保护

基本思路就是,

  1. ps -e | grep /var 找到AppBinary路径

  2. 把AppBinary复制出

  3. 二进制编辑器(iHex等)修改__RESTRICT和__restrict为其他值。(比如:__RRRRRRRR和__rrrrrrrr。保证长度不变就行啦)

  4. ldid -S AppBinary 重签名。

  5. Cydia中安装 AppSync

在这篇文章中 http://www.iosre.com/t/tweak-app-app-tweak/438

参考文章

  1. http://www.iosre.com/t/tweak-app-app-tweak/438

  2. http://www.samdmarshall.com/blog/blocking_code_injection_on_ios_and_os_x.html155

  3. http://geohot.com/e7writeup.html50

  4. http://www.opensource.apple.com/source/dyld/dyld-210.2.3/src/dyld.cpp42

  5. https://theiphonewiki.com/wiki/Launchd.conf_untether17

  6. http://navillezhang.me/