分类目录归档:转载文章(档)

TOP命令及Free语义分析(转载)

接触 linux 的人对于 top 命令可能不会陌生(不同系统名字可能不一样,如 IBM 的 aix 中叫 topas ),它的作用主要用来监控系统实时负载率、进程的资源占用率及其它各项系统状态属性是否正常。

下面我们先来看张 top 截图:

(1)系统、任务统计信息:

前 8 行是系统整体的统计信息。第 1 行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

01:06:48 当前时间
up 1:22 系统运行时间,格式为时:分
1 user 当前登录用户数
load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

注意:这三个值可以用来判定系统是否负载过高——如果值

持续大于系统 cpu 个数,就需要优化你的程序或者架构了。

(2)进程、 cpu 统计信息:

第 2~6 行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 29 total 进程总数
1 running 正在运行的进程数
28 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 0.3% us 用户空间占用CPU百分比
1.0% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0% hi Hardware IRQ
0.0% si Software IRQ

注:

(1)IRQ: IRQ全称为Interrupt Request,即是“中断请求”的意思。

(2)st(Steal Time):stole time 的缩写,该项指标只对虚拟机有效,表示分配给当前虚拟机的 CPU 时间之中,被同一台物理机上的其他虚拟机偷走的时间百分比

So, relatively speaking, what does this mean? A high steal percentage may mean that you may be outgrowing your virtual machine with your hosting company. Other virtual machines may have a larger slice of the CPU’s time and you may need to ask for an upgrade in order to compete. Also, a high steal percentage may mean that your hosting company is overselling virtual machines on your particular server. If you upgrade your virtual machine and your steal percentage doesn’t drop, you may want to seek another provider. A low steal percentage can mean that your applications are working well with your current virtual machine. Since your VM is not wrestling with other VM’s constantly for CPU time, your VM will be more responsive. This may also suggest that your hosting provider is underselling their servers, which is definitely a good thing.0.0% sisi(Software Interrupts)

(3)最后两行为内存信息:

Mem: 191272k total 物理内存总量
173656k used 使用的物理内存总量
17616k free 空闲内存总量
22052k buffers 用作内核缓存的内存量
Swap: 192772k total 交换区总量
0k used 使用的交换区总量
192772k free 空闲交换区总量
123988k cached 缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。

PS:如何计算可用内存和已用内存?

除了 free -m 之外,也可以看 top:

Mem:    255592k total,   167568k used,    88024free,    25068k buffers
Swap:   524280k total,        0k used,   524280free,    85724k cached

3.1  实际的程序可用内存数怎么算呢?

The answer is: free + (buffers + cached)

88024k + (25068k + 85724k) = 198816k

3.2  程序已用内存数又怎么算呢?

The answer is: used – (buffers + cached)

167568k – (25068k + 85724k) = 56776k

3.3  怎么判断系统是否内存不足呢?

如果你的 swap used 数值大于 0 ,基本可以判断已经遇到内存瓶颈了,要么优化你的代码,要么加内存。

3.4  buffer 与cache 的区别

A buffer is something that has yet to be “written” to disk. A cache is something that has been “read” from the disk and stored for later use 从应用程序角度来看,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读写的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存 = 系统free memory + buffers + cached.

buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages.
cached是用来给文件做缓冲。
那就是说:buffers是用来存储,目录里面有什么内容,权限等等。
而cached直接用来记忆我们打开的文件,如果你想知道他是不是真的生效,你可以试一下,先后执行两次命令#man X ,你就可以明显的感觉到第二次的开打的速度快很多。

实验:在一台没有什么应用的机器上做会看得比较明显。记得实验只能做一次,如果想多做请换一个文件名。

#free
#man X
#free
#man X
#free
你可以先后比较一下free后显示buffers的大小。
另一个实验:
#free
#ls /dev
#free
你比较一下两个的大小,当然这个buffers随时都在增加,但你有ls过的话,增加的速度会变得快,这个就是buffers/chached的区别。
因为Linux将你暂时不使用的内存作为文件和数据缓存,以提高系统性能,当你需要这些内存时,系统会自动释放(不像windows那样,即使你有很多空闲内存,他也要访问一下磁盘中的pagefiles)

(4)进程信息区:

统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

