在linux前台和后台运行程序

为什么要在linux命令前加上 ./
简述
在chinaunix 论坛里找到的答案
原来Quote:
unix或linux中除了path系统变量外的目录下的命令都要加./
修改用户的 .bash_profile 在 PATH一行最后加上 ":." (一个冒号,一个点)
然后退出重新登陆用户就ok了!
PATH中没有定义路径,加上就ok了

./表示当前目录,这是因为linux的默认搜索目录里没有当前目录,所以如果你在
当前目录需要执行程序就要加上路径,./用全路径代替也是可以的。
win/dos的默认搜索路径里有当前目录,所以不需要加。其实加上也是一样的效果
 
什么时候才需要在命令前加上./ ?

比如:
cd /etc/init.d
运行:sshd 系统没有什么反应也不出错
而只有加上./ 后,如 ./sshd 才会出提示如:
用法:./sshd {start|stop|restart|reload|condrestart|status}


这是怎么回事,而有的时候却两者都可以。
 
.表示当前目录,./,,,表示执行当前目录下可执行文件
 

首先,你运行了两个sshd,都没有报错,说明两个命令都可以。

一开始的sshd应该是/usr/sbin/下面的sshd命令。
第二次的sshd是/etc/init.d/下的一个脚本,不是二进制可执行文件。

linux优先查找PATH环境变量下的路径,和m$有点不一样。环境变量可以用echo $PATH观看
 
一般rpm安装的都行,可以直接运行。
有一部分tarball要`编译,编译后在/us/bin or /usr/local/bin下放置可执行文件,则可以直接运行,但有部分程序编译后在原目录下,要执行就要./,,,
另外,./configure是必需带./的,其实兄弟安装后可以试试在输入可执行文件名前几个字母后Tab,系统会列出所有以这几个字母开头的可执行文件
 
让程序在后台运行
 
 用户有时的程序有可能要花费很多时间,如果将它放在前台运行,将导致无法继续做其他事情,最好的方法就是将它放在后台运行,甚至可能希望在用户注销系统后,程序还可以继续运行。让我们看看那如何实现这一目的。
  1,在后台运行程序的&、bg命令
  将程序放到后台运行的最简单方法就是在命令最后加上“&”,范例如下:
  [tony@free root]# updatedb & ← 在后台执行 locate 数据库更新命令
  [tony@free root]# bg ← 将更新操作放到后台运行
  2,前台运行的程序fg命令
  如果用户当前已有程序在后台运行,可以输入fg命令,将它从背景中移到前台运行:
  [tony@free root]# fg ← 放到前台执行的命令会显示出来
  3,在退出后让程序继续运行的nohup命令
  此命令可使用户退出系统后,程序继续运行。范例如下:
  [tony@free rony]$ nohup myserver &
  然后用户就可以退出了,当再次登录的时候,可以用ps –aux命令看到程序仍在后台中运行。
linux批处理
 
将要执行的命令放入文本文件,然后改变文件属性为可执行即可
chamod +x 你的文件
./你的文件 搞定
 
linux自动运行程序
1.开机启动时自动运行程序
  Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。例如:编辑 /etc/rc.d/rc.local 文件,在文件最末加上一行“xinit”或“startx”,可以在开机启动后直接进入X-Window。
  
2.登录时自动运行程序
  用户登录时,bash首先自动执行系统管理员建立的全局登录script :/ect/profile。然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、/.profile,但只执行最先找到的一个。
  因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。
  
3.退出登录时自动运行程序
  退出登录时,bash自动执行个人的退出登录脚本/.bash_logout。例如,在/.bash_logout中加入命令“tar -cvzf c.source.tgz *.c”,则在每次退出登录时自动执行 “tar” 命令备份 *.c 文件。
4.定期自动运行程序
  Linux有一个称为crond的守护程序,主要功能是周期性地检查 /var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些文件中的命令。用户可以通过crontab 命令来建立、修改、删除这些命令文件。
  例如,建立文件crondFile,内容为“00 9 23 Jan * HappyBirthday”,运行“crontab cronFile”命令后,每当元月23日上午9:00系统自动执行“HappyBirthday”的程序(“*”表示不管当天是星期几)。
  
5.定时自动运行程序一次

  定时执行命令at 与crond 类似(但它只执行一次):命令在给定的时间执行,但不自动重复。at命令的一般格式为:at [ -f file ] time ,在指定的时间执行file文件中所给出的所有命令。也可直接从键盘输入命令:
  $ at 12:00
  at>mailto Roger -s ″Have a lunch″ < plan.txt
  at>Ctr-D
  Job 1 at 2000-11-09 12:00
  2000-11-09 12:00时候自动发一标题为“Have a lunch”,内容为plan.txt文件内容的邮件给Roger。?9 12:00
  2000-11-09 12:00时候自动发一标题为“Have a lunch”,内容为plan.txt文件内容的邮件给Roger。er。ger。er。
Linux 中查找正在后台运行程序是非常常见的任务。这里有几个常用的方法可以帮助你找到这些进程的信息: ### 1. 使用 `ps` 命令 这是最基本的命令之一,用于显示系统上当前活动的所有进程的状态信息。你可以结合其他选项来筛选出更详细的结果。 - 显示所有用户的全部进程: ```bash ps aux ``` - 查找特定名字的服务(比如 sshd): ```bash ps aux | grep sshd ``` ### 2. 使用 `top` 或者 `htop` 这两个工具可以实时监控系统的性能资源占用情况,并列出各个进程中 CPU 内存使用率最高的几个进程。其中 `htop` 提供了更为直观交互式的界面。 ```bash # 安装 htop (如果没有安装的话) sudo apt-get install htop # Debian/Ubuntu系列发行版 sudo yum install htop # CentOS/RHEL系列发行版 # 启动 htop htop ``` ### 3. 使用 `pgrep` 命令 如果只想得到匹配条件的 PID 而不是完整列表,那么 pgrep 就是一个不错的选择。它允许我们通过正则表达式模式搜索对应的进程 ID。 例如查找名为 "sshd" 的服务对应多少个实例存在: ```bash pgrep -l sshd ``` ### 4. 使用 `jobs` `bg` 命令组合 如果你是在 shell 内部启动了一个作业然后把它移到了后台,那可以用 jobs 来查看有哪些这样的背景工作正在进行当中;而对于最近一次放到后端的任务可以直接用 bg %jobnumber 把它们拉回前台或者再次推往后台继续跑。 ```bash # 列举所有的后台任务 jobs # 把编号为 n 的 job 放入后台执行 bg%n ``` 以上几种方式各有特点适用于不同场景下的需求分析。对于大多数日常排查问题来说,`ps` 加管道符配合文本过滤应该是最简单有效的方式啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值