------------------- 修改linux系统的时间CST与EDT
初始时间:2012年 09月 14日 星期五 18:15:33 EDT
[root@test ~]# mv /etc/localtime /etc/localtime.bak
[root@test ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@test ~]# date
修改后的时间:
2012年 09月 15日 星期六 18:25:00 CST
-------------------sudo权限
sudo权限的用户即可)登录系统,打开终端运行:
sudo vim /etc/sudoers
修改此配置文件,最后一行添加:
注销用户,用户重登录。
------------------- 加入到PATH
export PATH=$PATH:/usr/local/mysql/bin
-------------------- history查看用户操作记录及时间
#vim /etc/profile 在文件的末尾加上如下代码:
export HISTTIMEFORMAT="%F %T `whoami` "
保存后,再执行 source /etc/profile 使配置生效。
再执行 history 命令,显示出了执行命令的时间和对应用户。
---------------------linux cp命令如何拷贝整个目录下所有文件
如何在Linux下拷贝一个目录呢?这好像是再简单不过的问题了。
比如要把/home/usera拷贝到/mnt/temp,首先想到的就是
cp -R /home/usera/* /mnt/temp
但是这样有一个问题,/home/usera下的隐藏文件都不会被拷贝,子目录下的隐藏文件倒是会的。
那如何才是正确的方法呢?有人说用-a选项,有人说用find加管道。
其实没这么复杂,Google了之后,学了一招。原来只有用“.”当前目录代替“*”就好了。
\cp -R /home/usera/. /mnt/temp
\cp -rf /home/usera/. /mnt/temp
--------------------- 问一个很笨的问题,请问如何删除一个中文的目录??
ls -i
然后按照inode去删除
rm -rf *AYXX-201205-01*
---------------------- kill killall pkill
kill 命令用于终止进程
例如: kill -9 [PID]
-9表示强迫进程立即停止
通常用ps 查看进程PID ,用kill命令终止进程
killall 通过程序的名字,直接杀死所有进程
killall -p php-fpm
pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉
pkill fpm
批量删除该服务的所有进程号:
ps -ef | grep ejb3 | grep -v grep | awk '{print $2" "$3}' | xargs kill -9 = pkill ejb3
killall -9 httpd 或者 kill -9 `ps aux |grep -i httpd |grep -v grep |awk '{print $2}' ` = kill -9 `pgrep httpd`
还有这个命令 ---------pgrep 也很好用。
ps aux | grep php | awk '{print $2 }' | xargs kill
ps aux|grep 进程名 | awk '{print $2 }' | xargs kill
--------------------- 查看 目录文件 磁盘空间大小
------根目录占用最多/dev/sda1
cd /,然后du -sh *,会列出每个目录的大小,找出占用最大,进入该目录,
再执行du -sh * ,以此类推,就能找到哪个文件占用的多,看是否需要删除
-------查看目录大小 df du
#df -h 查询磁盘信息,以M和G的格式显示
#du -h
#du -sh kushu001/ 查看当前目录下目录的大小,并不想看其他目录以及其子目录
16G kushu001/
#du -s kushu001/
16399552 kushu001/
#du -h .
查看当前目录下所有目录以及子目录的大小(会列出所有的子目录), “.”代表当前目录下。也可以换成一个明确的路径
#du -ah user 会列出每个目录和每个文件
列出user目录及其子目录下所有目录和文件的大小
#fdisk -l
查询磁盘信息
----------------------linux top zombie 僵死进程
# top
top - 14:25:15 up 8:14, 12 users, load average: 0.56, 1.93, 2.51
Tasks: 144 total, 2 running, 141 sleeping, 0 stopped, 1 zombie
Cpu(s): 2.2%us, 1.0%sy, 0.0%ni, 90.0%id, 0.2%wa, 2.7%hi, 4.0%si, 0.0%st
Mem: 3085636k total, 1275820k used, 1809816k free, 194212k buffers
Swap: 2097144k total, 0k used, 2097144k free, 662936k cached
# ps -ef |grep defunct
root 10342 28542 0 14:24 pts/9 00:00:00 grep defunct
root 10985 10980 0 10:50 ? 00:00:00 [sh] <defunct>
##kill子进程无效
# kill -9 10985
# ps -ef |grep defunct
root 10471 28542 0 14:25 pts/9 00:00:00 grep defunct
root 10985 10980 0 10:50 ? 00:00:00 [sh] <defunct>
# ps -ef | grep 10980
root 10348 28542 0 14:24 pts/9 00:00:00 grep 10980
root 10980 1 0 10:50 ? 00:00:00 CROND
root 10985 10980 0 10:50 ? 00:00:00 [sh] <defunct>
smmsp 11019 10980 0 10:50 ? 00:00:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
## kill父进程
# ps -ef |grep defunct
root 10471 28542 0 14:25 pts/9 00:00:00 grep defunct
root 10985 10980 0 10:50 ? 00:00:00 [sh] <defunct>
# kill -9 10980
# ps -ef |grep defun
root 10550 28542 0 14:26 pts/9 00:00:00 grep defun
----------------------alias unalias
命 令: alias
功能说明:设置指令的别名。
语 法:alias[别名]=[指令名称]
补充说明:用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。 alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在/etc/profile或自己的~/.bashrc中设定指令的别名。
还有,如果你想给每一位用户都生效的别名,请把alias la='ls -al' 一行加在/etc/bashrc最后面,bashrc是环境变量的配置文件 /etc/bashrc和~/.bashrc 区别就在于一个是设置给全系统一个是设置给单用户使用.
参 数:若不加任何参数,则列出目前所有的别名设置。 资料来自 www.linuxso.com Linux安全网
CentOS5.6自带的alias定义
取消别名的方法是在命令前加\,比如 \mkdir
[[email protected] ~]#alias
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
有的系统里没有ll这个命令,原因就是没有定义ll='ls -l --color=tty'这个别名
利用alias可以把很长的命令变成任意我们喜欢的简短的
设置和修改alias命令别名格式很简单
alias ll='ls -l --color=tty'
如果想永久生效,就把这条写入到 /etc/bashrc或~/.bashrc
为安装命令apt-get install创建别名:
alias install='sudo apt-get install'
删除:
unalias 命令
----------------------tree
以树状图逐级列出目录的内容命令
命令格式
tree <选项或者是参数> <分区或者是目录>
-a 显示所有文件和目录。
-d 显示目录名称而非内容。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-r 以相反次序排列
-t 用文件和目录的更改时间排序。
-L n 只显示 n 层目录 (n 为数字)
--dirsfirst 目录显示在前文件显示在后
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-D 列出文件或目录的更改时间。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-I 不显示符合范本样式的文件或目录名称。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。
# tree -a
----------------------wc
wc命令用来计算一个文件或者指定的多个文件中的行数,单词数和字符数。如:
wc filename
第一列显示行数,第二列显示单词数,第三列显示字符数。
wc 有四个参数可选,分别是l,c,m,w
wc -l filename 报告行数
wc -c filename 报告字节数
wc -m filename 报告字符数
wc -w filename 报告单词数
-L 打印最长行的长度 wc file -L
ls -l|wc -l 用来统计当前目录下的文件数
$ wc -lcw file1 file2
4 33 file1
7 52 file2
11 11 85 total
---------------------- 切换目录 pushd popd dirs
pushd:切换到作为参数的目录,并把原目录和当前目录压入到一个虚拟的堆栈中
如果不指定参数,则会回到前一个目录,并把堆栈中最近的两个目录作交换
popd: 弹出堆栈中最近的目录
dirs: 列出当前堆栈中保存的目录列表
看例子:
[root@localhost ~]# pushd /usr/local/sbin/
/usr/local/sbin ~
[root@localhost sbin]# dirs
/usr/local/sbin ~
[root@localhost sbin]# dirs -p -v
0 /usr/local/sbin
1 ~
[root@localhost sbin]# pushd /usr/share/kde4/apps/kget/
/usr/share/kde4/apps/kget /usr/local/sbin ~
[root@localhost kget]# dirs -p -v
0 /usr/share/kde4/apps/kget
1 /usr/local/sbin
2 ~
说明: dirs的 -p参数可以每行一个目录的形式显示堆栈中的目录列表
-v参数可以在目录前加上编号
注意:有 -v时,不添加 -p也可以每行一个目录的形式显示
说明之二:我们可以看到:最近压入堆栈的目录位于最上面
2,如何在最近的两个目录之间切换?
在最近的两个目录之间切换:用pushd不加参数即可
[root@localhost kget]# pushd /boot/grub/
/boot/grub /usr/share/kde4/apps/kget /usr/local/sbin ~
[root@localhost grub]# dirs -v
0 /boot/grub
1 /usr/share/kde4/apps/kget
2 /usr/local/sbin
3 ~
[root@localhost grub]# pushd
/usr/share/kde4/apps/kget /boot/grub /usr/local/sbin ~
[root@localhost kget]# dirs -v
0 /usr/share/kde4/apps/kget
1 /boot/grub
2 /usr/local/sbin
3 ~
[root@localhost kget]# pushd
/boot/grub /usr/share/kde4/apps/kget /usr/local/sbin ~
[root@localhost grub]# dirs -v
0 /boot/grub
1 /usr/share/kde4/apps/kget
2 /usr/local/sbin
3 ~
说明:可以看到,用pushd不加参数在最近的两个目录之间切换时,
当前目录总是位于堆栈的最上面
3,如何在多个目录之间切换?
用 pushd +n即可
说明:
n是一个数字,有此参数时,是切换到堆栈中的第n个目录,并把此目录以堆栈循环的方式推到堆栈的顶部
需要注意: 堆栈从第0个开始数起
看例子:
[root@localhost grub]# dirs -v
0 /boot/grub
1 /usr/share/kde4/apps/kget
2 /usr/local/sbin
3 ~
[root@localhost grub]# pushd +2
/usr/local/sbin ~ /boot/grub /usr/share/kde4/apps/kget
[root@localhost sbin]# dirs -v
0 /usr/local/sbin
1 ~
2 /boot/grub
3 /usr/share/kde4/apps/kget
4,如何把目录从堆栈中删除?
用popd即可
看例子:
[root@localhost sbin]# dirs -v
0 /usr/local/sbin
1 ~
2 /boot/grub
3 /usr/share/kde4/apps/kget
[root@localhost sbin]# popd
~ /boot/grub /usr/share/kde4/apps/kget
[root@localhost ~]# dirs -v
0 ~
1 /boot/grub
2 /usr/share/kde4/apps/kget
[root@localhost ~]# popd +1
~ /usr/share/kde4/apps/kget
[root@localhost ~]# dirs -v
0 ~
1 /usr/share/kde4/apps/kget
说明:可以看到popd不加参数的运行情况:popd把堆栈顶端的目录从堆栈中删除,并切换于位于新的顶端的目录
说明之二: popd 加有参数 +n时,n是堆栈中的第n个目录,表示把堆栈中第n个目录从堆栈中删除
四,多学一点知识
1,pushd和popd都可以只影响堆栈而不切换目录,用 -n参数即可
看例子:
[root@localhost ~]# dirs -v
0 ~
1 /usr/share/kde4/apps/kget
[root@localhost ~]# pushd -n /boot/grub
~ /boot/grub /usr/share/kde4/apps/kget
[root@localhost ~]# dirs -v
0 ~
1 /boot/grub
2 /usr/share/kde4/apps/kget
2, dirs可以清空目录堆栈,用 -c参数即可
看例子:
[root@localhost ~]# dirs -v
0 ~
1 /boot/grub
2 /usr/share/kde4/apps/kget
[root@localhost ~]# dirs -c
[root@localhost ~]# dirs -v
0 ~
说明: 位于堆栈顶部的目录是当前目录,它不能被pop出去的
------------------ ls 排序
ls -l -t为按时间排序显示,默认为新的排在前面,可用下面的命令更改升降序:
ls -lrt 最新的文件排在后面(升序)
ls -lnt 最新的文件排在前面(降序)
-------------------- diff
diff -options oldfile/dir newfile/dir
常用的选项有:
-r 比较目录
-u 将差异的文件输出到文件中
$diff -ru file_one file_two > file_diff.diff
将file_one和file_two的区别输出到file_diff.diff文件中
--------------------- 备份数据库
cp -a /data/mysql/mysql_3302 /data/mysql/mysql_3302_back20120504 &
#查看是否备份完
jobs
#确认备份大小
du -sh /data/mysql/*
--------------------- 系统相关:
1.cat /proc/cpuinfo ##查看CPU的核数
2.cat /proc/version ##查看linux版本
3.ulimit -n ##显示当前文件描述符
4.ulimit -HSn 65536 ##修改当前用户环境下的文件描述符为65536
5.getconf LONG_BIT ##查看linux系统的位数,是32或还是64, 较实用
6.lsof ##列出当前系统打开文件, 特实用,可grep出你的进程或软件正在操作什么文件
7.ps -eLf | grep java | wc -l ##查看java的线程数,如果是单个java容器,就指这个容器的,多个指所有的总数
8.cat /etc/resolv.conf ##DNS域名解析的配置文件, 内部DNS用得多的系统经常使用
9.cat /etc/hosts ##查看host配置
--------------------- 连接状态:
(1). 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]}' ##查看各tcp连接各状态的连接情况
(2). netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n30 ##查找80端口请求连接量最大的前30个IP(常用于查找攻来源,爬虫分析)
(3). netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n10 ##查找time_wait状态连接量前10
(4). netstat -nat -n | awk -F: '/tcp/{a[$(NF-1)]++}END{for(i in a)if(a>5)print i}' ##查询同时连接量大于5个连接的端口和IP
--------------------- 网站日志分析(apache或nginx):
1). cat access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -10 #取10,按量的倒序排 或cat access.log|awk '{counts[$(1)]+=1}; END {for(url in counts) print counts[url], url}'
##获得访问次数前10位的ip地址,具体print出来的第几项,还需要看log_format,那项是$remote_addr
2).cat access.log |awk '{print $10}'|sort|uniq -c|sort -nr|head -10 ##访问次数最多的文件或页面,取前10 还需要看log_format,第10项为页面
3).cat access.log |awk '{print $1}'|grep 'article.html' sort|uniq -c|sort -nr|head -10 ##查询文章页访问次数最多的前个IP
4).awk '($9 ~/404/)' access.log | awk '{print $9,$10}' | sort ##统计404的情况
5).cat access.log |awk '($NF > 10){print $NF " "$1" "$10 }'|sort -nr|head -30 ##查出前30个访问时间超过10秒的请求, 包括请求时间、IP、页面