Archive for 十二月, 2011


Linux常用命令速查

一. 启动,关机,登入,登出相关命令

[login] 登录

[logout] 登出

[exit] 登出

[shutdown] 停止系统

[halt] 停止系统

[reboot] 重启动

[poweroff] 切断电源

[sync] 把内存里的内容写入磁盘

[lilo] 安装lilo启动管理程序

[grub] 安装lilo启动管理程序

二. Shell相关命令

[chsh] 切换Shell

[history] 显示命令履历

[alias] 设置命令别名

[unalias] 取消命令别名

[which] 显示命令所在位置

[type] 查询命令种类

[echo] 显示字符串或者变量内容

[set] 设置/显示Shell变量

[printenv] 显示环境变量

[export] 设置环境变量

[env] 设置临时环境变量

[unset] 释放环境变量

[setenv] 设置环境变量

[unsetenv] 释放环境变量

执行文件当中的命令

[man] 查询命令手册

[info] 查询超文本命令手册

[whatis] 显示命令简介

[apropos] 通过关键字查询手册

三. 用户管理相关命令

[su] 切换到其他用户

[useradd] 追加用户

[adduser] 追加用户

[userdel] 删除用户

[usermod] 修改用户设置

[chfn] 修改用户私人信息

[groupadd] 追加组

[groupdel] 删除组

[groupmod] 修改组设置

[passwd] 更改密码

[whoami] 显示用户名

[logname] 显示登录用户帐号

[users] 显示所有登录用户信息

[who] 查询登录用户信息

[w] 查询登录用户信息

[id] 显示指定用户的ID信息

[groups] 显示指定用户的所属组

[finger] 显示指定用户的个人信息

[mesg] 开关与他人收发消息

[write] 给其他用户发消息

[wall] 给所有用户发消息

[talk] 和其他用户聊天

四. 系统消息相关命令

[top] 提供了实时的对系统处理器的状态监视

[date] 显示/设置当前时间

[uptime] 显示系统运行时间

[arch] 显示机器的核心构架(如i386)

[uname] 显示操作系统信息

[tty] 显示终端名

[last] 显示登录/登出在履历

[lastb] 显示非法登录信息

[dumpkeys] 显示当前键盘配置

[loadkeys] 变更键盘配置

[df] 查询磁盘使用信息

[du] 查询磁盘使用信息

[dmesg] 显示系统启动消息

[script] 保存输入输出到文件

五. 文件操作相关命令

[ls] 显示文件列表

[tree] 显示目录树

[pwd] 显示当前路径

[cd] 更改当前路径

[pushd] 追加路径到目录堆栈

[popd] 从目录堆栈删除路径

[dirs] 显示目录堆栈的内容

[mkdir] 创建路径

[rmdir] 删除路径

[cp] 复制文件/目录

[rm] 删除文件/目录

[mv] 移动文件/目录,修改文件名

[chown] 更改文件/目录的所有者

[chgrp] 修改文件/目录的所有组

[chmod] 修改文件/目录的权限

[touch] 更改文件时间

[ln] 建立文件/目录链接

[find] 查找文件

[whereis] 显示文件存在的路径名

[file] 查询文件种类

[size] 查询文件大小

六. 文件编辑相关命令

[cat] 显示文件内容

[tee] 输出到文件和屏幕

[more] 分屏显示文件内容

[less] 分屏显示文件内容

[head] 显示文件头部内容

[tail] 显示文件尾部内容

[fold] 折叠显示长行

[sort] 排列文件的行

[cmp] 比较文件内容

[diff] 显示文件差异

[nkf] 更改日语文件编码

[dd] 变更文件之后复制

[wc] 统计文本单词数,文件大小等

[split] 分割文件

[paste] 以行连接文件

[join] 以字段连接文件

[grep] 查询文字

[uniq] 过滤重复部分显示文件内容

[tr] 替换文字

[sed] 替换文字

[vi] vi文字编辑器

七. 压缩/解压缩相关命令

[tar] 压缩/解压缩文件

[compress] 压缩/解压缩文件

[uncompress] 解压缩

[gzip] 压缩/解压缩文件

[gunzip] 解压缩

[zcat] 显示压缩文件的内容

[lha] 压缩/解压缩文件

[uuencode] 把二进制文件编码为文本文件

[uudecode] 把经过编码的文本文件还原为二进制文件

八. MS-DOS工具集

[mtools]命令

[mdir] 显示文件列表

[mcd] 改变当前目录

[mmd] 新建目录

[mrd] 删除目录

[mdeltree] 删除目录树

[mcopy] 复制文件

[mdel] 删除文件

[mmove] 移动文件

[mren] 更改文件或目录名

[mattrib] 修改文件属性

[mtype] 显示文件内容