序号 列名 含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进程所有者的用户id
e USER 进程所有者的用户名
f GROUP 进程所有者的组名
g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
h PR 优先级
i NI nice值。负值表示高优先级,正值表示低优先级
j P 最后使用的CPU,仅在多CPU环境下有意义
k %CPU 上次更新到现在的CPU时间占用百分比
l TIME 进程使用的CPU时间总计,单位秒
m TIME+ 进程使用的CPU时间总计,单位1/100秒
n %MEM 进程使用的物理内存百分比
o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r CODE 可执行代码占用的物理内存大小,单位kb
s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t SHR 共享内存大小,单位kb
u nFLT 页面错误次数
v nDRT 最后一次写入到现在,被修改过的页面数。
w S 进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
x COMMAND 命令名/命令行
y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
z Flags 任务标志,参考 sched.h

(5)查看指定列

默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。
可以通过下面的快捷键来更改显示内容:

5.1 f 键选择显示内容

通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。

5.2 o 键改变显示顺序

按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。

5.3 F/O 键将进程按列排序

按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。

(6)常用交互命令

从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。
Ctrl+L 擦除并且重写屏幕。
h或者? 显示帮助画面,给出一些简短的命令总结说明。
k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
i 忽略闲置和僵死进程。这是一个开关式命令。
q 退出程序。
r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
S 切换到累计模式。
s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f或者F 从当前显示中添加或者删除项目。
o或者O 改变显示项目的顺序。
l 切换显示平均负载和启动时间信息。
m 切换显示内存信息。
t 切换显示进程和CPU状态信息。
c 切换显示命令名称和完整命令行。
M 根据驻留内存大小进行排序。
P 根据CPU使用百分比大小进行排序。
T 根据时间/累计时间进行排序。
W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

(7)最后的技能:top 命令小技巧

1、输入大写P,则结果按CPU占用降序排序。
2、输入大写M,结果按内存占用降序排序。
3、按数字 1 则可以显示所有CPU核心的负载情况。
4、top -d 5    每隔 5 秒刷新一次,默认 1 秒
5、top -p 4360,4358    监控指定进程
6、top -U johndoe    ‘U’为 真实/有效/保存/文件系统用户名。
7、top -u 500    ‘u’为有效用户标识
8、top -bn 1    显示所有进程信息,top -n 1 只显示一屏信息,供管道调用
9、top -M   #show memory summary in megabytes not kilobytes
10、top -p 25097 -n 1 -b    # -b 避免输出控制字符,管道调用出现乱码
11、top翻页:top -bn1 | less
12、增强版的 top:htop ,一个更加强大的交互式进程管理器:

File:Htop.png

附:进程相关基础知识

内存

内存基础

通常包含物理内存和虚拟内存(virtual Memory ),好处是通过物理内存(RAM) 和部分硬盘空间(SWAP )组合增大了总体的内存空间,坏处是由于硬盘部分的虚拟内存的性能有限,并且RAM 和SWAP之间交换增加了系统的负担。 

1.  [phoenix.lif@aliadmin036158 ~]$ free

2.               total       used       free     shared    buffers     cached

3.  Mem:        7680000      7504764       175236            0       490772      3193856

4.  -/+ buffers/cache:     3820136      3859864

5.  Swap:       2096472           88      2096384

其中,Mem :  

(1) Total 为总的物理内存;

(2) Used 表示总计分配给缓存使用的数量(即buffers 和cache ,但可能部分还未实际使用);

(3)Free 表示未被分配的内存;

(4)share 表示共享内存,一般不会使用;

(5)buffers :表示系统分配但未被使用的buffers 数量;

(6)Cached :表示系统分配但未被使用的cache 数量。后面详细说明buffer 和cache 的区别。

-/+ buffers/cache:

(1)Used 表示实际使用的buffers 和cache 总量,即实际使用内存总量;

(2)Free 未被使用的buffer ,cache 及未被分配的内存之和,即系统可用内存。

Swap:  虚拟内存。如果系统物理内存用完了,但是仍有虚拟内存系统仍然可以运行虽然运行很慢;但是如果Swap 也用完了,系统就会发生错误,通常会出现”application is out of memory” 的错误,严重时造成系统死锁。通常Swap 空间分配为物理内存的2-2.5 倍,但也不用完全按照这个标准,如确定内存完全够用也没必要分配太多,我们线上的服务器就没有分配太多的Swap 空间。

tips:

实际可用内存:Free(-/+ buffers/cache) = Free(Mem)+buffers(Mem)+Cached(Mem);

