一、Linux系统状态管理
1. 查看系统信息
1)日期时间
- date命令
- 用途: 查看当前系统日期和时间。
- 格式: date 命令可以输出当前时间,但格式可能不符合习惯,可以通过指定格式来输出,例如 date +"%Y-%m-%d %H:%M:%S"。
- 常用格式符:
- %Y: 四位数的年份
- %m: 两位数的月份
- %d: 两位数的日期
- %H: 两位数的小时(24小时制)
- %M: 两位数的分钟
- %S: 两位数的秒
- 例子:
- date +"%Y-%m-%d" 输出如 2009-12-07
- date -d "1 day ago" +"%Y-%m-%d" 输出昨天的日期
- cal命令
- 用途: 查看日历。
- 默认行为: 不带参数时,显示当前月份的日历。
- 参数:
- -y: 显示整年的日历
- -m: 显示星期一为一周的第一天(默认是星期日)
- 例子:
- cal 显示当前月日历
- cal -y 显示当前年份的日历
- cal -m 显示以星期一为开始的当前月日历
- uptime命令
- 用途: 查看系统已经运行的时间(开机时间)以及当前登录的用户数等信息。
- 输出内容: 包括系统运行时间、登录用户数、系统负载平均值等。
- 例子:
- uptime 输出如 05:09:44 up 4:57, 3 users, load average: 0.02, 0.03
2)系统版本
- cat /etc/redhat-release命令
- 用途: 查看Red Hat系列Linux发行版本的具体信息。
- 输出内容: 发行版本的具体版本号,例如 CentOS Linux release 7.3.1611 (Core)。
- uname -a命令
- 用途: 显示系统详细信息,包括内核版本等。
- 输出内容: 内核名称、主机名、内核版本、发行版本等信息。
- 重要性: 内核版本信息对于判断系统是否存在漏洞、是否需要打补丁等安全相关操作至关重要。
- cat /proc/version命令
- 用途: 查看Linux内核版本及相关信息。
- 输出内容: 包括内核版本、编译器版本等详细信息。
- 补充信息: 除了内核版本,还可能包含GCC版本等编译环境信息。
2. 进程管理
1)程序、进程、服务
- 程序的概念
- 程序定义: 程序是一种静态的描述,是代码的集合或操作系统指令的集合,如软件、应用等。
- 例子: Linux服务器上的my secret程序、Windows电脑上的迅雷程序、微信程序等。
- 进程的概念
- 进程定义: 进程是程序运行起来的状态,具有生命周期,占用系统资源,拥有自己的内存空间地址。
- 与程序的区别: 程序是静态的,进程是动态的。一个程序可以运行出多个进程。
- 例子: 在Windows中通过bat脚本运行多个微信实例。
- 服务的概念
- 服务定义: 服务是注册在操作系统中的程序,具有特定的启动类型(自动、手动、禁用等)。
- 注册好处: 服务可以设置为开机自启,方便管理。
- 例子: Windows中的QQ音乐服务、MySQL数据库服务、PHP study服务等。
- 服务与进程的区别
- 区别核心: 服务是注册在操作系统中的,而进程是程序运行起来的状态。
- 管理方式: 服务可以通过服务名来管理,如启动、停止等,而进程则通过进程ID(PID)来管理。
- 服务的管理
- 启动服务: 在Windows中,可以使用net start 服务名命令来启动服务,但通常需要管理员权限。
- 查看服务状态: 通过服务管理界面或命令行工具查看服务的状态、启动类型等。
- 修改启动类型: 可以在服务属性中修改服务的启动类型,如设置为自动、手动或禁用。
- Linux中的服务查看
- 查看命令: 使用systemctl list-unit-files命令查看Linux中的所有服务。
- 过滤查看: 通过管道符|和grep命令过滤查看特定服务,如systemctl list-unit-files | grep mysql。
- 服务文件: 服务的相关信息通常存储在/etc/services文件中,可以通过查看该文件了解服务的端口等信息。
- 示例: 查看MySQL服务,发现其已注册并设置为开机自启,同时可以在/etc/services文件中查看其使用的端口(如3306端口)。
2)运行程序
- 前台运行
- 前台运行: 在Linux系统中,前台运行程序意味着程序会在当前终端中执行,并且会输出日志信息。如果按下Ctrl+C,程序会被终止,日志输出也会中断。
- 示例: 启动Redis服务器时,如果直接执行启动命令,Redis服务器会在前台运行,日志信息会不断滚动显示。
- 后台运行
- 后台运行: 为了避免前台运行带来的问题(如日志滚动和程序易被中断),可以使用后台运行方式。在命令前加上nohup,并在命令末尾加上&符号,即可实现后台运行。
- 日志输出: 后台运行的程序日志会输出到nohup.out文件中,而不是显示在终端上。
- 示例: 使用nohup ./redis-server &命令启动Redis服务器,Redis服务器会在后台运行,日志信息会写入nohup.out文件。
- 查看日志: 可以使用tail -f nohup.out命令实时查看后台运行程序的日志输出。
- 注意: 如果后台运行的程序没有正常输出日志,可能是因为程序被其他因素(如代理软件)影响,需要检查并排除干扰因素。
3)查看进程
- top命令
- top命令概述
- top命令输出内容
- top命令交互操作
- h: 显示帮助画面,给出一些简短的命令总结说明。
- k: 终止一个进程。
- i: 忽略闲置和僵死进程,这是一个开关式命令。
- q: 退出程序。
- r: 重新安排一个进程的优先级别。
- S: 切换到累计模式。
- s: 改变两次刷新之间的延迟时间(单位为s),输入0值则系统将不断刷新,默认值是5s。
- f或F: 从当前显示中添加或者删除项目,或者改变显示项目的顺序。
- 1: 切换显示平均负载和启动时间信息。
- m: 切换显示内存信息。
- t: 切换显示进程和CPU状态信息。
- c: 切换显示命令名称和完整命令行。
- M: 根据驻留内存大小进行排序。
- P: 根据CPU使用百分比大小进行排序。
- T: 根据时间/累计时间进行排序。
- w: 将当前设置写入~/.toprc文件中。
- top命令选项
- -b: 以批处理模式操作。
- -c: 显示完整的命令。
- -d: 设置屏幕刷新间隔时间。
- -I: 忽略失效过程。
- -s: 保密模式。
- -S: 累积模式。
- -i<时间>: 设置间隔时间。
- -u<用户名>: 指定用户名。
- -p<进程号>: 指定进程。
- -n<次数>: 循环显示的次数。
- ps命令简介
- top与ps命令的比较
- top命令:
- 实时动态查看系统整体运行情况。
- 提供互动式界面,可通过热键进行管理。
- ps命令:
- 查看当前系统中的进程状态。
- 提供更多选项以筛选和显示特定信息。
- 共同点: 两者都可以用于查看系统中的进程信息。
- 不同点: top命令更注重实时性和互动性,而ps命令则提供更丰富的筛选和显示选项。
- top命令:
- ps命令
- ps命令简介
- ps命令的功能与选项
- ps命令常用选项
- ps命令概述
- ps命令: ps命令用于显示当前系统中的进程状态,包括进程ID、CPU使用率、内存占用等信息。
- ps命令常用选项详解
- -t<终端机编号>: 指定终端机编号,并列出属于该终端机的程序的状况。
- -T: 显示现行终端机下的所有程序。
- -u<用户识别码> 或 -U<用户识别码>: 列出属于该用户的程序的状况,可使用用户名称或用户识别码来指定。
- v: 采用虚拟内存的格式显示程序状况。
- -V 或 --version: 显示ps命令的版本信息。
- -w 或 -w: 采用宽阔的格式来显示程序状况。
- x: 显示所有程序,不以终端机来区分。
- X: 采用日式的Linux 1386登陆格式显示程序状况。
- --cols<每列字符数> 或 --columns<每列字符数>: 设置每列的最大字符数。
- --lines<显示列数> 或 -rows<显示列数>: 设置显示画面的列数。
- --pid<程序识别码>: 根据程序识别码来显示特定程序的状况。
- 还有其他众多选项,如:--deselect、forest、--headers、--no-headers等,可根据具体需求查阅ps命令的官方文档或帮助信息。
- ps命令使用注意事项
- 选项众多: ps命令的选项非常丰富,使用时需要根据实际需求选择合适的选项组合。
- 格式差异: 不同的选项组合可能会产生不同的输出格式,需要注意区分和理解。
- 系统差异: 不同的Linux系统可能对ps命令的支持略有差异,使用时需要参考对应系统的文档或帮助信息。
- 实战应用
- 在实际使用中,可以根据需要组合使用ps命令的选项,例如:ps -aux 可以显示所有用户的所有进程,并按照用户格式显示程序状况;ps -ef 可以显示所有进程,并以完整的格式显示信息。
- 通过ps命令,可以方便地监控系统的进程状态,及时发现并处理异常进程,保证系统的稳定运行。
- ps命令概述
- ps命令实例讲解
- ps命令常用选项
- 常用组合与技巧
- ps命令与grep组合: 常用于查找特定进程,如ps -ef | grep ssh。
- 排序与筛选: 利用管道符|与sort、grep等命令组合,可以对进程信息进行排序和筛选,如按CPU或内存使用量排序。
- 重定义标签: 使用-o选项可以自定义输出格式,如重定义标签名称或顺序。
- 实例演示
- 实例一: ps aux,显示所有用户的所有进程及其详细信息。
- 实例二: ps aux | sort -rnk 4,按内存使用量对进程进行降序排序,便于查找内存占用较高的进程。
- 实例三: ps -f --forest -C nginx,以树状图显示nginx进程的层次关系,便于理解进程间的依赖关系。
- 注意事项
- 选项众多: ps命令的选项非常丰富,可以根据需要组合使用,但也要注意选项间的兼容性和正确性。
- 输出格式: 根据需求选择合适的输出格式和标签,以便更直观地查看和分析进程信息。
- 系统差异: 不同的Linux系统可能对ps命令的支持略有差异,使用时需参考具体系统的文档或帮助信息。
- ps aux命令
- ps aux命令介绍
- ps命令的详细用法
- ps aux: 查看所有用户的所有进程,并显示详细的进程信息,如PID、名称、CPU占用率等。
- 排序功能:
- ps aux | sort -rnk 4: 按内存资源的使用量对进程进行排序。
- ps aux | sort -nk 3: 按CPU资源的使用量对进程进行排序。
- 其他常用选项:
- ps -A: 显示所有进程信息。
- ps -u root: 显示指定用户(如root)的进程信息。
- ps -ef: 显示所有进程信息,连同命令行。
- ps -ef | grep ssh: 查找特定进程(如ssh)。
- ps -C nginx: 通过名字或命令搜索进程。
- 组合用法: 可以与其他命令组合使用,如与grep组合查找特定进程,或与sort组合对进程进行排序。
- ps命令的进阶用法
- 层次关系显示:
- ps -f --forest -c nginx: 用树的风格显示进程的层次关系,对于理解进程间的依赖关系很有帮助。
- 重定义标签:
- ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm: 可以重定义输出标签,使输出信息更加直观。
- 获取服务名称:
- ps -o command -p <PID> | sed -n 2p: 通过进程ID获取服务名称,对于系统管理和故障排查很有用。
- 层次关系显示:
- 常用命令总结
- 常用组合:
- ps aux 和 ps ef 是两个非常常用的命令组合,分别用于查看所有用户的所有进程和显示所有进程信息连同命令行。
- 记忆点:
- 可以将“aux”记忆为“all users' extended information”,帮助记忆该命令组合的功能。
- 常用组合:
- ps命令详解
- ps ef命令
- 命令作用: ps ef 命令用于显示所有进程的信息,包括命令行。
- 常用选项:
- -e: 显示所有进程。
- -f: 显示更完整的信息,通常与 -e 一起使用。
- 其他常用选项:
- -a: 显示所有进程,包括其他用户的进程。
- -u: 选择有效的用户id或是用户名。
- -x: 显示没有控制终端的进程,同时显示各个命令的具体路径。
- ps命令输出解析
- ps aux命令
- 进程查看实例
- 实例操作:
- 使用 ps ef | grep java 查看Java进程是否启动。
- 使用 service mysqld start 启动MySQL服务,再通过 ps ef | grep mysql 确认MySQL进程是否启动。
- 实例操作:
- 进程树(ps tree)
- 进程管理注意事项
- 注意事项:
- 直接杀死进程可能无法彻底终止,因为可能有副进程在支撑。
- 恶意程序或病毒常利用副进程机制,需找到根源并斩草除根。
- 注意事项:
- ps ef命令
- ps命令简介