linux运行程序和批处理详解

ops/2025/1/15 19:57:04/

         在 Linux 中,运行程序和执行批处理任务是非常常见的操作。Linux 提供了多种方法来执行程序,包括通过命令行直接运行、使用脚本自动化任务、以及通过批处理机制执行多个命令。以下是关于如何运行程序和批处理任务的详细说明。

1. 运行程序

1.1 直接运行程序

        Linux 中的程序通常是可执行文件。你可以通过命令行直接运行这些程序。通常情况下,如果程序已经在 $PATH 环境变量中,用户可以直接通过命令来运行程序。如果程序不在 $PATH 中,你需要指定程序的绝对路径或者相对路径。

示例:
  • 运行程序:在终端输入程序名称直接运行。

    program_name # 例如:运行 firefox 
  • 如果程序不在当前目录的 $PATH 中,可以通过文件路径来运行:

    ./program_name # 例如:运行当前目录下的程序 
  • 如果程序位于其他目录,可以使用绝对路径:

    /home/user/program_name # 使用绝对路径运行程序 
1.2 后台运行程序

        有时候你可能不希望程序在前台占用终端,尤其是当程序运行时间较长时。你可以将程序放到后台运行。

使用 & 在后台运行:
./long_running_program & 

        这会启动程序并将其放到后台运行,返回一个进程ID(PID)。

使用 nohup 使程序在退出终端后继续运行:
nohup ./long_running_program & 

   nohup 命令会使程序忽略挂起信号,这样即使你关闭终端,程序也会继续运行。输出通常会被重定向到 nohup.out 文件中。

1.3 使用 screentmux 来管理会话

如果你希望在会话中运行多个程序,甚至在连接断开后保持程序继续运行,可以使用 screentmux 工具。这些工具能够创建独立的虚拟终端会话,程序在这些会话中运行,直到你主动结束。

  • 创建一个新的 screen 会话

    screen 
  • 在 screen 会话中运行程序

    ./program_name 
  • 分离会话并返回到系统终端(Ctrl + A 然后按 D)。

  • 重新连接到会话

    screen -r 

     tmux 也有类似的功能,创建和管理会话、窗口和面板。

2. 批处理任务

        批处理任务是指一系列要顺序执行的命令。Linux 中有多种方式可以执行批处理任务,常用的有使用 shell 脚本、批处理文件和定时任务(如 cron)。

2.1 Shell 脚本

        Shell 脚本是通过将多个命令存储在文件中,按顺序执行这些命令的方式。Shell 脚本通常用于自动化日常任务,节省时间和精力。

创建 Shell 脚本
  1. 使用文本编辑器创建脚本文件。例如:

    nano my_script.sh 
  2. 在脚本中输入你希望批量执行的命令。例如,my_script.sh

    #!/bin/bash 
    echo "开始执行批处理任务" 
    ls -l /home/user 
    echo "任务完成" 
  3. 给脚本文件增加执行权限:

    chmod +x my_script.sh 
  4. 运行脚本:

    ./my_script.sh 
脚本内容解释:
  • #!/bin/bash: 这一行是 Shebang,它告诉系统使用哪个解释器来运行脚本(在这里是 bash)。
  • echo: 用于输出文本。
  • ls -l /home/user: 列出 /home/user 目录下的文件。
  • chmod +x: 使脚本文件可执行。
2.2 使用批处理文件(Bash 脚本)

        通过 &&; 将多个命令串联在一起,这样可以在一行中执行多个命令。

  • 使用 ;:命令依次执行,无论前一个命令是否成功。

    echo "Start"; ls -l; echo "Done" 
  • 使用 &&:只有前一个命令执行成功时,后续命令才会执行。

    echo "Start" && ls -l && echo "Done" 
  • 使用 ||:如果前一个命令失败,后续命令将执行。

    echo "Start" || echo "Error" 
2.3 使用 Cron 定时执行批处理任务

        Cron 是 Linux 中用于定期执行任务的守护进程。通过编辑 crontab 文件,可以设置定期执行的任务(例如:每天、每周或每月自动执行脚本)。

设置 Cron 任务
  1. 编辑 crontab 文件:

    crontab -e 
  2. crontab 中添加任务:

    # 格式:* * * * * 命令 
    # 分别表示:分 时 日 月 周 
    0 2 * * * /path/to/my_script.sh # 每天凌晨 2 点运行 my_script.sh 
  3. 解释:

    • 0 2 * * * 表示在每天的 2:00 AM 执行任务。
    • /path/to/my_script.sh 是你要执行的脚本的完整路径。