已分配内存:Used(Mem) = Used(-/+ buffers/cache)+ buffers(Mem) + Cached(Mem)

物理内存总大小:total (Mem ) = used(-/+ buffers/cache) + free(-/+ buffers/cache)

Buffers & Cache

在 Linux 的实现中,文件 Cache 分为两个层面,一是 Page Cache ,另一个 Buffer Cache ,每一个Page Cache 包含若干 Buffer Cache 。内存管理系统和 VFS 只与 Page Cache 交互,内存管理系统负责维护每项 Page Cache 的分配和回收。buffer cache 是块设备的读写缓冲区,更靠近存储设备,或者直接就是disk 的缓冲区。

磁盘操作有逻辑级(文件系统)和物理级(磁盘块),这两种缓存分别是缓存逻辑和物理级数据的。如我们进行的是文件系统操作,那么文件被缓存到Page Cache ,如需要刷新文件的时候,Page Cache 将交给Buffer Cache 去完成,因为Buffer Cache 是缓存磁盘块的。即直接去操作文件就是使用Page Cache ,用dd 等命令直接操作磁盘块,就是buffer cache 缓存。

(8)Refer:

http://www.linuxidc.com/Linux/2011-03/33582.htm

http://os.51cto.com/art/201012/240719.htm

http://www.kernelhardware.org/linux-top-command/

http://unix.stackexchange.com/questions/18918/in-linux-top-command-what-are-us-sy-ni-id-wa-hi-si-and-st-for-cpu-usage

http://www.ruanyifeng.com/blog/2011/07/linux_load_average_explained.html

http://www.taobaotest.com/blogs/qa?bid=2265    linux命令free详解

http://blogread.cn/it/article/6386?f=wb    top使用技巧

http://yikebocai.com/2014/11/cpu-load-too-high/    CPU Load过高问题分析和解决方案

https://github.com/oldratlee/useful-scripts    useful-scripts:打印 java 占用资源高的线程

http://newslxw.iteye.com/blog/1495565    一篇很好的linux下内存,IO解析文章

http://alanwu.blog.51cto.com/3652632/1122077    Buffer cache和page cache的区别

http://www.penglixun.com/tech/system/the_diffrents_of_page_cache_and_buffer_cache.html    Page Cache和Buffer Cache的区别

http://csrd.aliapp.com/?p=13    The Page Cache FAQ(v0.1,欢迎补充与拍砖)

http://www.techug.com/4-process-manage-tools    Linux 进程管理之四大名捕

转自:http://blog.chinaunix.net/uid-25776631-id-5784283.html

关于ORACLE的v$process 和v$session 到达最大连接限制的问题

ORA-12520:TNS:监听程序无法为请求的服务器类型找到可用的处理程序

oracle这个错误的意思是  数据库的连接数达到最大值限制。

一、关于v$process v$session的基本知识
Oracle数据库中Session和Connection的区别。
在Oracle的官方文档上,对Session和Connection是这样解释的:
  Connection: Communicate pathway between a client process and an Oracle database instance.

连接:一个客户端进程和Oracle数据库实例之间的通信链路。

Session: A logical entity in the database instance memory that represnts the state of a current user login to a database. A single connection can have 0, 1 or more sessions established on it.
会话:用于展示当前登录到数据库用户的状态的数据库实例内存中的一个逻辑实体。一个单独的连接可以有0,1,或者更多的会话。

Connection并不是直接建立在用户进程和数据库实例之间的。而是在用户进程和Server Process(服务器进程)之间的,因此有一个Connection就一定会有一个用户进程和一个服务器进程。但不一定会存在Session。比如,如果需要将东西从A运到B,Connection可以看成是一座“桥”,而卡车把东西从A运到B后并返回A,这就是Session。所以,只要不断开连接,随时都可以在这个连接上创建出会话。

二、查看v$process v$session的基本信息
查询资源限制的视图的语法:

select * from v$resource_limit;

select * from v$process;

select * from v$session;

select * from v$session t where t.STATUS=’ACTIVE”;

process和session参数最大值估算方法
select round(sum(pga_used_mem)/1024/1024,0) total_used_M, round(sum(pga_used_mem)/count(1)/1024/1024,0) avg_used_M,
round(sum(pga_alloc_mem)/1024/1024,0) total_alloc_M, round(sum(pga_alloc_mem)/count(1)/1024/1024,0) avg_alloc_M from v$process;