[mdu] 查询文件或目录大小

[minfo] 显示磁盘信息

[mformat] 以MS-DOS方式格式化磁盘

[mlabel] 设置磁盘标签

九. 控制外部设备相关命令

[mount] mount上设备

[umount] 解除已经mount上的设备

[eject] 弹出(CD/DVD等)

[fdformat] 格式化软盘

[fdisk] 配置/显示硬盘分区

[mkfs] 格式化磁盘分区

[fsck] 检查/修复磁盘错误

[lpr] 打印到打印机

[lprm] 中断打印任务

[lpq] 显示打印任务的状态

[lpc] 管理/控制打印任务

[ifconfig] 显示/设定NIC配置

十. 进程及任务管理相关命令

[ps] 显示正在运行的进程

[jobs] 显示后台运行任务

[fg] 把任务切换到前台

[bg] 把任务切换到后台

[kill] 中止进程或任务

[killall] 中止进程或任务

[wait] 等待进程或任务的结束

[at] 设置定时执行任务

[atq] 显示尚未执行的任务

[atrm] 删除定时执行任务

[batch] 在系统负荷减轻的时候执行任务

[nice] 改变优先度并执行任务

[nohup] 在后台执行任务,Logout之后也不退出

[sleep] 休眠一定的时间

[crond] 用来定期执行程序的命令

[screen] 可以在多个进程之间多路复用一个物理终端的窗口管理器

十一. 网络管理相关命令

[netstat] 显示当前网络连接状况

[route] 显示/设置路由

[host] 显示网络主机情况

[hostname] 显示/设置当前主机的名字

[ping] 确认和远程机器的连接情况

[traceroute] 显示路由信息

[rwho] 查询网上机器的登陆用户

[ruptime] 查询网上机器的系统运行时间

[rlogin] 登陆到远程机器

[telnet] 用telnet登陆到远程机器

[rsh] 给远程机器发送命令

[rcp] 在远程机器之间复制文件

[mail] 收取邮件

[sendmail] 发送邮件

[mailq] 确认邮件队列

[ftp] 用ftp传输文件

十二. 其他命令

[cal] 显示日历

[clear] 清屏

[gcc] 编译C语言代码

[as] 汇编

[bc] 计算

[rpm] Redhat的包管理

[dpkg] Debian的包管理

[installpkg] Slackware的包安装(删除命令则是removepkg)

[xf86setup ,turboxfg,Xconfigurator] 配置X服务

[startx] 启动 X-Window 图形界面

(1). tcpdump的选项

-a 将网络地址和广播地址转变成名字;
-d 将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd 将匹配信息包的代码以c语言程序段的格式给出;
-ddd 将匹配信息包的代码以十进制的形式给出;
-e 在输出行打印出数据链路层的头部信息;
-f 将外部的Internet地址以数字的形式打印出来;
-l 使标准输出变为缓冲行形式;
-n 不把网络地址转换成名字;
-t 在输出的每一行不打印时间戳;
-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv 输出详细的报文信息;
-c 在收到指定的包的数目后,tcpdump就会停止;
-F 从指定的文件中读取表达式,忽略其它的表达式;
-i 指定监听的网络接口;
-r 从指定的文件中读取包(这些包一般通过-w选项产生);
-w 直接将包写入文件中,并不分析和打印出来;
-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)
(2). tcpdump的表达式

表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。在表达式中一般如下几种类型的关键字。
第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.
第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。举例说明,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。
第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是”ether”的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。
除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 ‘not ‘ ‘! ‘, 与运算是’and’,’&&’;或运算 是’or’ ,’││’;这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。
A)想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:

tcpdump host 210.27.48.1
B)想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令:(在命令行中使用 括号时,一定要转义)

tcpdump host 210.27.48.1 and (210.27.48.2 or 210.27.48.3 )
C)如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:

tcpdump ip host 210.27.48.1 and ! 210.27.48.2
D)如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:

tcpdump tcp port 23 and host 210.27.48.1
(3). tcpdump的输出结果
下面我们介绍几种典型的tcpdump命令的输出信息
A)数据链路层头信息
使用命令

tcpdump –e host ice
ice 是一台装有linux的主机,她的MAC地址是0:90:27:58:AF:1A
H219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一条命令的输出结果如下所示:
21:50:12.847509 eth0 ice.telnet 0:0(0) ack 22535 win 8760 (DF)
分析:21:50:12是显示的时间, 847509是ID号,eth0 表示从网络接口设备发送数据包, 8:0:20:79:5b:46是主机H219的MAC地址,它表明是从源地址H219发来的数据包. 0:90:27:58:af:1a是主机ICE的MAC地址,表示该数据包的目的地址是ICE . ip 是表明该数据包是IP数据包,60 是数据包的长度, h219.33357 > ice.telnet 表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口. ack 22535 表明对序列号是222535的包进行响应. win 8760表明发送窗口的大小是8760.
B)ARP包的TCPDUMP输出信息
使用命令

