w1100n
This site is best viewed in Google Chrome
wiloon, 8/14/2017 12:23

https://blog.softing.com/blog/automotive-electronics/diagnostics-odx-otx-uds-and-other-market-standards/ Diagnostics – ODX, OTX, UDS and other market standards Posted on 01/07/2015 by Stephan Obermüller Diagnose_Icon_626_251 A large number of today’s innovations are based on software developments, and vehicles are no exception. Software innovations improve vehicle performance and increase … Continue reading

uds
wiloon, 8/14/2017 12:04

What is UDS? • UDS stands for Unified Diagnostics Service • It is present in all modern cars • Provides access to the Services offered by ECUs • It takes place on the top of the CAN protocol (Layer 4) … Continue reading

wiloon, 8/14/2017 12:01

VW Transport Protocol 2.0 (TP 2.0) for CAN bus CAN allows for data packets with a payload of up to 8 bytes, to send messages longer than 8 bytes it is necessary to use a transport protocol. The OBD-II specification … Continue reading

wiloon, 8/14/2017 9:44

ECU, Electronic Control Unit 开放式数据交换格式(ODX) ODX是一个由自动化及测量系统标准化组织(ASAM)咨询实体制定的国际标准,2006年底该标准以ISO标准(ISO 22901-1)形式发布最终版本。它由诊断容器层(诊断层结构);Flash 数据(Flash);车辆接口拓扑(车辆信息);通讯参数(参数描述)以及ECU功能组(ECU组描述) 等5部分组成。该标准支持汽车OEM厂商和供应商使用不同的测试工具。 在每一辆车内,每个ECU都需要和其他ECU交换数据,同时,还需要和外部设备 (比如开发阶段的验证测试设备、生产阶段的台架测试设备,售后阶段的修理厂便携测试设备…)进行通讯。合作过程中的数据交换包括:车辆制造商(开发、测试、生产、服务)内部交换数据;车辆制造商?ECU供应商?System 供应商(需求文档、ECU 技术文档);ECU 供应商(开发、测试、生产、服务)内部交换数据;车辆制造商→服务提供商(授权修理厂和4S店);车辆制造商?车辆制造商(共同开发)等等。 Marco表示,对于整车厂以及ECU供应商来说,用ODX标准取代专有的解决方案,从而为整个产品流程提供了一个统一的工具环境,使数据的交换和处理过程在不同的产品阶段得到最优化。而标准的数据库编辑工具取代了传统的文字处理软件,也使智能数据处理达到最优化。另外,由于实现了数据格式的导入/导出,使得ECU供应商和车辆制造商以及和售后服务商之间交换数据变为可能。 这样,我们就不难看出,通过使用ODX标准,车辆制造商和ECU供应商之间建立起了一个更加轻松简单的数据交换流程:不但减少了数据同步的花费,而且因为有了ODX使诊断测试进入了一个更加宽广的领域,即能够从单个ECU的角度宽展到整个系统的角度进行诊断测试。这样就提高了产品的可靠性,提高了客户的满意度。 http://archive.eet-china.com/www.eet-china.com/ART_8800509901_480401_NT_0bab8f92.HTM

wiloon, 8/14/2017 9:42

https://baike.baidu.com/item/CAN%E6%80%BB%E7%BA%BF/297754 CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。 在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议 CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

wiloon, 8/12/2017 21:38

Gnome shell system monitor extension https://aur.archlinux.org/packages/gnome-shell-extension-system-monitor-git/ https://github.com/paradoxxxzero/gnome-shell-system-monitor-applet

wiloon, 8/11/2017 16:21

http://liyangliang.me/posts/2015/06/using-supervisor/ 使用 supervisor 管理进程 Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。 安装 Supervisor 可以运行在 Linux、Mac OS X 上。如前所述,supervisor 是 Python 编写的,所以安装起来也很方便,可以直接用 pip : sudo pip install supervisor 如果是 Ubuntu 系统,还可以使用 apt-get 安装。 supervisord 配置 Supervisor 相当强大,提供了很丰富的功能,不过我们可能只需要用到其中一小部分。安装完成之后,可以编写配置文件,来满足自己的需求。为了方便,我们把配置分成两部分:supervisord(supervisor 是一个 C/S … Continue reading

wiloon, 8/10/2017 9:15

https://wiki.archlinux.org/index.php/Fstab_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

wiloon, 8/9/2017 18:00

