标签: lock

RasPi - USB 麦克风锁定

在我的 RasPi 板 Debian Linux 上,USB 麦克风偶尔会被锁定,以至于没有人可以使用它。麦克风有一个 LED,它通常会闪烁,当它锁定时,它会关闭。

该实用程序arecord对其进行了如下描述:

card 1: Device [DYNEX USB MIC Device], device 0:USB Audio [USB Audio]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
Run Code Online (Sandbox Code Playgroud)

当麦克风停止工作时,arecord给出如下诊断:

> arecord -D plughw:1,0 > recording.wav
Recording WAVE 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono
arecord: set_params:1145: Unable to install hw_params:
ACCESS:  RW_INTERLEAVED
FORMAT:  U8
etc...
Run Code Online (Sandbox Code Playgroud)

拔下和插入麦克风修复它,只是因为当前的下降迫使 RasPi 重新启动!不是理想的情况。

有没有办法从命令行或 C 可执行文件解决这个问题?

我还尝试使用ioctl(fd, USBDEVFS_RESET, 0)from 的输出lsusb来提供总线和设备编号。这会使 LED 重新亮起,但这太过分了。必须使用 alsamixer 重新设置设备。

lock raspberry-pi usb-audio

8
推荐指数
1
解决办法
717
查看次数

Linux 文件层次结构 - 存储锁文件的最佳位置是什么?

我想根据锁定文件(/套接字文件)同步进程。这些文件只能由其创建者用户删除。

有很多选择:

/dev/shm

/var/lock

/run/lock

/run/user/<UID>

/tmp

为此目的的最佳位置是什么?上面位置的用途是什么?

linux fhs directory-structure lock synchronization

8
推荐指数
1
解决办法
3921
查看次数

什么是 Unix 系统通常使用的文件的建议锁定?

我读到类似 Unix 的系统通常对文件 IO 使用咨询锁定,而不是 Microsoft 操作系统使用的强制锁定。如果我理解正确,强制锁定文件锁定是由操作系统本身强制执行的。但我没有得到建议锁定的直觉。以两个进程为例,说“A”和“B”正在处理文件“foo”。假设“A”写入“foo”,“B”从“foo”读取。在这种情况下,建议锁定如何工作?如果操作系统/文件系统没有对“foo”强制执行锁定,那么如何维护读取和写入的一致性?

filesystems lock files

7
推荐指数
1
解决办法
4453
查看次数

NFS 挂载:设备或资源繁忙

我参考了以下链接,解决方案有效。

如何克服“设备或资源繁忙”?

当您手动删除文件时,上述解决方案有效。但我有一个删除文件的 python 脚本(自动过程)。有时,当脚本尝试删除文件时,我会收到“设备或资源繁忙错误”。因此,我的脚本失败了。我不知道如何使用我的 python 脚本解决这个问题。

编辑: 脚本从日志服务器下载日志文件。然后这些文件由我的脚本处理。处理完成后,脚本会删除这些日志文件。我不认为设计有什么问题。

确切错误:

OSError: [Errno 16] Device or resource busy: '/home/johndoe/qwerty/.nfs000000000471494300000944'
Run Code Online (Sandbox Code Playgroud)

rhel python lock files

7
推荐指数
1
解决办法
2万
查看次数

监控文件锁,使用flock锁定

我想获得一个持有共享锁的pid列表/tmp/file。这可以使用简单的命令行工具吗?

lock files inotify

6
推荐指数
1
解决办法
3万
查看次数

`ln` 在 NFS 上是原子的且可靠的吗?在这个用例中 NFS 可以取代 GFS 吗?

我有一个集群,其中包含一堆服务器,共享磁盘包含所有节点同时访问的 GFS 全局文件系统。