tcpdump arp
得到的输出结果是:

22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
22:32:42.802902 eth0 表明从主机发出该数据包, arp表明是ARP请求包, who-has route tell ice表明是主机ICE请求主机ROUTE的MAC地址。 0:90:27:58:af:1a是主机ICE的MAC地址。
C)TCP包的输出信息
用TCPDUMP捕获的TCP包的一般输出信息是:

src > dst: flags data-seqno ack window urgent options
src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R (RST) “.” (没有标记); data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针. Options是选项.
D)UDP包的输出信息
用TCPDUMP捕获的UDP包的一般输出信息是:

route.port1 > ice.port2: udp lenth
UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenth。

附:现在一般用这样用:
sudo tcpdump -s 0 -nX host 172.27.193.234 -i eth1

或者-w来使用wireshark

系统连接状态篇:
1.查看TCP连接状态
netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn

netstat -n | awk ‘/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}’ 或
netstat -n | awk ‘/^tcp/ {++state[$NF]}; END {for(key in state) print key,”t”,state[key]}’
netstat -n | awk ‘/^tcp/ {++arr[$NF]};END {for(k in arr) print k,”t”,arr[k]}’

netstat -n |awk ‘/^tcp/ {print $NF}’|sort|uniq -c|sort -rn

netstat -ant | awk ‘{print $NF}’ | grep -v ‘[a-z]’ | sort | uniq -c

2.查找请求数请20个IP(常用于查找攻来源):

netstat -anlp|grep 80|grep tcp|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -nr|head -n20

netstat -ant |awk ‘/:80/{split($5,ip,”:”);++A[ip[1]]}END{for(i in A) print A[i],i}’ |sort -rn|head -n20

3.用tcpdump嗅探80端口的访问看看谁最高

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr |head -20

4.查找较多time_wait连接

netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20

5.找查较多的SYN连接

netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more

6.根据端口列进程

netstat -ntlp | grep 80 | awk ‘{print $7}’ | cut -d/ -f1

网站日志分析篇1(Apache):

1.获得访问前10位的ip地址

cat access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -10
cat access.log|awk ‘{counts[$(11)]+=1}; END {for(url in counts) print counts[url], url}’

2.访问次数最多的文件或页面,取前20

cat access.log|awk ‘{print $11}’|sort|uniq -c|sort -nr|head -20

3.列出传输最大的几个exe文件(分析下载站的时候常用)

cat access.log |awk ‘($7~/.exe/){print $10 ” ” $1 ” ” $4 ” ” $7}’|sort -nr|head -20

4.列出输出大于200000byte(约200kb)的exe文件以及对应文件发生次数

cat access.log |awk ‘($10 > 200000 && $7~/.exe/){print $7}’|sort -n|uniq -c|sort -nr|head -100

5.如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面

cat access.log |awk ‘($7~/.php/){print $NF ” ” $1 ” ” $4 ” ” $7}’|sort -nr|head -100

6.列出最最耗时的页面(超过60秒的)的以及对应页面发生次数

cat access.log |awk ‘($NF > 60 && $7~/.php/){print $7}’|sort -n|uniq -c|sort -nr|head -100

7.列出传输时间超过 30 秒的文件

cat access.log |awk ‘($NF > 30){print $7}’|sort -n|uniq -c|sort -nr|head -20

8.统计网站流量(G)

cat access.log |awk ‘{sum+=$10} END {print sum/1024/1024/1024}’

9.统计404的连接

awk ‘($9 ~/404/)’ access.log | awk ‘{print $9,$7}’ | sort

10. 统计http status

cat access.log |awk ‘{counts[$(9)]+=1}; END {for(code in counts) print code, counts}’
cat access.log |awk ‘{print $9}’|sort|uniq -c|sort -rn

10.蜘蛛分析,查看是哪些蜘蛛在抓取内容。

/usr/sbin/tcpdump -i eth0 -l -s 0 -w – dst port 80 | strings | grep -i user-agent | grep -i -E ‘bot|crawler|slurp|spider’

网站日分析2(Squid篇)按域统计流量

zcat squid_access.log.tar.gz| awk ‘{print $10,$7}’ |awk ‘BEGIN{FS=”[ /]”}{trfc[$4]+=$1}END{for(domain in trfc){printf “%st%dn”,domain,trfc[domain]}}’

数据库篇
1.查看数据库执行的sql

/usr/sbin/tcpdump -i eth0 -s 0 -l -w – dst port 3306 | strings | egrep -i ‘SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL’

