我正在从终端内部运行一个命令,通过目录检查媒体文件,然后从这些文件中提取封闭的字幕数据。不幸的是,即使没有封闭的标题数据,程序仍然处理整个文件,这可能需要很长时间。我想要做的是在60秒后检查输出并查找数据,如果文件为空,则终止进程并转移到下一个文件。
我以前的命令如下
for i in */*.vob
do
/home/me/ccextractor/linux/ccextractor -out=srt -utf8 -trim "$i"
done
我一直在试验sleep,但我似乎无法让它发挥作用。有什么建议吗?
解决方案
在以下答案的帮助下(也请注意这些评论),我的最
linux命令"lsof“返回正在访问的文件,我在shell中尝试使用vi打开一个文件,用kwrite打开另一个文件,然后返回并得到vi的进程,但没有kwrite进程,如下所示
[linux@localhost shell_ex]$ lsof +d .
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 3458 linux cwd DIR 253,2 50 953101 .
bash 3747 linux cwd DIR 253,2 50 95
我只是使用这些指示从Debian 10升级到Debian 11。一切似乎都进行得很顺利,除了麦迪特失败了。
这是一个错误:
maldet[2117]: maldet(2117): {mon} kernel does not support inotify(), aborting
systemd[1]: maldet.service: Can't open PID file /usr/local/maldetect/tmp/inotifywait.pid (yet?) after start: Operation not permitted
systemd[1]: maldet.ser
此错误将停止内核生成进程。
ld: arch/x86/entry/syscall_64.o:(.rodata+0x1120): undefined reference to `__x64_sys_fd'
BTF .btf.vmlinux.bin.o
pahole: .tmp_vmlinux.btf: No such file or directory
LD .tmp_vmlinux.kallsyms1
.btf.vmlinux.bin.o: file not recognized: file format not recognized
下面是我在linux内核源代码中
我想使用ffmpeg将视频转换为php中的.flv。目前我有这个工作,但它挂起的浏览器,直到文件上传和完成。我一直在查看php文档,了解如何在后台运行exec()进程,同时使用返回的PID更新进程。这是我发现的:
//Run linux command in background and return the PID created by the OS
function run_in_background($Command, $Priority = 0)
{
if($Priority)
$PID = shell_exec("nohup nice -n $Prio
这里有什么问题吗?我有以下简单的课程:
#include "libmnl/libmnl.h"
int main() {
struct mnl_socket *a = mnl_socket_open(12);
}
在运行简单的gcc编译(gcc -lmnl main.c)之后,我得到以下错误:
/tmp/cch3GjuS.o: In function `main':
main.c:(.text+0xe): undefined reference to `mnl_socket_open'
collect2: ld returned 1 exit stat
我在前台运行了一个子进程,他的父亲已经离开了。
如果父进程已退出,则proc/$pid/stat文件不再包含父pid,并且它将显示1而不是原始父pid。
linux$cat /proc/6267/stat
6267 (test3.sh) S 1 6265 ......
# ^
# |
# I expected to get the origin parent pid but I get 1
要快速再现这种行为,我们可以使用以下脚本
test2.sh
#!/bin/sh
echo "test2=$$"
从阅读文档和在线上看,大多数人都说要在linux中杀死一个进程,只需要命令kill "pid“。
For example to kill memcached would be kill $(cat memcached.pid)
但对于我试图杀死的几乎每个进程,包括上面的进程,这都是不起作用的。我设法用一个不同的命令让它工作:
ps aux | grep (process name here)
无论出于什么原因,该命令都会得到一个不同的pid,这将在终止程序时起作用。
我想我的问题是,为什么会有不同的pid?id的意义不是唯一的吗?为什么在使用aux | grep命令时,celery、m
我目前正在用JAVA构建一个应用程序,其中只能有一个执行。因此,我目前正在使用一个锁文件,在其中写入当前执行的PID。
因此,每当该应用程序启动时,它都会打开文件(如果存在的话),并尝试检测写入文件中的PID是否实际运行。
这可以防止我的应用程序在解锁文件之前崩溃的问题。
我需要在windows (XP、7或8)和linux (所有用户都是基于debian的发行版)上工作。
这里有一些代码可以让您更好地了解我想要做的事情:
//get the PID from the file
int pidValue = new FileReader(file).read();
//get the OS