Monthly Archive: 六月 2015

linux xargs使用

参考:http://baike.baidu.com/link?url=3MShV9QMO4ru0NUXK3-CiGczfQGsFQ18tWVvv3RDX3EQoq0KHOd5oaOIc2PS0mvHZBUM63fE60p0ncmIOqfyi_

它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。

xargs 可以读入 stdin 的资料,并且以空白字元或断行字元作为分辨,将 stdin 的资料分隔成为 arguments 。 因为是以空白字元作为分隔,所以,如果有一些档名或者是其他意义的名词内含有空白字元的时候, xargs 可能就会误判了,如果需要处理特殊字符,需要使用-0参数进行处理。

如 文件list中以换行为分隔符,有以下字段

/home/train/rm $vi list
"list" 
aa
bb
cc
dd
ee

下面将list文件中的内容作为输入,将该输入作为touch的argument,批量创建5个文件

/home/train/rm $cat list | xargs touch
/home/train/rm $ls
aa    bb    cc    dd    ee    list
/home/train/rm $

 

 

 

linux 查看并踢出用户

查看登陆的用户

使用命令:w

[root@localhost ~]# w
 17:30:28 up 4 days, 36 min,  4 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     :0               04Jun15  6days 19.87s 19.87s /usr/bin/Xorg :
root     pts/0    :0.0             Mon09    2days  0.01s  0.01s /bin/bash
root     pts/1    172.16.116.1     17:30    2.00s  0.04s  0.04s -bash
root     pts/3    172.16.116.1     15:07    4.00s  0.24s  0.11s w

踢掉ssh登录的用户

踢掉前文中加粗的17:30登录进来的用户

[root@localhost ~]# pkill -kill -t  pts/1
[root@localhost ~]# w
 17:33:14 up 4 days, 39 min,  3 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     :0               04Jun15  6days 19.88s 19.88s /usr/bin/Xorg :
root     pts/0    :0.0             Mon09    2days  0.01s  0.01s /bin/bash
root     pts/3    172.16.116.1     15:07    2.00s  0.14s  0.01s w

踢掉使用终端登录的用户

使用kill杀掉该用户的pts进程

杀掉banana用户:

[root@localhost ~]# w
 17:36:55 up 4 days, 42 min,  5 users,  load average: 0.29, 0.13, 0.08
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     :0               04Jun15  6days 21.26s 21.26s /usr/bin/Xorg :
root     pts/0    :0.0             Mon09    2days  0.01s  0.01s /bin/bash
root     pts/3    172.16.116.1     15:07    7.00s  0.22s  0.08s w
root     pts/1    :0.0             17:36   23.00s  0.00s  0.00s /bin/bash
banana   tty7     :1               17:36    6days  2.97s  0.19s pam: gdm-passwo
[root@localhost ~]# ps -ef | grep tty7
root      47850  47846  2 17:34 tty7     00:00:03 /usr/bin/Xorg :1 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-efS0YG/database -nolisten tcp
root      48408  45998  0 17:37 pts/3    00:00:00 grep tty7
[root@localhost ~]# kill -9 47846
[root@localhost ~]# w
 17:38:21 up 4 days, 44 min,  5 users,  load average: 0.86, 0.51, 0.23
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     :0               04Jun15  6days 21.26s 21.26s /usr/bin/Xorg :
root     pts/0    :0.0             Mon09    2days  0.01s  0.01s /bin/bash
root     pts/3    172.16.116.1     15:07    5.00s  0.16s  0.01s w
root     pts/1    :0.0             17:36    1:49   0.00s  0.00s /bin/bash

 

 

 

 

JAVA_OPTS环境变量

参考链接:http://publib.boulder.ibm.com/wasce/V2.1.0/zh_CN/javaopts.html

初始堆大小
要指定 Java 虚拟机的初始堆大小,请在启动服务器之前,将下列选项包含在 JAVA_OPTS 环境变量中:

-XmsIm
其中 I 由初始堆大小替换(单位:MB)。
最大堆大小
要指定 Java 虚拟机的最大堆大小,请在服务器启动之前,在 JAVA_OPTS 环境变量中包含以下选项:

-XmxMm
其中 M 由最大堆大小替换(单位:MB)。
以大页面分配堆
要指定以大页面分配堆,请在启动服务器之前,将下列选项包含在 JAVA_OPTS 环境变量中:

-Xlp
指定以大页面分配堆。
启用代理服务器
请考虑服务器由防火墙保护的情况。服务器可能仍需要访问防火墙以外的站点,例如,使用管理控制台来访存并安装 JDBC 驱动程序。如果必须将服务器配置为使用代理服务器访问外部资源,请在启动服务器之前,将下列选项包含在 JAVA_OPTS 环境变量中:

-DproxySet=true
配置 Java 虚拟机以使用代理服务器。
-DproxyHost=host
其中 host 是运行代理服务器的主机。
-DproxyPort=port
其中 port 是代理服务器侦听的端口。
定制日志记录
如果希望对服务器中的日志记录进行更精密的控制,那么您可以指定自己的日志记录设置,并在启动服务器之前在 JAVA_OPTS 环境变量中提供单独的 log4j.xml 文件。以下选项将覆盖 \var\log 目录下的 XYZ-log4j.properties 文件中定义的设置。

-Dorg.apache.geronimo.log4jservice.configuration=filename
其中,filename 必须是标准的文件名,它是相对于服务器实例目录位置的。

 

AIX 常用命令

who & finger

# who am i
root        pts/5       Jun 08 00:50     (172.17.246.250)
# who
train       pts/0       Jun 08 00:27     (172.17.246.250)
train       pts/1       Jun 08 00:28     (172.17.251.8)  
root        pts/2       Jun 08 00:55     (172.17.246.250)
train       pts/3       Jun 08 00:49     (172.17.246.250)
train       pts/4       Jun 08 00:49     (172.17.246.250)
root        pts/5       Jun 08 00:50     (172.17.246.250)
# finger root
Login name: root      
Directory: /                            Shell: /usr/bin/ksh
On since Jun 08 00:55:46 on pts/2, 2 minutes 26 seconds Idle Time
    from 172.17.246.250
On since Jun 08 00:50:57 on pts/5, 20 seconds Idle Time
    from 172.17.246.250
No Plan.

WALL(群发信息到所有用户)

# wall hehe


Broadcast message from root@training (pts/5) at 01:07:36 ... 

hehe

write(发给指定用户)

# write train  pts/6
(退出命令)

 

 

 

 

 

 

oracle session与sql历史查询

session

记录session信息的动态视图为

