Linux服务器常用命令

本文列举了一些场景的基础命令、基本用法。各场景还有更优的命令或工具,精力有限未整理,如有补充欢迎留言。

目录

基础

目录与文件

磁盘

进程

账号

网络

系统服务

其他场景



基础

描述 命令 示例/详解
登录后切换账户 su  su root
退出 exit  
取消 ctrl+c  
退出命令输出流 q 部分命令提供(如man、top)
根路径 / cd /
当前登录用户默认路径 ~ cd ~
隐式文件前缀 . cat ~/.bash_history
目录或文件名自动补全 Tab键  
查找命令 where或which  
命令解释 man 具体命令 man cat
查看时间 date  
查看历史指令 cat ~/.bash_history 一般可用于快速重放以前输入的指令,也可用于嗅探系统关键路径和服务
系统环境变量 /etc/profile 修改后要即时生效可以执行source /etc/profile
常见指令参数

-a -l -r -h

全部:-a,列表:-l,数量统计:-c,目录递归:-r, 自动转换空间单位:-h,显示进度:-v
系统关键路径 /bin; /sbin; /proc; /etc; ~/;  
输出/打印文本 echo echo "test"
统计行数 {内容} | wc -l cat /etc/passwd | wc -l
检索

1. grep expression file

2. {内容} | grep expression

(expression为正则匹配表达式)

 

目录与文件

切换路径:cd directory

创建目录:mkdir 目录名,实用参数(-p),常见于嵌套创建多级、多分支目录,比如mkdir -p test/tes/t{1,2,34}

创建软连接:ln -s [src] [name]

查看当前路径:pwd

查看当前路径下文件:ls,ls -l(一般会声明别名ll=ls -l)

 

创建文件:touch file

编辑文件:vi file或vim工具,保存操作为按“Esc”后输入 “:”,确认保存输入“w”“q”回车,不保存直接退出输入“q”“!”回车

查看文件:more file或less file,具体可参考 http://www.cnblogs.com/peida/archive/2012/11/02/2750588.html

查看文件尾部:tail [f] file,可用参数-f,-100

查看文件头部:head,类似与tail

查看及链接文件:cat file1, file2 ...

写入文件:echo $text >> $file(>> 表示追加,>则是覆盖写入)

  • 引申使用场景

    • tomcat等容器运行中,清理日志;一般因为应用程序保持着句柄,删掉文件是不会重建文件的;

      • cat /dev/null > /var/log/httpd/access.log

      • 其他方案

        • $ : > filename

        • $ > filename

        • $ echo "" > filename

        • $ echo > filename

      • 上述方案执行后,文件大小是不一样的。

        • 1和2 两种方式,是0kb

        • 3和4 两种方式,是1kb;使用grep会提醒文件变成二进制文件,应该是文件头丢失

    • 日志自动切割、清理:https://blog.csdn.net/qq_29269907/article/details/84328269

输出同时写入文件:echo $text | tee -a $file

压缩成gz:tar zcvf source target

解压gz:tar zxvf source

 

上传文件到服务器:rz

从服务器下载文件:sz source

  • 如果提示没有命令,可执行`yum -y install lrzsz`安装

向其他服务器发送文件:scp source [email protected]:directory(file)

从其他服务器获取文件:scp [-P 端口号] [email protected]:directory(file) local_directory

 

磁盘

磁盘占用:df,du

当前路径磁盘占用:du -h|grep "\./[^/]*$" 

磁盘挂载:Linux磁盘挂载方法

 

进程

系统资源、进程堆栈查看:top

  • 查看指定进程:top -Hp PID

  • 只查看一次:top -n1

  • 设置top视图

    • 输入top后,输入f可调整视图; 上下方向键切换列,右方向选中、然后可以上下移动、移动结束后按回车或左方向键提交变化; d或者空格用于切换是否显示,s用于设置为拍序列; q或esc退出视图编辑

    • Linux服务器常用命令

搜索进程:ps -ef |grep 关键字 或ps aux | grep 关键字

查看进程路径:ls -l /proc/$PID

查看进程下所有线程:pstack pid

查看进程的线程资源占用情况:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid或top -Hp PID

dump当前jvm堆栈(TID为16进制):jstack PID|grep TID -a30

进程持有文件句柄数:usr/sbin/lsof -n| grep 18901| awk '{print $9}'|sort|uniq -c|sort -nr|more

查看某端口使用情况:netstat -nap|grep 11211|awk '{print $6}'|sort|uniq -c|sort -nr|more

 

账号

添加账户:useradd -d [path] -m [username]

修改自己或root修改其他用户密码:passwd [userName]

更改文件所有者 chown [-R] ownerName:groupName file或directory

更改文件权限 chmod 777 filename 二进制权限标记100读10写1执行,所以777分别代表所有者、所属用户组、其他用户权限;给定777表示授予所有用户全部权限

屏蔽文件权限 umask 000 filename 给定000表示授予全部权限

禁止用户登录:chsh -s $shell $user

 

网络

查看IP:/sbin/ifconfig

查看安装的工具或服务:rpm -qa |grep $service_name

卸载工具或服务:rpm -e $service_name

查看端口使用情况:netstat –apn 或 netstat -lpnut

开启端口:iptables -A INPUT -ptcp --dport 端口号 -j ACCEPT

关闭端口:iptables -A INPUT -p tcp --dport $PORT -j DROP、

               iptables -A OUTPUT -p tcp --dport $PORT -j DROP

               或关闭相应的应用程序

服务器访问网址:curl+url或wget+url;curl的参数较多

 

系统服务

查看开启启动服务:

  • service --status-all

  • systemctl -a

设置开机启动服务:

  • /etc/rc.local(编辑“/etc/rc.local”,把启动程序的shell命令输入进去即可,注意要写绝对路径; 默认root账号启动。使用其他账号启动:su - admin -c '/bin/sh target_shell' )

  • 设置crontab,通过定时模拟开机启动

  • chkconfig

    • 将启动文件cp到 /etc/init.d/或者/etc/rc.d/init.d/(前者是后者的软连接)下

      • vim 启动文件,文件前面务必添加如下三行代码,否侧会提示chkconfig不支持

      • #!/bin/sh 告诉系统使用的shell,所以的shell脚本都是这样

      • #chkconfig: 35 20 80 分别代表运行级别,启动优先权,关闭优先权,此行代码必

      • #description: http server(自己随便发挥)//两行都注释掉!!!,此行代码必

      • chkconfig --add 脚本文件名 操作后就已经添加了

    • 其他参考资料:https://www.cnblogs.com/shengulong/p/6763688.html

  • (未测试过)将写好的脚本(.sh文件)放到目录 /etc/profile.d/ 下,系统启动后就会自动执行该目录下的所有shell脚本

设置定时任务:

  • crontab -e 分钟 小时 天 月 星期 shell命令所在位置,可以使用通配符表示不限制,可以使用,隔开多个时间点,重启该服务service cron reload

  • 编辑/etc/crontab文件

 

常用工具:vim, lsof, 

查看操作系统 cat /proc/version

 

其他场景


查看安装的版本:cat /etc/shells或者ls /bin/*sh

自定义命令:alias,取消自定义命令unalias

转化进制d->h:printf "%x\n" 30834

输出字符MD5值:echo -n "123456" | md5sum| awk '{print $1}'

 

替换: sed -i "s#$old#$new#g" $target

trim:

     sub(/^[[:blank:]]*/,"",变量)  是去掉变量左边的空白符

     sub(/[[:blank:]]*$/,"",变量) 是去掉变量右边的空白符

     gsub(/[[:blank:]]*/,"",变量) 是去掉变量中所有的空白符