设为首页 收藏本站
查看: 489|回复: 0

[经验分享] 【汇】linux常用命令集合2

[复制链接]

尚未签到

发表于 2016-2-24 08:29:13 | 显示全部楼层 |阅读模式
  
  
  
  -------------------修改linux系统的时间CST与EDT 
初始时间:2012年 09月 14日 星期五 18:15:33 EDT
[iyunv@test ~]# mv /etc/localtime /etc/localtime.bak
[iyunv@test ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
[iyunv@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
[iyunv@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: 列出当前堆栈中保存的目录列表
  
  
  看例子:
  [iyunv@localhost ~]# pushd /usr/local/sbin/
  /usr/local/sbin ~
  [iyunv@localhost sbin]# dirs
  /usr/local/sbin ~
  [iyunv@localhost sbin]# dirs -p -v
   0  /usr/local/sbin
   1  ~
  [iyunv@localhost sbin]# pushd /usr/share/kde4/apps/kget/
  /usr/share/kde4/apps/kget /usr/local/sbin ~
  [iyunv@localhost kget]# dirs -p -v
   0  /usr/share/kde4/apps/kget
   1  /usr/local/sbin
   2  ~


  说明: dirs的 -p参数可以每行一个目录的形式显示堆栈中的目录列表
              -v参数可以在目录前加上编号
              注意:有 -v时,不添加 -p也可以每行一个目录的形式显示
  说明之二:我们可以看到:最近压入堆栈的目录位于最上面

2,如何在最近的两个目录之间切换?

   在最近的两个目录之间切换:用pushd不加参数即可

   [iyunv@localhost kget]# pushd /boot/grub/
   /boot/grub /usr/share/kde4/apps/kget /usr/local/sbin ~
   [iyunv@localhost grub]# dirs -v
   0  /boot/grub
   1  /usr/share/kde4/apps/kget
   2  /usr/local/sbin
   3  ~
   [iyunv@localhost grub]# pushd
   /usr/share/kde4/apps/kget /boot/grub /usr/local/sbin ~
   [iyunv@localhost kget]# dirs -v
   0  /usr/share/kde4/apps/kget
   1  /boot/grub
   2  /usr/local/sbin
   3  ~
   [iyunv@localhost kget]# pushd
   /boot/grub /usr/share/kde4/apps/kget /usr/local/sbin ~
   [iyunv@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个开始数起

   看例子:

   [iyunv@localhost grub]# dirs -v
   0  /boot/grub
   1  /usr/share/kde4/apps/kget
   2  /usr/local/sbin
   3  ~
   [iyunv@localhost grub]# pushd +2
   /usr/local/sbin ~ /boot/grub /usr/share/kde4/apps/kget
   [iyunv@localhost sbin]# dirs -v
   0  /usr/local/sbin
   1  ~
   2  /boot/grub
   3  /usr/share/kde4/apps/kget

   4,如何把目录从堆栈中删除?
   用popd即可

   看例子:
   [iyunv@localhost sbin]# dirs -v
   0  /usr/local/sbin
   1  ~
   2  /boot/grub
   3  /usr/share/kde4/apps/kget
   [iyunv@localhost sbin]# popd
   ~ /boot/grub /usr/share/kde4/apps/kget
   [iyunv@localhost ~]# dirs -v
   0  ~
   1  /boot/grub
   2  /usr/share/kde4/apps/kget

   [iyunv@localhost ~]# popd +1
    ~ /usr/share/kde4/apps/kget
   [iyunv@localhost ~]# dirs -v
   0  ~
   1  /usr/share/kde4/apps/kget

   说明:可以看到popd不加参数的运行情况:popd把堆栈顶端的目录从堆栈中删除,并切换于位于新的顶端的目录
   说明之二: popd 加有参数 +n时,n是堆栈中的第n个目录,表示把堆栈中第n个目录从堆栈中删除


四,多学一点知识

   1,pushd和popd都可以只影响堆栈而不切换目录,用 -n参数即可
   
    看例子:
    [iyunv@localhost ~]# dirs -v
    0  ~
    1  /usr/share/kde4/apps/kget
    [iyunv@localhost ~]# pushd -n /boot/grub
    ~ /boot/grub /usr/share/kde4/apps/kget
    [iyunv@localhost ~]# dirs -v
     0  ~
     1  /boot/grub
     2  /usr/share/kde4/apps/kget

    2, dirs可以清空目录堆栈,用 -c参数即可

     看例子:
     [iyunv@localhost ~]# dirs -v
     0  ~
     1  /boot/grub
     2  /usr/share/kde4/apps/kget
     [iyunv@localhost ~]# dirs -c
     [iyunv@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、页面

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-181998-1-1.html 上篇帖子: Linux网络驱动源码分析(二) 下篇帖子: 基于网络的Linux自动化安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表