三、释放资源
在sqlnet.ora文件中设置expire_time 参数。
可以使用EXPIRE_TIME参数间歇检查异常session并释放process。
官方说明:SQLNET.EXPIRE_TIME
Purpose
Use parameter SQLNET.EXPIRE_TIME to specify a the time interval, in minutes, to send a probe to verify that client/server connections are active. Setting a value greater than 0 ensures that connections are not left open indefinitely, due to an abnormal client termination. If the probe finds a terminated connection, or a connection that is no longer in use, it returns an error, causing the server process to exit. This parameter is primarily intended for the database server, which typically handles multiple connections at any one time.
Limitations on using this terminated connection detection feature are:
It is not allowed on bequeathed connections.
Though very small, a probe packet generates additional traffic that may downgrade network performance.
Depending on which operating system is in use, the server may need to perform additional processing to distinguish the connection probing event from other events that occur. This can also result in degraded network performance.

Recommended Value
10
Example
SQLNET.EXPIRE_TIME=10

这里设置是10分钟,每10分钟Oracle会确认所有session客户端连接是否正常,对于不正常的session,oracle会清理process。

同时,扩大最大连接数,同时Session自动跟着扩大。

–修改最大连接数:

alter system set processes = 500 scope = spfile;

重启数据库:

cmd :sqlplus sys/passw@databasename as sysdba

然后输入以下命令

shutdown immediate;——关闭数据库,大概需要一个小时

startup;–重启数据库,大概几分钟。

重启之后:

select count(*) from v$process    ——从298变成132

select count(*) from v$session    ——从104变成38

但是,在ArcGIS Portal 里面打开一个页面,调用了SDE图层,

上面的连接数字都增加,那么就算设置为最大500,也支撑不来多少用户使用的!!!!????

–查看当前有哪些用户正在使用数据

SELECT osuser, a.username,cpu_time/executions/1000000||’s’,b.sql_text,machine

from v$session a, v$sqlarea b

where a.sql_address =b.address order by cpu_time;

——在ArcGIS Portal 里面打开一个页面,调用了SDE图层,通过以上语句,可以看到SDE用户的连接信息。

就算关闭了浏览器,一段时间依然可以看到这些信息,半个小时后,SDE的连接才消失。

——查询数据库有没有死锁,no row selected 说明没有死锁。

select * from v$locked_object

远程团队指南(二)

        作者托尼-施瓦茨的新书《我们的工作方式不起作用:被遗忘的四大促进表现的需求》一书在媒体上掀起了不小的轰动。最主要的是,他唤起了那些我们早已熟知的事情:这种现代化的时刻在线保持联络的久坐方式对我们的工作有多方面的损害。但是,对于远程团队,和我们这些劳心劳力为团队谋福利的管理者来说,这些问题非常棘手。针对他的文章《拿回你的项目》,我最近写过一篇评论。最近,我有机会向他请教一些有关管理远程团队的问题。很多人的公司都是虚拟的,他也在管理这样的公司。以下是他的一些观点:

        管理者:要非常明确的跟你的远程员工们解释清楚什么叫做成功。重要的不是他们工作的时间(反正你也不能真正的核查这一点),最重要的是他们所产出的价值。关键是要像对待成年人那样对待他们:说清楚你的预期,给他们自由去决定去选择最好的方法,最后要保证他们对自己的工作成绩负责。管理者不同花时间和雇员们来讨论和交流,来界定成功的定义,这一点对远程工作人员意义尤其重大。

