目录

  • 系统信息
  • 内存使用情况
  • 硬盘使用情况
  • 进程管理
  • 网络通信
  • 防火墙设置
  • 服务管理
  • 开机自启
  • 文件、目录管理
    • 查找命令所在的文件、目录
    • 文件、目录的权限
    • 链接
  • 以root身份执行指令
  • 执行jar

系统信息

#cpu
cat /proc/cpuinfo  #详细信息
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l  #物理cpu个数
cat /proc/cpuinfo |grep "processor"|wc -l  #逻辑cpu个数#查看各进程的信息,按 q 退出
top#操作系统
cat /etc/centos-release  #CentOS版本
uname -r  #内核版本#主机名
hostname  #查看主机名。修改主机名:将 /etc/hostname、/etc/hosts中的原主机名改为新主机名即可#查看ip配置
ifconfig#环境变量,也可以在 /etc/profile 中查看
echo $JAVA_HOME  # $变量名
echo $PATH | grep jdk#终端
clear #往下翻开新的一页,往上滑仍然可以看到之前的内容
reset  #清屏,速度略慢#关机、重启
shutdown  #关机
reboot  #重启

内存使用情况

#查看内存使用情况
free  #默认单位KB
free -m   #以MB为单位
free -h  #以上2种都不带单位,只显示数值,-h是友好显示,会带上单位#清理内存缓存#清理页面缓存 pagecache
sync;echo 1 > /proc/sys/vm/drop_caches    或者   sync;sysctl -w vm.drop_caches=1#清理目录缓存 dentries、inodes
sync;echo 2 > /proc/sys/vm/drop_caches   或者   sync;sysctl -w vm.drop_caches=2#清理页面缓存、目录缓存,即等同于上面2个
sync;echo 3 > /proc/sys/vm/drop_caches   或者   sync;sysctl -w vm.drop_caches=3

硬盘使用情况

#查看硬盘使用情况
df  #默认单位KB
df -h  #友好显示,带单位#查看当前目录下的子孙文件|目录的大小
#max-depth指定深度。默认不带单位,-h是友好显示 带单位
du --max-depth=2 -h

遇到过的案例

  • 测试服验证码图片生成失败,之前一直是正常的
  • 查看日志发现这台机器上的服务已经连续几小时没输出过日志了
  • 排查到错误信息"设备上没有空间"
  • 最大可能是没控制好日志输出配置,输出大量的日志占满硬盘
  • 切换到日志存储目录,du --max-depth=2 -h 查看文件大小,2个大服务的日志占了30G,其余小服务的日志占了5G
  • rm -rf 清理日志,重启应用,恢复正常

不管是公司的服务器还是数据库,删除数据时要慎重,尤其是 rm -rf 这种 强制删除+递归删除 的高危操作,最好让组长来。

进程管理

#查看进程
ps -ef  #查看所有进程的信息
ps -ef | grep tomcat  #查找指定进程
#第一列是运行该进程的账户,第二列是pid,pid唯一标识一个进程,但并不是端口号#结束|杀死进程
kill pid  #默认为-15,只是给该程序发送一个终止信号,由程序自己决定如何处理,并不一定会终止进程
kill -9 pid  #强制杀死进程,进程立刻结束#kill -9可能会留下一些不完整的文件、状态,从而影响程序的再次启动
#在使用kill -9前,尽量先使用kill -15,给进程一个清理善后的机会

网络通信

#查看网络配置(网卡信息、ip配置)的2种方式
ifconfig
ip a#ping主机,如果不用-c指定ping的次数,会一直ping
ping -c 4 192.168.1.1#查看端口信息,可用grep过滤出指定端口的信息
netstat -nltp
netstat -nltp | grep 8080
# -n  显示具体的ip、端口号
# -l  只列出正在监听的端口,l即listening
# -t  列出tcp协议的ip、端口号,t即tcp
# -u  列出udp协议的ip、端口号,u即udp
# -p  列出使用此端口的程序,p即programs#访问url,可指定请求方式、请求参数,此处不再一一介绍
#有时外界不能访问应用,可在服务器用curl看本地能否访问,以确定是应用本身原因,还是网关(路由配置|拦截器)、代理等外部原因
curl localhost:9000/xxx/xxx