SQL> desc v$session
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 SADDR                                              RAW(8)
 SID                                                NUMBER
 SERIAL#                                            NUMBER
 AUDSID                                             NUMBER
 PADDR                                              RAW(8)
 USER#                                              NUMBER
 USERNAME                                           VARCHAR2(30)
 COMMAND                                            NUMBER
 OWNERID                                            NUMBER
 TADDR                                              VARCHAR2(16)
 LOCKWAIT                                           VARCHAR2(16)
 STATUS                                             VARCHAR2(8)
 SERVER                                             VARCHAR2(9)
 SCHEMA#                                            NUMBER
 SCHEMANAME                                         VARCHAR2(30)
 OSUSER                                             VARCHAR2(30)
 PROCESS                                            VARCHAR2(24)
 MACHINE                                            VARCHAR2(64)
 PORT                                               NUMBER
 TERMINAL                                           VARCHAR2(30)
 PROGRAM                                            VARCHAR2(48)
 TYPE                                               VARCHAR2(10)
 SQL_ADDRESS                                        RAW(8)
 SQL_HASH_VALUE                                     NUMBER
 SQL_ID                                             VARCHAR2(13)
 SQL_CHILD_NUMBER                                   NUMBER
 SQL_EXEC_START                                     DATE
 SQL_EXEC_ID                                        NUMBER
 PREV_SQL_ADDR                                      RAW(8)
 PREV_HASH_VALUE                                    NUMBER
 PREV_SQL_ID                                        VARCHAR2(13)
 PREV_CHILD_NUMBER                                  NUMBER
 PREV_EXEC_START                                    DATE
 PREV_EXEC_ID                                       NUMBER
 PLSQL_ENTRY_OBJECT_ID                              NUMBER
 PLSQL_ENTRY_SUBPROGRAM_ID                          NUMBER
 PLSQL_OBJECT_ID                                    NUMBER
 PLSQL_SUBPROGRAM_ID                                NUMBER
 MODULE                                             VARCHAR2(64)
 MODULE_HASH                                        NUMBER
 ACTION                                             VARCHAR2(64)
 ACTION_HASH                                        NUMBER
 CLIENT_INFO                                        VARCHAR2(64)
 FIXED_TABLE_SEQUENCE                               NUMBER
 ROW_WAIT_OBJ#                                      NUMBER
 ROW_WAIT_FILE#                                     NUMBER
 ROW_WAIT_BLOCK#                                    NUMBER
 ROW_WAIT_ROW#                                      NUMBER
 TOP_LEVEL_CALL#                                    NUMBER
 LOGON_TIME                                         DATE
 LAST_CALL_ET                                       NUMBER
 PDML_ENABLED                                       VARCHAR2(3)
 FAILOVER_TYPE                                      VARCHAR2(13)
 FAILOVER_METHOD                                    VARCHAR2(10)
 FAILED_OVER                                        VARCHAR2(3)
 RESOURCE_CONSUMER_GROUP                            VARCHAR2(32)
 PDML_STATUS                                        VARCHAR2(8)
 PDDL_STATUS                                        VARCHAR2(8)
 PQ_STATUS                                          VARCHAR2(8)
 CURRENT_QUEUE_DURATION                             NUMBER
 CLIENT_IDENTIFIER                                  VARCHAR2(64)
 BLOCKING_SESSION_STATUS                            VARCHAR2(11)
 BLOCKING_INSTANCE                                  NUMBER
 BLOCKING_SESSION                                   NUMBER
 FINAL_BLOCKING_SESSION_STATUS                      VARCHAR2(11)
 FINAL_BLOCKING_INSTANCE                            NUMBER
 FINAL_BLOCKING_SESSION                             NUMBER
 SEQ#                                               NUMBER
 EVENT#                                             NUMBER
 EVENT                                              VARCHAR2(64)
 P1TEXT                                             VARCHAR2(64)
 P1                                                 NUMBER
 P1RAW                                              RAW(8)
 P2TEXT                                             VARCHAR2(64)
 P2                                                 NUMBER
 P2RAW                                              RAW(8)
 P3TEXT                                             VARCHAR2(64)
 P3                                                 NUMBER
 P3RAW                                              RAW(8)
 WAIT_CLASS_ID                                      NUMBER
 WAIT_CLASS#                                        NUMBER
 WAIT_CLASS                                         VARCHAR2(64)
 WAIT_TIME                                          NUMBER
 SECONDS_IN_WAIT                                    NUMBER
 STATE                                              VARCHAR2(19)
 WAIT_TIME_MICRO                                    NUMBER
 TIME_REMAINING_MICRO                               NUMBER
 TIME_SINCE_LAST_WAIT_MICRO                         NUMBER
 SERVICE_NAME                                       VARCHAR2(64)
 SQL_TRACE                                          VARCHAR2(8)
 SQL_TRACE_WAITS                                    VARCHAR2(5)
 SQL_TRACE_BINDS                                    VARCHAR2(5)
 SQL_TRACE_PLAN_STATS                               VARCHAR2(10)
 SESSION_EDITION_ID                                 NUMBER
 CREATOR_ADDR                                       RAW(8)
 CREATOR_SERIAL#                                    NUMBER
 ECID                                               VARCHAR2(64)

拣选常用字段进行展示(加粗字体可见sys用户于15年6月8日登陆)

sql语句:

select sid,username,status,logon_time
from v$session;

 

具体执行:

SQL> select sid,username,status,logon_time
  2  from v$session;

       SID USERNAME                       STATUS   LOGON_TIM
