shell脚本, 无限循环检查rtm2是否存在,如果3次检查都不存在,重启rtm2,如果检查存在,sleep 5秒
时间: 2023-02-09 18:18:10 浏览: 91
```bash
count=0
while :
do
if pgrep -x "rtm2" > /dev/null
then
count=0
sleep 5
else
count=$((count+1))
if [ $count -eq 3 ]
then
systemctl restart rtm2
count=0
fi
fi
done
```
这是一个无限循环的shell脚本,用于检查rtm2进程是否存在。如果3次检查都不存在,则重启rtm2,如果存在则 sleep 5 秒。
相关问题
shell 脚本 检查3次rtm2程序是否存在,如果3次都不存在,重启启动rtm2程序
在 shell 脚本中,可以使用 `for` 循环和 `ps aux` 命令来检查进程是否存在。下面是一个示例脚本:
```
#!/bin/bash
count=0
for i in {1..3}
do
if ! pgrep rtm2 > /dev/null
then
((count++))
fi
sleep 1
done
if [ $count -eq 3 ]
then
systemctl restart rtm2
fi
```
这个脚本首先定义了一个变量 `count`,并将其初始值设为 0。然后使用 `for` 循环运行 3 次,每次循环都会使用 `pgrep` 命令来检查 rtm2 进程是否存在。如果不存在,则将 `count` 变量加 1。最后,如果 `count` 的值等于 3,则说明 rtm2 进程在 3 次循环中都不存在,于是就使用 systemctl 重启rtm2程序。
2008版本R2 (RTM) sql server怎么查询数据库正在执行的sql语句
在 SQL Server 2008 R2 RTM 版本中,你可以使用内置的系统视图和存储过程来监视正在执行的 SQL 语句。以下是几个常用的工具:
1. **动态管理视图** - `sys.dm_exec_requests`:这个视图可以提供关于当前请求的信息,包括 SQL 命令、开始时间、执行状态等。通过 `command_text` 列,你可以看到正在执行的 SQL 语句。
示例查询:
```sql
SELECT command_text
FROM sys.dm_exec_requests
WHERE session_id = @@SPID;
```
这里 `@@SPID` 可以替换为你想要观察的会话标识符。
2. **`xp_trace_getevent`** 存储过程:虽然这在默认情况下是禁用的,但在一些环境允许的情况下,可以用来查看 SQL Server Profiler 日志中的事件,包括 SQL 语句。但是请注意,在生产环境中使用此存储过程需要谨慎,因为它影响性能。
3. **`fn_dblog`**:这是一个历史记录相关的存储过程,可用于回溯特定事务或查询的日志信息。不过,它对于实时监控可能不是最佳选择。
为了确保能正常运行,你需要适当的权限,如`VIEW DATABASE STATE` 和 `VIEW SERVER STATE` 权限。