-------------------sudo权限

 

sudo权限的用户即可)登录系统,打开终端运行:
sudo vim /etc/sudoers

 

修改此配置文件,最后一行添加:

hello ALL=(ALL)ALL

注销用户,用户重登录。

 

 

------------------- 加入到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
[root@linuxso.com ~]#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、页面 

 10、删除所有空目录

find /data -type d -empty -exec rm -rf {} \;
 
11、linux下批量删除空文件(大小等于0的文件)的方法
find /data -type f -size 0c -exec rm -rf {} \;
find /data -type f -size 0c|xargs rm –f
 
12、删除五天前的文件
find /data -mtime +5 -type f -exec rm -rf {} \;
 
13、删除两个文件重复的部份,打印其它
cat 1.txt 3.txt |sort |uniq
 
14、攻取远程服务器主机名
echo `ssh $IP cat /etc/sysconfig/network|awk -F = '/HOSTNAME/ {print $2}'`
 
15、实时监控网卡流量(安装iftop)
/usr/local/iftop/sbin/iftop -i eth1 -n