防火墙设置

firewall-cmd --state  #查看防火墙状态
firewall-cmd --reload  #重新加载防火墙配置#防火墙服务,服务名是fierwalld
service firewalld start  #开启防火墙,外部只能访问防火墙开放的端口
service firewalld stop  #关闭,外部可访问所有端口
service firewalld restart  #重启#开启端口。--permanent表示永久有效,不设置此参数,重启Linux或防火墙就失效
firewall-cmd --add-port=8080/tcp --zone=public --permanent  #开启端口
firewall-cmd --add-port=7500-7600/tcp --zone=public --permanent  #开启7500~7600上的所有端口#把add换成remove即关闭端口,开启、关闭端口都要重启防火墙或重新加载防火墙配置才会生效firewall-cmd --list-ports  #列出所有开启的端口
firewall-cmd --query-port=8080/tcp  #查询某个端口是否开启

使用云服务器,或者机房设置了访问策略的,firewall开放端口后,还需要在安全组中开放该端口,外界才能访问。

一般只开放mysql、redis、rabbitmq之类的服务器端口,对于项目应用使用端口,一般不直接开放,而是使用nginx代理网关,在网关处设置应用的路由规则。

服务管理

服务是一种特殊的程序。服务名可以缺省.service,比如 abrtd.service <=> abrtd

#systemctl系列
systemctl list-units  #查看所有正在运行的服务
systemctl list-unit-files  #查看所有服务的开机启动状态(是否允许开机启动)systemctl enable 服务名    #开机启动
systemctl disable 服务名   #禁止开机启动systemctl status 服务名  #查看状态
systemctl reload 服务名  #重新加载该服务(的配置)systemctl start 服务名    #启动服务
systemctl stop 服务名  #关闭服务
systemctl restart 服务名  #重启服务
#service系列,只有5个命令status,reload,start, stop, restart
service 服务名 status
service 服务名 reload
service 服务名 start
service 服务名 stop
service 服务名 restart

开机自启

1、在rc.local中添加开机要执行的命令

vim /etc/rc.d/rc.local

touch那句代码是自带的,在touch下面写开机要执行的命令

touch /var/lock/subsys/local#执行此文件时无法引用环境变量,如果要用到环境变量,只能现配
#eg. tomcat、es都需要配置JAVA_HOME或者JRE_HOME
export JAVA_HOME=/usr/local/jdk#启动tomcat、nginx
/usr/local/tomcat/bin/startup.sh
/usr/local/nginx/sbin/nginx#如果要切换用户来执行某些命令,eg. 要以非root账户启动es,不能su 用户名来切换
#- 后面是用户名,-c后面是要执行的命令,有多条命令时 && 分隔
su - chy -c "/usr/local/1.sh && /usr/local/2.sh"

可以把命令写在一个单独的shell脚本中,然后在rc.local中执行这个脚本

#在rc.local中切换到非root账户,执行boot.sh脚本
su - chy -c "/usr/local/boot.sh"
#在boot.sh中启动es、kibana
/usr/local/1.sh &
/usr/local/2.sh &

有时候需要加&,比如启动1.sh后会一直阻塞、等待处理客户端的请求,无法继续执行后面的命令,这就需要给1.sh加&,让它后台启动,操作系统继续执行后面的命令。

2、要具有rc.local的可执行权限x

ls -l /etc/rc.d/rc.local  #查看权限chmod +x /etc/rc.d/rc.local  #如果没有x权限就加上
#chmod 764 /etc/rc.d/rc.local

3、如果配置未生效,可从系统启动日志 /var/log/messages 中找原因

tail -200 /var/log/messages | grep rc.local  #查看最后200行,查找rc.local的信息

文件、目录管理

查找命令所在的文件、目录

#查找指定命令的路径,只能是命令。which常用于docker运行容器后,docker exec进入容器,然后which查看安装目录
which nginx#查找指定目录、文件的路径
whereis nginx

名称都要写全,比如写成ngin则查找不到。

文件、目录的权限

默认权限

  • 文件:文件默认没有可执行权限,默认为666,也就是 -rw-rw-rw-
  • 目录:目录必须要能够进入,也就是必须拥有可执行权限,默认为 777 ,也就是 drwxrwxrwx