员工:需要找到一种方法,在缺乏外部监管组织的情况下进行自我管理。对于施瓦茨来说,这意味着要制定一个长期的时间表,每天一清早要开始做最重要的事情,不受干扰的工作90分钟,然后休息片刻。这样的话,每天的开始效率会非常高,可以帮助员工抵挡其他诱惑,去干那些不是很紧要的比较容易做的事情——例如答复电子邮件。

        管理者:要承认那些远程上班的人,可能需要一些压力才能集中注意力。施瓦茨的书中勾画出一张非常清晰的蓝图,告诉你最有效的办法,同时照顾到你的长期需要。他说:“那些读我书的经理们首先需要从自己身上总结经验教训,然后,他们需要帮助大家来创造一种结构,使人们有可能从中取得成果——包括鼓励他们真的去重新安排时间顺序。如果你明确的定义什么是成功,而且规定好具体的办法定期检查远程工作人员的工作进度。那么,真的有人出现问题的时候,其标志就是他们什么也没贡献。你几乎可以肯定的是,其关键就是没有建立明确的责任界限,也没有明确的工作态度。记住要保持这样的对话。

        管理者:不要低估经常接触的重要性。 “人类是群居动物,我们都渴望交流,”施瓦茨说,“如果你是在管理远程工作者,你必须投入额外的精力去和他们保持联系,并对他们出色的工作表示赞赏,因为那些单枪匹马干活的人很容易感到孤独和不被尊重。你不能只依靠电子邮件——这种形式太单一了,作为沟通方式很单调。重要的是要找到时间来和他们保持联络。”

        有人苛责我说,我一直没有考虑过远程团队是可持续的,这不仅对企业不利,而且这也是不对的。我相信,和施瓦茨一样,我们必须考虑如何使人们最大程度的发挥潜能,然后有意识地创造一种环境,在这种环境下他们可以充分发展,而不是只靠运气。

转载自网络文件。

远程团队指南(一)

转载自:http://www.sohu.com/a/154074135_403607

每五个远程团队中,就有一个团队的创始人会离开。

编者按:随着科技的进步,很多工作已由传统上的上下班,变成了远距离的工作。这为人们提供了很多便利,但另一方面,远程工作减少了大家与同事间的社会交流,增加了冲突的机会。根据著名的Y Combinator 的保守统计,每五个远程团队中,就有一个团队的创始人会离开。Zapier 创始人Wade Foster发表了题为“how manage remote team”的文章,给出了他的建议。

过去几年来,人们对有关远程工作之优点的争论上,耗费了大量精力。 不幸的是,关于如何设置远程工作,以便你和你的团队能取得成功,却没有太多可以共享的信息。过去三年来,Zapier是由一支远程队伍来运作的。 我们已经由最初的三个创始人增长到二十多人。 我们已经收到了很多关于我们如何运作的问题。以下让我做一下说明:

我们的旅程

从第一天起,(2011年10月)Zapier一直是分布式团队。 即使布赖恩,迈克和我住在同一个城市,但由于学习和工作的原因,我们有不同的时间表。 每个人一有空就在Zapier工作,但这种分配,并无法奇迹般地将我们安排在同一时间,同一个房间里工作,所以我们必须成为一支远程队伍。2012年6月,我们被Y Combinator接受,并搬到加利福尼亚州山景城的一个共享公寓。 接下来的三个月是我们公司历史上唯一一个,大家都在一个时间,同一个城市的时期。2012年8月,当迈克的女友毕业于法学院,他搬回密苏里州。2012年10月,我们开始招聘。 既然我们已经是一个分布式团队,那么继续这样做是合乎情理的,因为我们知道,我们可以聘请很棒的人,他只是跟我们住不同的地方。在41个月的时间里,我们学到了一些关于构建和管理远程团队的知识。 还有其他人比我们有更多的经验。 虽然GitHub,Automattic,Citrix等公司已经证明,分布式团队可以取得成功,但我不确定这样的团队可以扩大到何种规模。 但如果你只是一个小团队,并希望加入到远程工作的队伍中,请考虑这个crash course。

设置成功远程工作的三个要素

你不可能期望,在历史上任何时刻,采取任何随机的方式,把分散在全球各地人们放在一起就能期望他们创立一些惊人的东西,并取得成功。我们发现要做好远程工作,有三个重要组成部分:团队,工具和步骤。 团队到目前为止,最重要的成分是团队。 不是每个人都可以在远程环境中工作。也不是每个人都可以管理一个远程团队(虽然我怀疑过一段时间,我了解到很多经理可以找出成功运作的方法)。 因此,组建一个能够在远程环境中工作的团队很重要。 这是我们总结出的一些最好办法: 

1. 雇用有效率的人员有效率的人员即使身处马里,也会完成任务。 你不必跟他们布置必须完成哪些工作。 你只需对最重要的事情指明方向并提供指导就好了。但是即使什么都没有的话,有效率的员工也会尽全力去实施。 

2.雇用你可以信任的人当你不能信任另一端的人时,远程工作将无法进行。 如果你不断地发现自己在担心某人正在做什么,那么你将损耗大量精力去关注一些别的事情而不是产品。记住,信任是关键。 

3.信任你雇用的人另一方面,你也需要与你雇用的人员保持信任。 作为经理,你需要学习通过期望而不是对号入座的方式来管理人员,因此请确保你能够对你所雇用的人给以信任。 