系统Debug分析篇
1.调试命令
strace -p pid
2.跟踪指定进程的PID
gdb -p pid

Linux系统下,TCP连接断开后,会以TIME_WAIT状态保留一定的时间,然后才会释放端口。当并发请求过多的时候,就会产生大量的TIME_WAIT状态的连接,无法及时断开的话,会占用大量的端口资源和服务器资源。这个时候我们可以优化TCP的内核参数,来及时将TIME_WAIT状态的端口清理掉。

本文介绍的方法只对拥有大量TIME_WAIT状态的连接导致系统资源消耗有效,如果不是这种情况下,效果可能不明显。可以使用netstat命令去查TIME_WAIT状态的连接状态,输入下面的组合命令,查看当前TCP连接的状态和对应的连接数量:
#netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
这个命令会输出类似下面的结果:
LAST_ACK 16
SYN_RECV 348
ESTABLISHED 70
FIN_WAIT1 229
FIN_WAIT2 30
CLOSING 33
TIME_WAIT 18098
我们只用关心TIME_WAIT的个数,在这里可以看到,有18000多个TIME_WAIT,这样就占用了18000多个端口。要知道端口的数量只有65535个,占用一个少一个,会严重的影响到后继的新连接。这种情况下,我们就有必要调整下Linux的TCP内核参数,让系统更快的释放TIME_WAIT连接。

用vim打开配置文件:#vim /etc/sysctl.conf

在这个文件中,加入下面的几行内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30

输入下面的命令,让内核参数生效:#sysctl -p

简单的说明上面的参数的含义:

net.ipv4.tcp_syncookies = 1
#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1
#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭;
net.ipv4.tcp_fin_timeout
#修改系統默认的 TIMEOUT 时间。

在经过这样的调整之后,除了会进一步提升服务器的负载能力之外,还能够防御小流量程度的DoS、CC和SYN攻击。

此外,如果你的连接数本身就很多,我们可以再优化一下TCP的可使用端口范围,进一步提升服务器的并发能力。依然是往上面的参数文件中,加入下面这些配置:
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
#这几个参数,建议只在流量非常大的服务器上开启,会有显著的效果。一般的流量小的服务器上,没有必要去设置这几个参数。

net.ipv4.tcp_keepalive_time = 1200
#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 10000 65000
#表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为10000到65000。(注意:这里不要将最低值设的太低,否则可能会占用掉正常的端口!)
net.ipv4.tcp_max_syn_backlog = 8192
#表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 6000
#表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。默 认为180000,改为6000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。此项参数可以控制TIME_WAIT的最大数量,避免Squid服务器被大量的TIME_WAIT拖死。

内核其他TCP参数说明:
net.ipv4.tcp_max_syn_backlog = 65536
#记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128。
net.core.netdev_max_backlog = 32768
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.core.somaxconn = 32768
#web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。

net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216 #最大socket读buffer,可参考的优化值:873200
net.core.wmem_max = 16777216 #最大socket写buffer,可参考的优化值:873200
net.ipv4.tcp_timestsmps = 0
#时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。
net.ipv4.tcp_synack_retries = 2
#为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。
net.ipv4.tcp_syn_retries = 2
#在内核放弃建立连接之前发送SYN包的数量。
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1
# 开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。

net.ipv4.tcp_wmem = 8192 436600 873200
# TCP写buffer,可参考的优化值: 8192 436600 873200
net.ipv4.tcp_rmem = 32768 436600 873200
# TCP读buffer,可参考的优化值: 32768 436600 873200
net.ipv4.tcp_mem = 94500000 91500000 92700000
# 同样有3个值,意思是:
net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力。
net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段。
net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket。
上述内存单位是页,而不是字节。可参考的优化值是:786432 1048576 1572864

net.ipv4.tcp_max_orphans = 3276800
#系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。
如果超过这个数字,连接将即刻被复位并打印出警告信息。
这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,
更应该增加这个值(如果增加了内存之后)。
net.ipv4.tcp_fin_timeout = 30
#如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。

休息时间培训算加班吗?

困惑:

我们老板规定每周一晚,全体行政人员必须留下来接受培训,不能请假,也不算加班。但我们公司的规章制度中并没有这一条,大家说这种做法有理吗?

[答复:]

加班加点是员工按照用人单位的要求,为了用人单位的直接或间接利益,在工作时间以外提供额外劳动。为了确定员工是否属于加班加点,一般会依照以下几点进行判断:

(一)是否为用人单位所要求或是否体现用人单位的意志;

(二)是否为了用人单位的利益;

(三)是否在标准工作时间之外。

如果符合上述三个条件,应当视作加班加点。

你们老板要求每周一晚上留下来听课,占用了工作日下班后的休息时间,而且听课是老板的要求,你们出于服从老板的意志才留下听课,所以它是由公司所发起的,是公司对员工的具体要求,员工只能按要求执行。