http://blackwing.iteye.com/blog/1545670 更新Jar包中的文件 解压 jar xf ***.jar 打包了个fat jar,后来程序作了小修改,如果重新打包一个fat jar再上传服务器实在麻烦,而如果能只把更改的class文件放到原来jar包替换相应文件,则简便很多。 jar命令可以替换jar包对于文件,但需要点小技巧。一般替换(增加)jar包根目录下的文件,用到的命令是: Java代码 收藏代码 jar uvf myjar.jar ClassToAdd.class 就能把ClassToAdd.class添加到myjar.jar包根目录下。但通常,我们的包都是有多层目录的,这时就需要做点更改。例如,我要更新jar包下:com.blackwing目录下的ClassToAdd.class文件,则命令改为: Java代码 收藏代码 jar uvf myjar.jar com/blackwing/ClassToAdd.class 记得在运行这条命令前,需要在当前文件夹下建立: com/blackwing文件夹,并且把类ClassToAdd.class放到这里,则可以更新jar包中相应目录的类。

wiloon, 8/9/2017 9:22

ansible的playbook就如同salt的state,一个playbook就是一个YAML文件,所以playbook文件一般都以.yml结尾,写playbook不需要复杂的YAML语法,所以也不用单独去学YAML语法。此外playbook和模板文件(template模块)还使用jinja2语法语法实现高级功能(后面逐一讲到),不光这里,jinja2语法很多地方都会用到,比如python大部分web框架的模板系统,所以可以去单独学一下。 一个playbook文件由一个或多个play组成,每个play定义了在一个或多个远程主机上执行的一系列的task,其中每个task一般就是调用一个ansible的模块,如调用copy模块复制文件到远程主机或调用shell模块执行命令。 例子:只带有一个play的playbook文件test.yml: http://sapser.github.io/ansible/2014/07/21/ansible-playbook https://stackoverflow.com/questions/18195142/safely-limiting-ansible-playbooks-to-a-single-machine

wiloon, 8/8/2017 15:32

watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。你可以拿他来监测你想要的一切命令的结果变化,比如 tail 一个 log 文件,ls 监测某个文件的大小变化,看你的想象力了! 1.命令格式: watch[参数][命令] 2.命令功能: 可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令 3.命令参数: -n或–interval watch缺省每2秒运行一下程序,可以用-n或-interval来指定间隔的时间。 -d或–differences 用-d或–differences 选项watch 会高亮显示变化的区域。 而-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来。 -t 或-no-title 会关闭watch命令在顶部的时间间隔,命令,当前时间的输出。 -h, –help 查看帮助文档 4.使用实例: 实例1: 命令:每隔一秒高亮显示网络链接数的变化情况 watch -n 1 -d netstat -ant 说明: 其它操作: 切换终端: Ctrl+x 退出watch:Ctrl+g 实例2:每隔一秒高亮显示http链接数的变化情况 命令: … Continue reading

wiloon, 8/2/2017 10:45