4. 聘请擅长写作的人在同一个办公室里的工作环境中,很多信息是亲自分享的。 在远程情况下,大量的内容都需要通过书面通信的方式来共享。 沟通是远程团队最重要的部分之一。 因此,好的写作水平是很重要的。 

5. 雇用那些能适应没有社交工作场所的人尝试在远程团队中创建一些社交活动是很重要的。 但事实真相是,远程工作的社交接触通常比在同一地方工作的人要少。团队的成员要能适应这一点。 最好的远程工作人员能在这种环境中茁壮成长。

工具

工具在远程工作中很重要,因为它们可以让你更好地组织团队,并将所有人都保留在同一页面上。在近距离工作中,你可以随时把团队组织起来,开全方位的会议,以使每个人都不掉队。 在远程团队中,你需要使用正确的工具,以确保每个人都能在身旁无人的情况下执行任务。 

当我们的团队有20个成员的时候,我们使用了以下工具: 

1. SlackSlack是我们的虚拟办公室。 如果你在Slack,那么你在上班。 像Slack这样的团体聊天室, 也是创造友情的好地方。根据你团队的规模,你还可以在Slack中使用”频道”这个功能。 有些时候,大家都在一起发言,会使它变得十分嘈杂,所以如果把聊天室分成诸如“工程”,“营销”不同频道的话,是十分方便的。在我们大约有10人左右的时候,开始使用多个频道。 我们现在有23个频道(一些需要被存档)。 活跃的频道包括#市场,#支持和#创客以及像#min,#价格这样跟项目有关的专门频道。

2. AsyncAsync是我们构建的内部工具。 这有点像一个博客遇到reddit。 以前我们使用了WordPress的P2主题,但后来发现我们想要更多。有时候Slack的节奏太快了,以致有人会迷失方向。Async是一个我们可以查找出重要对话的地方。 它取代了内部电子邮件,并且作为一个伟大的档案,团队中的任何人都可以参考以前的讨论。 

3. TrelloTrello是我们的默认路线图。 每当有一些我们想要做的事情,就将其添加到Trello的待办事项列表中。 在大多数情况下,你会发现自己创建了太多的卡片,去尝试做过多的事情。为避免这一情况,卡片创建人还必须编写一个详细的特征描述,以说明为什么它很重要,以及成功实现这个功能后的结果将是怎样的。我们还使用Trello来跟踪我们编辑的日历,支持文档和真正需要完成的任何项目。这对远程团队来说非常有用,因为如果公司里有任何人想要找点事儿做的话,他们可以从Trello那里选一张卡片,并且知道完成后,这对产品/公司来讲,有什么积极作用。 

4. GitHub在Zapier,议题(Issues) 和从远程取回请求(pull)是有特殊目的的。 就像GitHub使用GitHub来构建GitHub,我们使用GitHub来创建Zapier。 GitHub包含所有与代码相关的项目管理。取回请求是有关功能的操作。议题限定使用在跟Bug相关的。 特色会在Trello和/或计划文档中涉及到。 

5. LastPass由于我们已经登录了数百项服务,所以对于任何进入公司的人来说,无需登陆即时消息或等待电子邮件回复,即可访问它们,将会非常方便。 使用LastPass,任何队友都可以登录我们使用的任何服务,而无需知道登录密码。 

6. Google Docs & HackpadGoogle文档很棒。 我们通过分享电子表格,来对关键指标进行分析。 我们分享含有团队和其他重要信息的电子文档,以备以后使用。 我们共享合同和记录的文件。 任何可能多次使用的内容都应记录在案,Google文档为快捷方便地共享文件,提供了便利条件。不过,Google文档无法被用来进行组织和协作。 我们发现Hackpad非常适合作为内部文档使用。 任何需要教别人如何做一些事情的文档,都可以被添加到Hackpad中的一个便笺本和收藏之中,必要时,其他人可以快速地访问Zapier的集体智慧。 

7. GoToMeeting有大量很酷的视频会议工具。 GoToMeeting不是其中之一。 它很笨重,但GoToMeeting的音频和视频质量比任何其他应用都要好。 我们也尝试过很多工具。 有时我们会通过Google环聊或Skype进行一次通话,但是当你需要与10多人进行团队聊天时,GoToMeeting是你的朋友。 