另一方面,公司是占用你们休息时间培训的最终受益者。通常情况下,培训应当在正常的工作时间内进行,而将其安排在节假日或其它休息时间,无疑节约了正常的工作时间,公司自然可以通过挤出来的正常工作时间获得更多的效益。

最后,员工通过培训获得技能,或者明确、了解业务流程规则等,有利于更好开展工作,为公司创造出更多、更好的经济效益。虽然培训不属于直接生产经营,但它却促进了生产经营,最终使公司受益。

所以,你们公司占用下班后时间强迫听课,是属于加班加点的情形。你们有权要求获得加班费,公司应当按照不低于劳动合同规定的员工本人小时工资标准的150%支付加班工资。如果公司拒绝支付,员工可以依据《劳动合同法》第85条第(三)项之规定,要求劳动监察部门责令公司限期支付,逾期不支付的,还可以通过劳动监察部门要求公司按应付金额50%以上100%以下的标准加付赔偿金。

虽然同事间的钱款往来一般不会像商业民间借贷来得那么“腥风血雨”,但规矩还是要讲的。以下分享五招,让大家规避借款风险:

1.尽量不要借款。规避借款风险的最行之有效的办法就是:尽量不要向同事借款!就像之前在案例里提到的,经济独立的成年人要有合理规划储蓄的意识和能力。万万不可平时大把花钱,到了急用的时候却要让同事施以援手,最后还或有意或无意地拖欠还款。一旦养成类似的恶习,被同事列为“公敌”是迟早的事儿。

2.借款用途要合法。对于借款人提出的借款要求,出借人务必要问明对方的借款用途,决定当借不当借。比如,如果明知借款人是为了赌博、走私等非法活动却仍向其借款的,属于违法借贷。就算双方有借款协议,该借贷关系仍不受法律保护,甚至在发生违法活动后可能追究出借人的责任。

3.借据要规范。俗话说“亲兄弟,明算账”、“借钱容易还钱难”,一旦涉及大额款项,就算出借人与借款人的关系再好,也建议双方履行基本手续——立借据。规范的借据一般应详细载明双方的姓名、借款金额、期限、利息(如有必要)等基本条款,并当场由本人签字,最好让第三方一同签字作为见证人。如果是订立很正式的借款合同的话,必须要有对方收到你钱的证据,包括收条、银行转账单等。要保存好证据,最好能记得见证人。

4.大额借款有担保。如果借款人的偿还能力或信用有疑问,但这笔款项又非借不可,就需要用借款人的财产作抵押,如房产、有价证券、车辆等。如果抵押物是不动产,例如房屋,你必须到房产部门办理抵押登记手续,否则没有对外公示的效力。另外部分动产,比如车辆,也要到车管所办理抵押登记手续。或者请第三人作保证,保证人最好是连带保证责任。

5.借款利率要合理。合同法第二百一十一条第一款规定:自然人之间的借款合同对利息没有约定或约定不明确的,视为不支付利息。但万一涉及到利息,借款双方需要遵循相关法律法规规定:利率可以适当高于银行利率,但最高不得超过银行同期贷款利率的4倍,超出部分的利息不予保护。另有规定,出借人将利息计入本金计复利的,不予保护。

6.关注诉讼时效。解决借款问题要诉诸法律,是谁都不愿意看到的,但为防万一,我们还是得学习下法律。我国《民法通则》规定诉讼时效期为两年,即如果借款期限届满,债务人不履行债务,而债权人在两年内从未主张过债权,则该债权将不再受法律强制保护。因此,一旦债务到期,债权人应及时追索,要求还债,或者重新开具借据,签订还款计划等,以中断时效。中断后的时效,从中断事由发生之日起算,仍为两年。

困惑:

Q1:二婚还可以享受婚假待遇吗?

Q2:公司要求在领结婚证后的半年内才是请婚假的有效期,请问公司可以这样做吗?

Q3:公司规定,如员工不是在本公司工作期间领的结婚证,不予享受婚假,请问公司这样做可以吗?

[答复:]

普通员工所说的婚假分为两部分,一部分是婚假,另一部分是晚婚假。后者是对符合计划生育的员工的引导性政策,只有晚婚的人才有。

我国关于婚假的规定比较模糊。《劳动法》、《婚姻法》等大法中都没有提到婚假的问题。可以找到的婚假规定要追溯到1980年2月20日国家劳动总局、财政部发布的《关于国营企业职工请婚丧假和路程假问题的通知》([80]劳总薪字29号),其中提到:“原劳动部一九五九年六月一日发出的(59)中劳薪字第67号通知中曾规定,企业单位的职工请婚丧假在三个工作日以内的,工资照发。”同时,该通知再次明确:“职工本人结婚或职工的直系亲属(父母、配偶和子女)死亡时,可以根据具体情况,由本单位行政领导批准,酌情给予一至三天的婚丧假。”