---------- ------------------------------ -------- ---------
         1                                ACTIVE   08-JUN-15
         2                                ACTIVE   08-JUN-15
         3                                ACTIVE   08-JUN-15
         4                                ACTIVE   08-JUN-15
         5                                ACTIVE   08-JUN-15
         6                                ACTIVE   08-JUN-15
         7                                ACTIVE   08-JUN-15
         8                                ACTIVE   08-JUN-15
         9                                ACTIVE   08-JUN-15
        11                                ACTIVE   08-JUN-15
        15                                ACTIVE   08-JUN-15

       SID USERNAME                       STATUS   LOGON_TIM
---------- ------------------------------ -------- ---------
        17                                ACTIVE   08-JUN-15
       125 SYS                            ACTIVE   08-JUN-15
       126                                ACTIVE   08-JUN-15
       127                                ACTIVE   08-JUN-15
       128                                ACTIVE   08-JUN-15
       129                                ACTIVE   08-JUN-15
       130                                ACTIVE   08-JUN-15
       131                                ACTIVE   08-JUN-15
       132                                ACTIVE   08-JUN-15
       136                                ACTIVE   08-JUN-15
       137                                ACTIVE   08-JUN-15

22 rows selected.

sql 历史

v$sql及v$sqlarea存放着统计信息在调优时使用居多,但其sql是不全的,如果想获得完整的sql需使用v$sqltext。

关于这三个视图的区别与用途见引用文章:http://blog.itpub.net/38542/viewspace-885839/

正在执行的sql

sql语句:

select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT
from v$session a, v$sqlarea b
where a.sql_address = b.address;

具体执行:

SQL> column username format a10
SQL> column sid format a10
SQL> column sql_text format a20
SQL> column sql_fulltext format a20
SQL> select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT
  2  from v$session a, v$sqlarea b
  3  where a.sql_address = b.address;

USERNAME          SID SQL_TEXT             SQL_FULLTEXT
---------- ---------- -------------------- --------------------
SYS        ########## select a.username, a select a.username, a
                      .sid,b.SQL_TEXT, b.S .sid,b.SQL_TEXT, b.S
                      QL_FULLTEXT from v$s QL_FULLTEXT
                      ession a, v$sqlarea  from v$session a, v$
                      b where a.sql_addres sqlarea
                      s = b.address

执行过的sql

sql语句:

#查询ARCHIVE用户的包含“select 1”的SQL
select sql_text,last_active_time from v$sqlarea t where t.PARSING_SCHEMA_NAME in ('ARCHIVE') and sql_text like '%select 1%';
#查询ARCHIVE用户执行的命令,根据执行时间降序排列
select sql_text from v$sqlarea t where t.PARSING_SCHEMA_NAME in ('ARCHIVE') order by t.LAST_ACTIVE_TIME desc;
#查询所有执行过的sql:“SELECT 1 FROM DUAL”
select sql_text,sql_id from v$sqltext where sql_text like 'SELECT 1 FROM DUAL';

不再演示。

 

 

 

oracle后台进程

实例与server的概念:

Oracle实例:

Oracle实例包括一组后台进程以及这些进程所共享的内存,这些后台进程及其共享内存合起来就构成了Oracle实例.

Oracle数据库服务器:

Oracle实例和数据库合起来又构成了Oracle数据库服务器.

后台进程

1. DBWR 数据库写入进程
DBWR The Database Writer Process 进程负责将脏数据块从数据缓存(database block buffer)写回磁盘.当一个事务修改数据
块中的数据以后,不需要立即将数据块写回磁盘。由于Oracle所采用的先进机制,修改后的数据可以不用立即写回,并且及时出现故障
也不会丢失。因此,DBWR可以采取更有效写回方式,而不用再事务提交完之后立即写回。DBWR通常定时写回数据,除非数据缓冲区
需要清空或已满。
数据写回时,采用了最近最少使用原则(least-recently-used).对于支持异步I/O的系统,只需使用一个BWR进程即可,对不支持
异步IO的可以通过增加DBWR的个数来提升效率。