8. HelloSign你和你的员工不时要签署一些文件。使用HelloSign,可以免去自己将文档打印出来,签上名,将其扫描回机器上传,并与下一个签名者进行文档共享的繁琐程序。 步骤建立一支强大的远程队伍的第三个成分是步骤。 我知道大多数人不喜欢步骤的问题, 它使人感到无聊和僵硬。 但是,如果你将步骤视为“我们的工作方式”,它将开始变得非常强大。设计优良的步骤能为执行任务提供结构和方向,它可以帮你顺利地完成工作。这并不意味着步骤应该是僵硬的,不变的或没有意义的。 在一家小的公司中,步骤可以有利于提供反馈,以便你衡量公司和公司人员的进度。 

以下是使用Zapier运行的一些步骤。我还喜欢叫它们:我们如何工作 

1. 大家都参与客户支持服务客户是我们的命脉。 我们每天努力解决客户的问题,帮助他们更轻松地工作。 当团队中的每个人都对客户提供支持时,就都能听到客户的声音。此外,构建产品的人也最终提供产品支持服务。 如果一个客户对一个bug很生气的话,那么这个人在听到直接反馈后,会立即修复它。 

2. 专心文化由于每个人都做客户支持,我们制定了专门的开发计划,以便使Zapier团队中的每个开发人员能轮流花费一周时间做支持服务。 其他周这些工程师们将100%致力于功能开发。 这样可以给开发人员足够的时间来专心作出一番事业。 同样,这也确保了新功能开发的良好节奏。 

3.每周环聊每个星期四上午9点太平洋时区,我们聚在一起进行闪电会谈,演示和/或采访。 既然现在有20多人,有时很难每周都见到每个人。 这些环聊有机会对你经常看不到的人说声“你好”。这些环聊也是学习新东西的好机会。 每个星期,团队内有人会对有趣的事情做一个敏捷地讲话或演示,再或者有人跑过来加入队伍中,我们会让他做一个快速地介绍。之所以会议定在星期四的上午9点召开,是因为这是一个地理上分布式团队的最佳时间,所以没有人会在周末受到太多的打扰。 

4. 结伴活动随着我们的发展,认识你的所有队友变得更难了。一个简单地解决方法就是让队友们每周随机地与另外一个队友配对,并进行短暂的10-15分钟对话。 我们用这个机会聊聊生活,工作或其他任何感兴趣的事情。 有时,很酷的新产品功能就是通过这些聊天聊出来的,其他时候,它只是很好玩。 无论如何,这有助于每个人更好地了解他们的队友。 

5. 每月一对一在我曾经做过的每一份工作中(甚至是近距离的工作),我和我的主管之间没有足够的回馈机制。 所以在Zapier,我和每一个团队成员在Skype或者Google环聊上设置一个,每个月的定期活动,聊聊四件事情:你感到兴奋的是什么,你担心的是什么? 我可以怎样更好地帮你完成你的工作,你可以做些什么事情来改善你的工作。这些问题具有一致性,所以它很容易去准备,而且也能够随着时间的变化去衡量。 我们特别将其限制为每个问题只涉及一个项目。这样可以比较轻松去实现。 但随着时间的推移,被解决的问题就会积少成多。每个月对话的答案都会被记录在Google文档中,以便下一次会话时,可以参考上一个月的信息并帮助我们检查工作进度。过去我和每个人都做一对一会谈。 然而,当团队扩大到大约15人左右时,这有些太难了。所以现在我专注于支持和营销团队,而Bryan和Mike(我的共同创始人)分别专注于工程和产品团队。这些审核非常好地反映了我们这个远程团队是否在良好地运作,因为它让我得到了大大小小,各方面的反馈,使我们知道哪些方面需要改善,能使工作起来更加愉快。 例如,我发现库克西和詹姆斯偶尔在哥伦比亚市中心共同工作,最后他们在自己淘腰包付停车费。 因此,我们设置了一个简单的报销计划,以确保队员在为公司支出后,可以报销这笔费用。 

6.责任感的文化一个经常被问到的问题是“你如何知道人们是否在做工作?” 我们的简单方法是每周五做一次更新。 每个星期五,团队中的每个人都会向Async发送一份有关本周他们做了什么,下一周他们计划做什么的的工作报告。这样可以轻松地保持项目的进度,让Zapier里的每个人都有责任感,并尽其所能。 