熟悉人事政策的人会发现,这一通知针对的是国营企业,在市场经济改革后,是否能够规范非国有企业的员工婚假,本身存在一个大大的问号。经过30年的发展,这样模糊的政策远不能适应市场经济环境。所以,一般认为,单位可以根据自身管理需要制订制度,规范自己的员工在使用婚假上的细节,但是不能违背国家的强制性规定。

我国关于晚婚假的规定则明确的多,但也存在问题。《中华人民共和国人口与计划生育法》第二十五条规定:“公民晚婚晚育,可以获得延长婚假、生育假的奖励或者其他福利待遇。”这其中“延长婚假”就是晚婚假。由于国家将晚婚假多少的制订权下放到地方,所以各省市对晚婚假有自己的规定。比如《北京市人口与计划生育条例》《上海市人口与计划生育条例》规定晚婚假为7天,广东重庆规定为10天,四川安徽则有20天。不过这种自由度造成各省市福利差距过大,非常不利于跨省市企业的管理。

现在比较常见婚假矛盾焦点有以下几个:

1、二婚还可以享受婚假待遇吗?

劳动和社会保障部办公厅(劳社部函[2000]84号)《关于对再婚职工婚姻问题的复函》中明确规定:“根据《中华人民共和国婚姻法》的规定精神,再婚者与初婚者的法律地位相同,用人单位对再婚职工应当参照国家有关规定,给予同初婚者一样的婚假待遇。”因此,再婚者的婚假待遇与初婚者相同,但是不能享受晚婚假。

2、公司要求婚假必须领结婚证后的半年内休完可以吗?

这是公司对婚假合理使用的管理手段。如果制度是经过民主程序制订的,应当认可它的效力。当然,如果公司的制度违背了公平合理性,比如,婚假必须在领取结婚证后一周内休完,员工可以通过工会、仲裁等方式推翻其效力。

3、不是在本公司工作期间领结婚证的不给婚假吗?

法律上没有提到婚假的义务单位必须是结婚时的单位,但是实践操作中,非本单位结婚的一般都不给休假,形成惯例。更有不少单位在制度上明确只有本单位领结婚证的,才能享受婚假。这一制度得到比较广泛地认可。

关于工资的那些劳动法纠纷

入职谈钱伤感情——关于工资的那些纠纷

  谈起工资,其实工资有狭义和广义的不同理解,狭义的工资只是指每月固定的那部分收入,与奖金对应,而广义的工资则包括所有的收入。《劳动合同法》上所说的“劳动报酬”是广义的说法,包含了基本工资、奖金、津贴、补贴、加班费、年终奖等工资型收入。

  工资的发放应该遵守雇佣双方的劳动合同的约定,但是工资是不可能始终一成不变的,这就造成了双方不太可能一直遵守约定,所以,如何认定双方之间对于工资变化的认可也是一大难点。通常,如果工资变化后双方没有争议、长期履行,相当于双方认可这一变化。但是,为了规避相关的风险,雇佣双方还是签署书面确认比较保险。

  Q1:把工资的一部分作为奖金,每个月扣除,留到年底再发,这种做法合法吗?

  劳动合同中如果明确,双方约定的月工资中,有一部分工资的发放时间是年底,这是对工资发放时间的约定,并不违法。但是员工一旦离职,这些发放时间为年底的工资应当一次性发给员工,不得以离职为由,克扣员工工资。

  Q2:年终奖何时发有规定吗?公司可以延缓1个月发年终奖吗(如过年为1月底,公司在2月底发年终奖)?

  年终奖何时发放要看双方劳动合同的约定以及公司的规章制度。如果劳动合同和规章制度上均没有明确提到年终奖的发放情况,则公司有权利决定是否发放年终奖,以及年终奖的具体发放时间。

  Q3:如果员工在发放年终奖之前离职了,公司有权不给他年终奖吗?

  如果双方的劳动合同或公司的规章制度上明确有年终奖,而且明确了年终奖对应的年度,员工在做满了这个年度之后离职,则应当有年终奖。有些公司没有年终奖,但是会针对季度或者年度有其他奖励,比如根据绩效考核情况有一定的奖励,其性质与年终奖有所差异,不能简单地认为这就是年终奖,还是要具体情况具体分析。

  Q4:公司在试用期内给员工进行培训,称培训费高昂,把培训费抵扣作工资,以此作为理由不发工资,这样做合法吗?

  培训费与工资完全不属于一个性质,而且试用期内的员工培训多数是上岗前的必要培训,将这种培训成本转嫁给员工,是不合法的。擅自将培训费抵作工资,不发工资,属于无故克扣工资,可以通过劳动监察也可以通过劳动仲裁来解决。

  根据《上海市企业工资支付办法》规定,有下列情况之一的,用人单位可以代扣工资:“(一)代缴应由劳动者个人缴纳的个人所得税;(二)代缴应由劳动者个人承担的各项社会保险费用;(三)法院判决、裁定中要求代扣的抚养费、赡养费;(四)法律、法规规定可以从劳动者工资中扣除的其他费用。”因此公司以培训费用高昂为由要员工用工资抵扣,属于无故克扣员工工资是违法的。

  如果培训费用真的高昂,企业可以根据《劳动合同法》第二十二条:“用人单位为劳动者提供专项培训费用,对其进行专业技术培训的,可以与该劳动者订立协议,约定服务期。”这样一来企业和员工双方都能得到保障。

  Q5:员工有带薪休假,但公司不给休,把假期折算成钱给员工,这种做法可以吗?

  《职工带薪年休假条例》第五条:“单位确因工作需要不能安排职工休年休假的,经职工本人同意,可以不安排职工休年休假。对职工应休未休的年休假天数,单位应当按照该职工日工资收入的300%支付年休假工资报酬。”所以,在征得员工同意的前提下,单位可以将未休年休假通过折钱的方式给员工。不过要注意,折钱的标准是给3倍的工资。考虑到正常的一倍工资已经发放了,所以在具体操作时,补发2倍工资即可。