文件名存储在一个文件所在的目录中,并非存储在文件的内容中,因此拥有文件的 w 权限并不能对文件名进行修改。

目录存储文件列表,目录的权限也就是对其文件列表的权限

  • r权限表示可以读取文件列表
  • w权限表示可以修改文件列表,即创建、删除文件,修改文件名
  • x权限可以让该目录成为工作目录。x 权限是 r 和 w 权限的基础,如果不能使一个目录成为工作目录,也就没办法读取文件列表以及对文件列表进行修改

链接

在文件系统中,一个文件包括2部分

  • inode:记录文件本身的属性,用于检索文件、维护文件属性
  • 文件内容:文件本身存储的数据

操作文件时,会在文件树中检索找到文件对应的inode节点,根据inode节点找到文件内容。

链接分为2种

1、实体链接 | 硬链接

  • 创建一个inode,指向一个已存在的文件内容
  • 删除文件时,如果还有其它的inode指向该文件内容,则只删除目标文件的当前inode节点,不删除文件内容,依然可以根据其它inode节点来操作文件内容。(删除当前inode节点后,如果引用文件内容的inode数量仍然>0,则不删除对应的文件内容)
  • 只能给文件创建实体链接,不能给目录创建实体链接

2、符号链接 | 软链接

  • 相当于win的快捷方式
#创建链接,链接保存为文件形式
ln [-sf] 源文件|目录 链接# eg.在当前目录下建立一个start.sh的软链接,指向/xxx/xxx/start.sh
ln -s /xxx/xxx/start.sh start.sh
  • -s :默认创建的是实体链接,加 -s 表示创建符号链接
  • -f :默认链接已存在时不做任何操作,-f表示链接已存在时直接覆盖

以root身份执行指令

sudo 允许普通用户以 root 身份执行指令,但只有在配置文件 /etc/sudoers 中添加的用户才能使用此指令。

执行jar

#Ctrl+C或关闭xshell之类的终端连接,会终止程序运行
java -jar xxx.jar# & 后台运行,Ctrl+C不会终止程序运行,但关闭xshell连接会终止程序运行
# & 可用于所有程序,不仅仅是jar
java -jar xxx.jar &# nohup 不挂起,Ctrl+C、关闭Xshell连接均不会终止程序运行,要终止程序可以用kill -9
nohup java -jar xxx.jar &#重定向stdout到指定文件中,> >>是linux通用的输出重定向,>是覆盖,>>是追加,建议正式服用 >>
#如果不指定,nohup默认重定向stdout到jar同级目录下的nohup.out文件中
nohup java -jar xxx.jar > xxx.log &
#如果不想输出任何日志,可以重定向到/dev/null
nohup java -jar xxx.jar > /dev/null &#2指代stderr 标准错误流,1指代stdout 标准输出流,&表示等同
#2>&1即stderr使用与stdout相同的重定向设置
nohup java -jar xxx.jar > xxx.log 2>&1 &

最后一种全面,用得较多。

如果java -jar启动应用时报错

Error: Unable to access jarfile xxx.jar

一般不是权限问题,常见的原因是jar包路径写错了、没有指定的jar包。