7. 亲身体验文化团队成员间的互动,对任何团队来说都是有价值的。 当队友们在一起,亲自做某件事的时候,肯定会有一些特别的经历。 因此,我们力争将团队一年两次聚在一起,这让人感觉很酷。我们公司特别安排了访问华盛顿,科罗拉多州,阿拉巴马州和犹他州。除了全公司聚会之外,我们有些小组,在协调一个重大项目/功能时,还会安排见面活动。 通常这只是一个人跳上飞机去探望另一个人。这似乎看起来很破费,事实也确实如此。 但是不要忘了,其实你已经省下了一大笔办公室租赁费。 

8.自动化任何可以自动控制的工作Zapier的核心是自动控制。 这里有几个原因。 一是,它允许我们保持小规模团队,因为我们不需要人员来执行重复,平凡和无聊的任务。 二是,它让队友可以大部分时间都专注于做一些影响深远的工作,而不是被一些无足轻重的繁琐细节而困扰。

从别人那里学习

有很多知识是由其他人发掘的。 不幸的是,没有多少人写了有关远程工作的,以及如何管理它的材料。 大多数文章非常肤浅,譬如只是建议人们“使用Google环聊”,这不是超级有用的。最后,了解远程工作的最佳方式是询问那些在做远程工作的人。 我从Lance Walley,Buffer的Joel Gascoigne,整个Basecamp(以前的37Signals)团队,GitHub的Zach Holman和一些其他创始人及远程工作人员那里学到了很多。希望本文能够帮你深入了解如何管理远程团队。 但请不要把它当成普遍真理。最大的赢家不是从网上找到线索的人,而是那些通过亲身实践并发现答案的人。

oracle EBS R12和11i的主要区别(转)

简单的说
1、架构变了,原来的SOB现在叫Ledger
2、客户、供应商、税提升了一个级别
3、客户、供应商、银行改为web界面的
4、AR、AP可以支持在一个职责下跨OU查询和录入。
5、引入SLA架构,数据逻辑更清晰。另外从子模块到总账的数据形式和生成的摘要都可编辑。简化了开发的工作量。

一、在原来的应收/应付/项目/CST和GL之间增加了一个层次SLA(SUBLEDGER ACCOUNT 子分类帐),通过这个层次来进一步支持全球财务解决方案,如银行、税务引擎、公司间业务等;即银行帐号的定义是法人共享,而不是OU共享。
二、取消帐套的定义,改为以法人单位为核心,定义多套帐的模式。如一个法人可对应PRIMARY LEDGER;SECOND LEDGER,REPORT CURRENCY LEDGER 等
三、权限设置模式改变,12使用角色连接OU,用户指定角色的方式,处理多OU的业务不需要频繁切换。
四、LEDGER的定义要素为4C,分别为原来的3C+ACCOUNTING CONVENTION(会计方法)。
五、新推出LEDGER SET的概念,当COA和Calendar一致的时候可以将多个LEDGER定义为一个LEDGER SET,作用是可以跨LEDGER出报表。可以统一进行会计期的管理及COA的维护。
六、会计方法:ORACLE仍然保留了权责发生制和收付实现制,同时提供了会计方法定制的界面,即AMB(ACCOUNTING MOTHODS BUILDER),如果不使用AMB自己定义会计方法,而选择标准的权责发生制,则应收/应付的设置同11I。
七、增加了全球税务模块,税务规则统一制定(未使用)
八、将应付分为了应付会计和付款会计,一是为了符合萨班斯法案;二是解决统一支付的需求。
九、应收增加了创建会计科目的按钮,收款科目简化了。
十、固定资产增加了创建会计科目的按钮,运行折旧与关闭期间动作分开了,一个月中可以出现多张折旧凭证。
十一、在会计科目段中增加了属性-“第三方控制帐户”,将科目设置为第三方控制帐户后,在SLA中就可以以科目+第三方出余额表,在SLA中的应收应付导入的凭证,是符合用户习惯的凭证,今后可以考虑凭证打印从此处实现。
十二、在会计科目组合界面增加了替代帐户的概念,当原科目失效后如果还有业务发生,系统会使用替代帐户代替。
十三、GL序列产生的时点由原来的一个变为四个。
十四、 R12 多了诊断功能,可以在查询某个记录涉及的所有表。对于处理问题有很好的帮助。

转自:https://www.cnblogs.com/fanofyu/p/4497867.html

参考:https://www.cnblogs.com/quanweiru/p/5021066.html