离职拉锯战——吃了我的给我吐出来

  入职谈钱伤感情,离职谈钱更是一场拉锯战。离职的时候,如果单位要求员工将曾给予的待遇退出来,这是被允许的么?

  这个问题其实没有一个统一的答案,因为单位能给予的待遇太多了,有些是国家通过法律法规明确的,有些是单位自己设立的,有些具备完善的退出规定,有些则没有事先约定。很多条件都会影响这个问题的结果。下面让我们来具体问题具体分析。

  Q1:离职后,公司要求把工作服“强卖”给员工,说是给员工定制的,并且公司能够提供发票,请问这样做合法吗?

  如果工作服是工作必须的,这属于国内工作条件和安全保护,公司完全应当提供给员工这些服装。比如,密封工作间的密封服。

  如果工作服不是工作必须的,只是为了统一的形象而配置,那属于公司企业文化的要求,也应当免费提供。比如,酒店的高级制服。

  但是考虑到有些工作服确实昂贵,而且完全交给员工管理,脱离了公司的控制。公司担心员工擅自离职后给公司造成很大的损失,也可以理解。但必须要员工买制服,员工没有选择权,则是混淆了公司与员工、商家与消费者的界限。建议公司通过收取适当的押金,来解决这一矛盾。同时,为了避免争议,最好在面试和入职时通过书面的方式获得员工的许可。

  Q2:离职了,公司要求员工把补充公积金、补充医疗保险、分的房子、培训费等“吐”出来,这合法吗?

  补充公积金、补充医疗保险、分房、培训都不是国家强制要求单位给予的福利待遇。公司给予员工这些待遇,是公司自己可以决定的。为了留住人才,给予这些待遇,公司可以设置一些条件,只要不违反法律强制规定。不过,如果要求员工在离职时退回已给的待遇,公司应当与员工有明确的约定,或者内部有合法有效的规章制度才行。

  Q3:员工把全年的带薪年休假都休完了,但未工作至满年休假的工作期限就离职了(比如,公司给予员工1年7天的带薪年休假,要求是员工做满1年,但员工未坐满1年就离职了,但已把7天的年休假都给休了),公司要求员工把多休的年假折算成钱“还给”公司,这样做合法吗?年假又该按什么比例折成工资呢?

  带薪休假分为两种,一种是国家规定的带薪年休假,一种是公司在国家规定的年休假之外,额外给予的年休假。前者有法律强制性,后者则有公司自由性。前者法律有明确规定,如果一个员工离职时,把不属于自己应休的年假给休了,公司无权要求员工退还给公司,同样也不能折钱还给公司。后者则可以根据公司与员工的劳动合同,或公司自己的规章制度来决定如何做。如果有明确约定或规定要员工还给公司的,按照约定或规定执行。

白领“伤不起”——这些工伤你了解吗?

所谓工伤,是指在工作时间和工作场所内,因工作原因受到的事故伤害。

《工伤保险条例》第十四条规定职工有下列情形之一的,应当认定为工伤:

1、在工作时间和工作场所内,因工作原因受到事故伤害的;

2、工作时间前后在工作场所内,从事与工作有关的预备性或者收尾性工作受到事故伤害的;

