【汇】linux常用命令集合2

 

 

 

------------------- 修改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

 

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

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
[[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、页面

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Linux常用命令)