根据ubuntu系统日志的配置和使用可以看到ubuntu服务器的各种应用的日志。但是每次自己到上面查看还是比较麻烦的,尤其是当管理多台服务器时。
logwatch是这方面的工具。有关ubuntu下logwatch的安装过程见:
只需执行如下命令即可安装:
sudo apt-get install logwatch
在ubuntu服务器上,日志是通过syslogd进程处理的。该进程读取如下配置文件:
/etc/syslog.conf
该文件主要配置哪些信息需要记录日志,记录到什么地方。
在该配置文件的第一部分,是对系统设施日志的配置,主要有:
- auth:有关认证进程的信息;
- daemo:有关守护进程的信息;
- kern:有关系统内核的信息;
- mail:有关邮件系统的信息;
- 其他。。。
比如,可以看到有关守护进程的日志,以下是查看时间服务器守护进程的日志:
sudo cat /var/log/daemon.log | grep ntp
再比如,通过/var/log/kern.log,查看到的信息:
Sep 8 09:28:35 homeserver kernel: [8694475.980021] TCP: Treason uncloaked! Peer 77.227.199.53:53801/20478 shrinks window 2499870467:2499871859. Repaired.
来自西班牙的远程访问,未经服务器允许改变了tcp窗口大小。
其实之前记录过安装的过程,见:
但是事后发现,导入utf8编码的oracle数据库备份时出现乱码。究其原因,是:
Western European
The database created using a single-byte Latin1 (
WE8MSWIN1252) character set, which is suitable for storing Western European language dataUniversal
The database is created using a multibyte (
AL32UTF8) character set, which is suitable for global data in any language.
之前安装的是只支持西方字符集的版本。
参考这个文档,是最全面:
http://www.oracle.com/technology/software/products/database/xe/files/install.102/b25144/toc.htm
通过在ubuntu server下安装Oracle XE安装oracle后,导入数据时出现乱码。应该使用UTF-8字符集。默认安装的可能是iso-8859-1。
配置语句记录如下:
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT EXCLUSIVE;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
SQL> SHUTDOWN IMMEDIATE;
以前都是在开发环境中使用oracle的轻量级服务器oracle xe。是在windows环境下,见适合开发人员的Oracle10g环境。
在linux上安装oracle是一件痛苦的事情。因为需要为安装做很多准备工作。另外,就是oracle的安装都是基于redhat版本的。
ubuntu server是很好的linux服务器版本,但是得到的企业支持较少,比如oracle,比如其他软件提供商。
公司需要移植以前oracle数据库的东西出来。为了应急,在ubuntu server上安装一个express edition(XE)。这个版本在ubuntu上安装十分容易。
如果需要通过android SDK获取手机相关信息。需要通过如下方式获取:
TelephonyManager telephonyManager=(TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); String imei=telephonyManager.getDeviceId();
不过,光这么写,会有类似如何查看android产生的异常的报错,主要是因为android的权限需要打开,在AndroidManifest.xml文件中增加:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
就可以拿到手机的imei号了。
android程序如果出问题,因为实际是java程序,所以会抛出异常,比如这样。
针对多activity的应用,比如有一个activity显示文字,有菜单项显示配置内容。如果屏幕激活配置的activity,则被覆盖的activity必定会调用onPause方法,也有可能会onStop和onDestory。
android的service的生命周期与activity类似,但是有一些不同:
onCreate和onStart的不同
service可以通过客户端调用Context.startService(Intent)启动。如果service还没有运行,则android先调用onCreate方法然后调用onStart方法。如果service已经运行,则通过一个新的intent调用onStart方法。所以,一个service的onStart方法可能会重复调用多次。
onResume, onPause和onStop不再需要
..
onBind
如果客户端需要和service保持连接,可以调用Context.bindService方法。如果此时service未运行,将调用onCreate而不是onStart方法。作为替代,调用onBind方法,将返回给客户端一个IBind接口实例,用于客户端进一步的调用service。
onDestory
android终止一个service可能是:
- 没有客户端绑定该service或者与之相连的运行的客户端;
- 内存低,如果是这样,android会在内存允许的情况下试图重新启动service
创建一个简单的应用程序,用于考察android的activity的生命周期,需要覆盖多个Activity类的方法。这些方法是android根据事件将Activity置于某个生命周期状态时调用。