Linux 系统管理命令相关推荐

  1. 基本BASH SHELL脚本命令——Linux系统管理命令-检测程序、检测磁盘空间

    详细介绍Linux系统管理命令,演示如何通过命令行命令来探查Linux系统的内部信息 一.监测程序 Linux系统管理员面临的最复杂的任务之一就是跟踪运行在系统中的程序--尤其是现在,图形化桌面集成了 ...

  2. linux 系统管理命令整理

    10个超实用的CentOS网络和监控命令 网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute ...

  3. gdbstub中的基本命令_程序员应该知道的 20 个 Linux 系统管理命令

    在充满新工具和多样化开发环境的世界中,任何开发人员或工程师都必须学习一些基本的系统管理命令,以下这 20 个基本的系统管理命令可以帮助开发人员排除故障.优化应用程序.提供重要的系统信息等,是每个程序员 ...

  4. Linux 系统管理命令集合

    运行环境是Ubuntu  16.0.4,联网安装相关命令,同时记录常见命令fdisk.df.top.free等,命令格式的详细参数等,可以参考help或者man. 一.查看硬盘或者文件信息 1.fdi ...

  5. Linux系统管理命令大全

    1.adduser命令 Linux adduser命令用于新增使用者帐号或更新预设的使用者资料. adduser 与 useradd 指令为同一指令(经由符号连结 symbolic link). 使用 ...

  6. linux系统管理命令使用,Linux系统管理使用之基本命令(1)

    基本命令 1.Linux的基本原则: 1.由目的单一的小程序组成:组合小程序完成复杂任务: 2.一切皆文件: 3.尽量避免捕获用户接口:(尽量不和用户进行交互,就是一个程序一但开始运行,就不需要用户进 ...

  7. linux系统管理实验报告总结_Linux系统:常用Linux系统管理命令总结

    一.目录指令 1.创建目录:make directory mkdir 目录名称 //mkdir spring,创建一个spring文件夹 mkdir -p file/file/file //递归创建多 ...

  8. Linux系统:常用Linux系统管理命令总结

    目录指令 1.创建目录make directory mkdir 目录名称 //mkdir spring,创建一个spring文件夹 mkdir -p file/file/file //递归创建多级别关 ...

  9. linux系统管理命令使用,Linux系统管理命令使用说明

    shutdown命令 shutdown命令可以安全地关闭或重启linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告信息.该命令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从 ...

  10. L84.linux命令每日一练 -- 第11章 Linux系统管理命令 -- rpm和yum

    11.19 rpm:RPM包管理器 11.19.1 命令详解 ​ [命令星级] ★★★★★ ​ [功能说明] ​ rpm命令的全称是Red Hat Package Manager(Red Hat包管理 ...

最新文章

  1. Jboss解决只能通过localhost访问而不能使用IP访问项目的问题
  2. 线程间通讯机制(基础篇)——Handler、Runnable、HandlerThread、AsyncTask的使用
  3. SpringBoot的yml配置文件
  4. Java消息中间件的概述与JMS规范
  5. ubuntu xfce下面两个终端合并为一个终端
  6. 从工作经历和实践理论看工业互联网的发展
  7. ie浏览器模拟器_航空飞机模拟器安卓版下载-航空飞机模拟器游戏下载
  8. 一张纸厚度是多少毫米_一张纸的威力有多大?纸折103次捅破宇宙,理论荒诞却无法反驳...
  9. Qt文档阅读笔记-Qt单元测试中模拟GUI事件
  10. 队列的基本操作c语言代码大全,数据结构――队列(循环队列)的基本操作(实现链队列逐一取出c语言代码)...
  11. java线程池饱和策略_干货:Java几种线程池的分析和使用。
  12. Linux操作系统中GDB工具常见用法(一)
  13. 「06」回归的诱惑:一文读懂线性回归(Python实战篇)
  14. python中数据存入execle、读取excel数据
  15. 雷军:程序员如何成功创业?
  16. 代理ip池的ip是重复利用的吗_爬虫被封怎么办?用Node.js构建一个私人IP代理池...
  17. 雨人系统ORA-01821,时间无法识别
  18. 哪吒之魔童降世视听语言影评_《哪吒之魔童降世》成功的要素与视听语言
  19. 2015~2020年中国房价走势
  20. video 播放视频被x5内核浏览器劫持时的处理记录

热门文章

  1. 黑马程序员顺义校区php_PHP面向对象开发视频教程[黑马程序员]
  2. 闯荡Linux帝国:nginx的创业故事
  3. 关于原生js里报这个错:Cannot read properties of undefined (reading ‘classList‘) at HTMLLIElement.
  4. 推荐系统与知识图谱(2)
  5. 学习ELMo从文本中提取特征的分步NLP指南
  6. linux之bc命令使用详解_【原创】linux命令bc使用详解
  7. 电动汽车充放电最优调度 研究了EV充电和放电的调度优化问题 我们首先制定全局调度优化问题,其中优化充电功率以最小化所有在白天执行充电和放电的EV的总成本
  8. NEW RDSP MODE I (快速幂)
  9. Android 常用图片框架对比
  10. 学会这些,睡觉也能赚大钱