http://www.opscoder.info/tsdb.html 对于时间序列的存储,一般会采用专门的时间序列数据库,而不会去使用mysql或是mongo(但zabbix就是用的mysql,所以它在IO上面遇到了瓶颈)。现在时间序列的数据库是有很多的,比如graphite、opentsdb以及新生的influxdb。最近也相继研究了一下这三个数据库,现在把研究所得记录下来。 graphite graphite算是一个老牌的时间序列存储解决方案了,graphite由三个部分组成,分别是carbon、whisper和graphite web,盗图: carbon:实际上是一系列守护进程,这些守护进程用Twisted的事件驱动网络引擎监听时间序列数据。Twisted框架让Carbon守护进程能够以很低的开销处理大量的客户端和流量。 whisper:是一个用于存储时间序列数据的数据库,之后应用程序可以用create,update和fetch操作获取并操作这些数据。 graphite web:使用django开发的一套web,提供一些常用的聚合函数,可以界面友好的展示出图形。再盗图: whisper支持RRD,可以很方便的定义retention,以及定义storage scheme,不需要手动做,graphite会自动帮你按照不同的scheme实现aggregation。这样每个metric的大小就是固定的了,所以理论上可以永久存储数据。graphite的集群方案主要有两种,分别是使用graphite自带的relay或是使用第三方的工具。 当使用自带的relay时,只需要在配置文件中配置要relay到哪些机器即可,这样在数据写入的时候,被写入的节点会relay一份到这些机器中。在读取的时候,在graphite web的settings中配置HOSTS的列表,这样在django的web中会依次从这些HOSTS中读出数据。 另一种是需用第三方的relay工具,Booking公司开源出来了他们所用的用C写得 carbon-c-relay,以及用GO写得carbon-relay-ng。其基本的思想是运用一致性哈希,可以将不同的metric发到不同的机器,以来达到集群的目的,据Booking称他们的graphite集群的规模达到了百台机器,而mertic也达到了百万的级别. 以上的两种方式都会遇到了一个共同的问题,就是集群扩容的问题,我不知道Booking是怎么来解决这个问题的,但是我这边目前是想到了几种方式,这个在我前一篇的文章中已经阐述了:graphite集群扩容方案探究,在这里就先不赘述了。 最后说一下,除了集群问题以外,graphite的还有一性能问题就是读的性能稍差,这决定于其存储的方式,其实在读的时候会去读whisper文件(虽然在django层做了缓存,但是缓存的功能比较弱),通过seek的方式来获取数据的位置,在将数据取出。 opentsdb opentsdb是一个比较重的时间序列解决方案,为什么说他重呢?因为它的组成是这样的: 可以看到opentsdb所依赖的存储是Hbase集群。TSD在其中担任的责任是IO部分,TSD其实就是一个后台的daemon,一般我会会用一组TSD达成一个TSD的集群(其实不能算是集群),没有master/slave之分,也没有共享状态,然后在之前用LB设备来做负载均衡,官方比较推荐的是用varnish。 当让后端的存储也可以用其他的例如hadoop,但是官方还是建议用Hbase,因为opentsdb就是Hbase社区孵化出来的产品。那么问题来了,Hbase的运维将是一个艰巨的任务,这个依赖于zookeeper搭建的集群的坑还是很多的,我看了一下官方文档就有上千页。这里面的优化维护需要有专业的Hbase专家才能完成。 另外opentsdb做不到graphite那样自动做downsample,也就是做不到RRD那样地去存储数据,需要在外面自己做一层手动干这活,再把聚合后的数据写入Hbase,唉,还真是一个费时费力的活。 除此之外opentsdb还是很不错的,读写性能挺高,而且支持tag,支持ttl,支持各种聚合函数。现在很多的监控的metric的存储都是用的opentsdb,嗯,是的,只要有能力玩转还是个不错的选择。 influxdb influxdb是最新的一个时间序列数据库,最新一两年才产生,但已经拥有极高的人气。influxdb 是用Go写的,现在v0.9正在开发中,之前开源出来的最稳定的版本是0.88的,但是0.8X是没有集群方案的,但在0.9中会加入进来。 0.9版本的influxdb对于之前会有很大的改变,后端存储有LevelDB换成了BoltDB,读写的API也是有了很大的变化,也将支持集群化,continuous query,支持retention policy,读写性能也是哇哇的,可以说是时间序列存储的完美方案,但是由于还很年轻,可能还会存在诸多的问题,就像现在正在开发的0.9一样,发布一拖再拖,就是由于还有些技术壁垒没有攻陷。 对于influxdb我不想多说些什么,之后打算开一个专题,专门详细来说一说这个玩意,因为我看国内几乎没有详细的文章来讲influxdb的。

wiloon, 8/1/2017 16:16

https://www.ibm.com/developerworks/cn/linux/l-secure-linux-ru/index.html SELinux 初探 在进入了 CentOS 5.x 之后,SELinux 已经是个非常完备的核心模块了!CentOS 5.x 提供了很多管理 SELinux 的命令与机制, 因此在整体架构上面比以前的版本要单纯且容易操作管理!所以,在这一版以后,我们建议大家千万不要关掉 SELinux 这玩意儿! 让我们来仔细的玩玩这家伙吧! 小标题的图示什么是 SELinux 什么是 SELinux 呢?其实他是『 Security Enhanced Linux 』的缩写,字面上的意义就是安全强化的 Linux 之意!那么所谓的『安全强化』是强化哪个部分? 是网络资安还是权限管理?底下就让我们来谈谈吧! 当初设计的目标:避免资源的误用 SELinux 是由美国国家安全局 (NSA) 开发的,当初开发这玩意儿的目的是因为很多企业界发现, 通常系统出现问题的原因大部分都在於『内部员工的资源误用』所导致的,实际由外部发动的攻击反而没有这么严重。 那么什么是『员工资源误用』呢?举例来说,如果有个不是很懂系统的系统管理员为了自己配置的方便,将网页所在目录 /var/www/html/ 的权限配置为 drwxrwxrwx 时,你觉得会有什么事情发生? 现在我们知道所有的系统资源都是透过程序来进行存取的,那么 … Continue reading