服务器参数文件SPFILE的参数:DB_WRITER_PROCESSES。修改它可以允许使用多个DBWR进程,但是不能超过物理cpu核数。
2. LGWR 日志写入进程
LGWR (the log writer process)负责将日志缓冲区中的数据写入重做日志。由于COMMIT操作依赖于LGWR写回日志(commit操
作触发LGWR将日志缓冲区数据写入UNDO日志),因此系统性能容易受到LGWR的影响。
3. PMON 进程监视进程
PMON(the Process Monitor Process)进程负责监视数据库的处理情况,并负责清除死掉的进程。PMON还负责重启失败的调度进
程(dispatcher process)
4. SMON 系统监视进程
SMON(the System Monitor Process)进程负责在实例启动时恢复实例,包括清除临时段以及恢复因系统崩溃而中断的事物。
SMON还可以通过合并空闲分区的方式清除数据库中的碎片
5.CKPT 检查点进程
CKPT(the Checkpoint Process)进程负责向DBWR进程发送信号,要求执行一次检查点,并更新数据库的所有数据和控制文件。
CheckPoint(检查点),是指有DBWR进程将所有修改过的数据缓冲区写回数据文件。CKPT是可选的,如果没有CKPT进程,则有LGWR代
行这些任务。
6. ARCHn 归档进程
ARCH(the Archiver Process )负责将再现重做日志复制到归档存储器。进档RDBMS运行在ARCHIVELOG模式时ARCH才有效,如果
系统没有运行在ARCHIVELOG模式,则系统失效后可能无法恢复。最后让系统运行在ARCHIVELOG模式下,此时归档进程可能有多个。
SQL>archive log list //查看是否为归档模式
可以再数据库Mount 模式下开启归档
SQL>alter database archivelog; //开启
SQL>alter database noarchivelog;//关闭
7. RECO 恢复进程
RECO (the Recovery Process)进程用于清除分布式数据库中的未决(pending)事务,它负责分布式事务中本地部分的提交与回滚
8. Dnnn 调度进程
如果选择了Multithreaded Server选项,则对使用的每个通信协议至少有一个调度进程。调度进程(the Dispatcher Process,Dnnn)
负责将用户进程的请求转发到一个可用的共享服务器进程,并负责将用户进程的请求转发到一个可用的共享服务器进程,并负责回送响应
消息。
9. Snnn 共享服务器进程
当使用共享服务器配置或MTS时,会用到共享服务器进程(the Shared Servers Process ,Snnn).这些进程如同专用服务器进程
(Dedicated Server Process),但可以被多个用户
共享。
10. LMS Oracle RAC 锁管理服务
使用RAC时,该服务用语管理集群中不同节点间的锁.
11. QMNn 队列管理进程
使用高级队列选项时(advanced queueing option),队列管理进程 (Queue Manager Process )用于管理作业队列,队列数目可以
达到10个,QMN0——QMN9

 

linux 文件与文件夹通过压缩加密

压缩并加密文件

[root@banana try]# zip -e try.zip try_encrypt
Enter password: 
Verify password: 
  adding: try_encrypt (stored 0%)
[root@banana try]# ls
try_encrypt  try_encrypt02  try.zip

压缩并加密文件夹

[root@banana Desktop]# zip -re try.zip 
backup_ver1.py  try/            
[root@banana Desktop]# zip -re try.zip try/
Enter password: 
Verify password: 
  adding: try/ (stored 0%)
  adding: try/try_encrypt02 (stored 0%)
  adding: try/try_encrypt (stored 0%)
[root@banana Desktop]# ls
backup_ver1.py try try.zip

解压需要密码:

[root@banana Desktop]# unzip try.zip 
Archive:  try.zip
[try.zip] try/try_encrypt02 password: 
replace try/try_encrypt02? [y]es, [n]o, [A]ll, [N]one, [r]ename: A       
 extracting: try/try_encrypt02       
 extracting: try/try_encrypt

就是这样。。。挺简单的

安全性嘛,基本上就防防君子和小白的节奏。因为设置密码的过程很容易被获取到,敏感信息采用其他方式。

学了白学。。。还是找别的方法吧