其他示例:
  • 每小时执行一次:

    0 * * * * /path/to/script.sh 
  • 每周一执行:

    0 0 * * 1 /path/to/script.sh 
  • 每月 1 日执行:

    0 0 1 * * /path/to/script.sh 

        你可以通过 crontab -l 查看当前用户的所有 cron 任务。

2.4 使用 at 执行一次性任务

   at 命令允许你设置在某个指定时间点运行一次性任务。

  1. 使用 at 命令来执行任务:

    echo "/path/to/script.sh" | at 2:00 AM 
  2. 解释:

    • 该命令会在早上 2 点执行指定的脚本。
  3. 查看已设置的任务:

    atq 
  4. 删除任务:

    atrm job_id 
2.5 使用 batch 执行任务

batch 命令可以在系统负载较低时执行任务,通常用于在负载较高时延迟执行任务。

echo "/path/to/script.sh" | batch 

3. 进程管理与批处理

有时,批处理任务会涉及多个进程的管理。Linux 提供了多种进程管理工具:

  • ps:查看当前运行的进程。

    ps aux # 查看所有进程 
  • top:实时查看进程的资源使用情况。

    top 
  • kill:结束进程。

    kill PID # 结束指定进程 
    kill -9 PID # 强制结束进程 
  • bgfg:后台和前台管理任务。

    • bg 将已暂停的进程放到后台继续运行。
    • fg 将后台进程带到前台。

总结

  • 直接运行程序:通过命令行执行,支持前台和后台模式。
  • 批处理任务:可以通过 Shell 脚本、串联命令或定时任务(如 cron)来批量执行命令。
  • Cron 和 at:用于定期或在特定时间点执行任务。
  • 进程管理:可以通过 pstopkill 等工具查看和管理正在运行的程序。

http://www.ppmy.cn/ops/150373.html

相关文章

C#版 软件开发6大原则与23种设计模式

开发原则和设计模式一直是软件开发中的圣经, 但是这仅仅适用于中大型的项目开发, 在小型项目的开发中, 这些规则会降低你的开发效率, 使你的工程变得繁杂. 所以只有适合你的才是最好的. 设计模式六大原则1. 单一职责原则(Single Responsibility Principle&#xff0…

【网络云SRE运维开发】2025第2周-每日【2025/01/10】小测-【第10章 ACL理论和实操考试】

文章目录 选择题(10个)理论题(5个)实操题(1个) 【网络云SRE运维开发】2025第2周-每日【2025/01/10】小测-【第10章 ACL理论和实操考试】 以下是以华为交换机和路由器为例的ACL访问控制列表理论实操考试和面…

【IPy模块01】Python运维模块之IP 地址、网段的基本处理

实用的IP地址处理模块IPy IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址…

R语言统计分析——围绕中心点的聚类(PAM)

参考资料:R语言实战【第2版】 因为K均值聚类方法是基于均值,所以它对异常值很敏感。一个更稳健的方法是围绕中心点的划分(PAM)。与其用质心(变量均值向量)表示类,不如用一个最有代表性的观测值来…

apollo内置eureka dashboard授权登录

要确保访问Eureka Server时要求输入账户和密码,需要确保以下几点: 确保 eurekaSecurityEnabled 配置为 true:这个配置项控制是否启用Eureka的安全认证。如果它被设置为 false,即使配置了用户名和密码,也不会启用安全认…

青少年编程与数学 02-006 前端开发框架VUE 21课题、路由控制

青少年编程与数学 02-006 前端开发框架VUE 21课题、路由控制 一、路由二、路由控制三、应用示例1. 安装Vue Router2. 设置路由3. 在主项目中引入路由4. 创建视图和组件5. 运行项目 课题摘要:本文介绍了Vue项目中的路由控制,包括安装Vue Router、定义路由组件、配置路…

数据取证与恢复:ElcomSoft System Recovery,什么是冷系统分析?

ElcomSoft 系列取证软件 ElcomSoft 系列取证软件支持从计算机和移动设备进行数据提取、解锁文档、解密压缩文件、破解加密容器、查看和分析证据。 计算机和手机取证的完整集合硬件加速解密最多支持10,000计算机协同工作包含全部移动设备数据提取解密分析的相关工具移动设备逻…

Spring Boot 应用开发入门

一、Spring Boot简介 Spring Boot 是一个基于 Spring 框架的开源 Java 基础框架,它简化了基于 Spring 的应用开发。Spring Boot 提供了一种快速、便捷的方式来创建独立、生产级的基于 Spring 框架的应用程序。它通过提供一系列的“启动器”依赖,帮助开发…