wiloon, 8/1/2017 15:23

http://www.ha97.com/5172.html PS:有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux系统都是2.6以上内核了。通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。lsattr命令是显示chattr命令设置的文件属性。 这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。 chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files… 最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]这些字符组合的,这部分是用来控制文件的 属性。 :在原有参数设定基础上,追加参数。 :在原有参数设定基础上,移除参数。 = :更新为指定参数设定。 A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。 S:硬盘I/O同步选项,功能类似sync。 a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。 c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。 d:即no dump,设定文件不能成为dump程序的备份目标。 i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。 j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。 s:保密性地删除文件或目录,即硬盘空间被全部收回。 … Continue reading

wiloon, 8/1/2017 15:17

http://man.linuxde.net/fsck fsck命令文件系统管理 fsck命令被用于检查并且试图修复文件系统中的错误。当文件系统发生错误四化,可用fsck指令尝试加以修复。 语法 fsck(选项)(参数) 选项 -a:自动修复文件系统,不询问任何问题; -A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统; -N:不执行指令,仅列出实际执行会进行的动作; -P:当搭配”-A”参数使用时,则会同时检查所有的文件系统; -r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式; -R:当搭配”-A”参数使用时,则会略过/目录的文件系统不予检查; -s:依序执行检查作业,而非同时执行; -t<文件系统类型>:指定要检查的文件系统类型; -T:执行fsck指令时,不显示标题信息; -V:显示指令执行过程。 参数 文件系统:指定要查看信息的文件系统。 实例 linux的文件系统损坏会导致linux不正常关机,出错的时候如果系统告诉你是哪一块硬盘的分区有问题,比如是/dev/hda2,接着用如下的命令去对付它: fsck -y /dev/hda2 结束后使用reboot命令重启系统这样就好了! 如果不知道时哪个地方出了问题,可以直接: fsck 在随后的多个确认对话框中输入:y 结束后同样使用reboot命令重启系统这样就好了! 来自: http://man.linuxde.net/fsck

wiloon, 8/1/2017 8:42

kill -9发送SIGKILL信号将其终止,但是以下两种情况不起作用: a、该进程处于”Zombie”状态(使用ps命令返回defunct的进程)。此时进程已经释放所有资源,但还未得到其父进程的确认。”Zombie”进程要等到下次重启时才会消失,但它的存在不会影响系统性能。 b、 该进程处于”kernel mode”(核心态)且在等待不可获得的资源。处于核心态的进程忽略所有信号处理,因此对于这些一直处于核心态的进程只能通过重启系统实现。进程在AIX 中会处于两种状态,即用户态和核心态。只有处于用户态的进程才可以用“kill”命令将其终止。

wiloon, 7/31/2017 9:27

https://github.com/jemygraw/TechDoc/blob/master/Go%E7%A4%BA%E4%BE%8B%E5%AD%A6/Go%20%E6%97%B6%E9%97%B4%E6%A0%BC%E5%BC%8F%E5%8C%96%E5%92%8C%E8%A7%A3%E6%9E%90.markdown Go 时间格式化和解析 Go使用模式匹配的方式来支持日期格式化和解析。 package main import “fmt” import “time” func main() { p := fmt.Println // 这里有一个根据RFC3339来格式化日期的例子 t := time.Now() p(t.Format(“2006-01-02T15:04:05Z07:00”)) // Format 函数使用一种基于示例的模式匹配方式, // 它使用已经格式化的时间模式来决定所给定参数 // 的输出格式 p(t.Format(“3:04PM”)) p(t.Format(“Mon Jan _2 15:04:05 2006”)) p(t.Format(“2006-01-02T15:04:05.999999-07:00”)) // 对于纯数字表示的时间来讲,你也可以使用标准 // 的格式化字符串的方式来格式化时间 … Continue reading

wiloon, 7/29/2017 10:56

$$是当前bash进程的pid 等同于 $BASHPID https://www.zhihu.com/question/50517601

previous page · next page
辽ICP备14012896