3、在工作时间和工作场所内,因履行工作职责受到暴力等意外伤害的;

4、患职业病的;

5、因工外出期间,由于工作原因受到伤害或者发生事故下落不明的;

6、在上下班途中,受到非本人主要责任的交通事故或者城市轨道交通、客运轮渡、火车事故伤害的;

7、法律、行政法规规定应当认定为工伤的其他情形。

这里所指的“工作时间”、“工作场所”和“工作原因”被奉为“三工”原则。所有的事故伤害是否属于工伤,都可以从这个原则去判断。

“工作时间”,是指规定的工作时间或者用人单位规定的工作时间以及加班加点的时间。其中的“因工外出期间”,是指职工受单位指派或根据工作性质要求并经单位授权在公共场所以外从事与职务相关活动的时间。

“工作场所”,是指用人单位能够对从事日常生产经营活动进行有效管理的区域和职工为完成某项特定工作所涉及的单位内或单位以外的相关区域。

“因工作原因受到事故伤害”,是指职工因从事生产经营活动导致的伤害和在工作过程中临时解决必需的生理需要时由于单位设施不安全因素造成的意外伤害。

Q1:在家加班时受伤,算工伤吗?

如果可以证明在家的加班是单位认可的加班行为,受伤时确实在工作,当然可以算成工伤。在家加班的那个时刻,家庭这个范围就是工作场所,如果不给予保护,有违于工伤保障的目的。当然,如果受伤原因与工作无关,比如洗澡的时候摔倒了,则不能认定为工伤。

Q2:去客户公司拜访途中出意外受伤,算工伤吗?

去客户公司拜访途中意外受伤,是一种很典型的工伤情形。《工伤保险条例》特意将“因工外出期间,由于工作原因受到伤害或者发生事故下落不明”的情形定为工伤。

Q3:工作时间被A4纸划伤,或因公司地板太滑,滑倒受伤,算工伤吗?

当然算工伤。不过申请认定工伤也有个效率问题。工伤理赔主要分为医疗费用和级别补助。如果滑倒受伤比较严重的,建议去申请工伤认定;如果受伤不严重,没有什么费用支出,鉴定不出工伤级别,申请的意义不大,白白浪费时间精力。至于被A4纸划伤,可以要求单位给个创可贴,申请工伤就划不来了。

Q4:公司组织团队活动时不慎受伤,算工伤吗?

这个问题很复杂。单位的活动有很多种,如体育运动、会议展览、拓展训练、福利旅游等。通常来说,单位组织的活动应该属于工伤。但是考虑到员工福利旅游是对于员工有益的事,而且爬山涉水比较容易有伤害,如果将此纳入工伤,造成单位不愿意组织福利旅游,这是谁都不愿意看到的后果。所以在认定工伤时,纯粹的福利旅游中受到的伤害,不认定为工伤。在实践中,还出现了很多变种,比如为了鼓励团队凝聚,有些公司提供经费,让员工自己出去玩,这样如何认定是否属于单位组织,还需要个案分析。

Q5:中午在公司食堂吃饭不幸噎着了,算工伤吗?

因为噎着和呛着申请工伤的还真没有见到过。有些人会说,我是在想公司的事或者因公事与同事辩论是噎着和呛着的,这些理由都不是判断工伤与否的根本。吃饭噎着和喝水呛着,不是事故伤害,而是一种人体机能突然丧失作用导致的后果,不能算作工伤。

Q6:颈椎病、鼠标手能否有望归入工伤?

职业病是《工伤保险条例》中明确的一种工伤情形。与一般事故不同,职业病是工作环境缓慢形成的。从现在的职业病目录来看,大多是因工作导致的严重伤害。颈椎病和鼠标手是由于不良的习惯和缺乏运动造成的,不属于工伤的范畴。

白领“病不起”——关于带薪病假和考勤

Q1:员工在试用期内可以享受带薪病假吗?

带薪病假不是法律概念,从通常意义上理解,带薪病假是指在病假期间员工不需要按照国家的规定扣除部分工资,而是可以获得全薪。这是高于法律要求的公司福利,所以试用期内是否可以享受带薪病假,是由公司决定的。
如果理解为法定的病假待遇,那员工在试用期内可以请病假。

Q2:公司章程规定,请带薪病假和事假将会影响到年终绩效考核以及合同续签,这种条例合法吗?

公司内部的年终绩效考核属于公司的规章制度,按照《劳动合同法》第四条的规定,应当经职工代表大会或者全体职工讨论,提出方案和意见,与工会或者职工代表平等协商确定。如果经过了前述程序,那可以将病假和事假的请假情形(其实就是考察出勤率)作为年度考核的指标。至于合同续签,完全是看公司和员工两方面的自由意志,公司将出勤率考虑进去,完全是可以的。