集群中的每个节点都运行相同的程序(一个 shell 脚本是主要的核心)。系统处理出现在几个输入目录中的文件,它的工作方式如下:

  • 程序循环遍历输入目录。
  • 对于找到的每个文件,检查是否存在“锁定文件”,如果存在锁定文件,则跳到下一个文件。
  • 如果没有找到锁定文件,则创建锁定文件。如果锁文件创建失败(比赛失败),跳到下一个文件
  • 如果“我们”拥有锁,则处理文件并在完成后将其移开。

这一切都很好,但我想知道是否有更便宜(不太复杂)的解决方案也可以使用。我可能在考虑 NFS 或 SMB。

我使用 GFS 的原因有两个:

  1. 每个文件只存储在一个地方(当然是在冗余的底层硬件上)
  2. 文件锁定工作可靠

我像这样创建锁文件:

date '+%s:'${unid} > ${currlock}.${unid}
ln ${currlock}.${unid} ${currlock}
lockrc=$?
rm -f ${currlock}.${unid}
Run Code Online (Sandbox Code Playgroud)

其中$unid是唯一的会话标识符,$currlock/gfs/tmp/lock.${file_to_process}

的美妙之ln处在于它是原子的,因此除了同时尝试同一件事的人之外,其他所有人都失败了。

所以,我想我要问的是:NFS 能满足我的需求吗?ln在 NFS 和 GFS 上是否以相同的方式可靠地工作?

nfs lock concurrency ln gfs

6
推荐指数
1
解决办法
1544
查看次数

如何确保一次只有一个实例访问文件夹中的文件?

我有一个 shell 脚本,它将由多个实例执行,如果一个实例访问一个文件并执行一些操作,我如何确保其他实例没有访问同一个文件并破坏数据?

我的问题不是关于控制并行执行,而是处理文件锁定或标记机制。

请求一些建议以继续。

linux shell-script lock open-files files

6
推荐指数
1
解决办法
1267
查看次数

如何杀死持有 apt 锁的进程?

我试着做

sudo apt update
Run Code Online (Sandbox Code Playgroud)

但得到:

无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用)

E: 无法锁定目录 /var/lib/apt/lists/

我正在尝试获取最新版本的 mongod。按照我发现的一些说明,我做了:

$ ps aux | grep apt
5019  0.0  0.0  14224   980 pts/0    S+   02:52   0:00 grep --color=auto apt
Run Code Online (Sandbox Code Playgroud)

但我不知道我应该插入其中的哪一部分

kill -9 processnumber <id>
Run Code Online (Sandbox Code Playgroud)

使其工作。

哪个部分是ID,有什么办法可以防止这种情况再次发生?

kill ps apt lock

6
推荐指数
2
解决办法
3万
查看次数

代码在 bash 中工作,而不是在 zsh 中工作——在任意 fd 上聚集

我是 shell 脚本新手,这让我想知道为什么以下代码片段在 zsh 中不起作用,但在 bash 中却起作用?是否有相同片段的 zsh 等效项?我收到错误parse error near `200'

( 
  flock -e 200
  echo "In critical section"
  sleep 5 
) 200>/tmp/blah.lockfile 
echo "After critical section"
Run Code Online (Sandbox Code Playgroud)

上面的代码片段来自src: https: //stackoverflow.com/a/13551882/15087532

bash zsh shell-script lock

6
推荐指数
1
解决办法
664
查看次数

根据参数锁定 bash 脚本?

我试图找到一种根据给定参数锁定脚本的方法,但未能成功找到正确的答案。

我想要实现的是防止另一个用户基于某些参数运行脚本:因此,如果用户 A 使用参数执行脚本JOHN_DOE(例如:-d JOHN_DOE)并且用户 B 使用参数执行脚本-d ANNA_DOE,则它运行不会有任何问题,但如果用户B 尝试使用JOHN_DOE参数来执行它,而脚本的第一个实例尚未完成运行,则不允许用户 B 运行它。

有没有正确的方法来实现这一目标?

bash shell-script lock concurrency

5
推荐指数
1
解决办法
781
查看次数