我已经收到了一些关于如何找出我的串行端口为什么繁忙的建议。具体来说,当我尝试启动gammu时,它拒绝启动/dev/ttyS0,因为它说端口很忙:
sudo /etc/init.d/gammu-smsd start
Sep 30 16:16:51 porkypig gammu-smsd[25355]: Starting phone communication...
Sep 30 16:16:51 porkypig gammu-smsd[25355]: gammu: [Gammu - 1.26.1 built 21:46:06 Nov 24 2009 using GCC 4.4]
Sep 30 16:16:51 porkypig gammu-smsd[25355]: gammu: [Connection - "at115200"]
Sep 30 16:16:51 porkypig gammu-smsd[25355]: gammu: [Connection index - 0]
Sep 30 16:16:51 porkypig gammu-smsd[25355]: gammu: [Model type - ""]
Sep 30 16:16:51 porkypig gammu-smsd[25355]: gammu: [Device - "/dev/ttyS0"]
Sep 30 16:16:51 porkypig gammu-smsd[25355]: gammu: [Runing on - Linux, kernel 2.6.32-42-server (#95-Ubuntu SMP Wed Jul 25 16:10:49 UTC 2012)]
Sep 30 16:16:51 porkypig gammu-smsd[25355]: gammu: [System error - open in serial_open, 16, "Device or resource busy"]
Sep 30 16:16:51 porkypig gammu-smsd[25355]: gammu: Init:GSM_TryGetModel failed with error DEVICEOPENERROR[2]: Error opening device. Unknown, busy or no permissions.
Sep 30 16:16:51 porkypig gammu-smsd[25355]: Can't open device (Error opening device. Unknown, busy or no permissions.:2)
Sep 30 16:16:51 porkypig gammu-smsd[25355]: Using PGSQL service
Sep 30 16:16:51 porkypig gammu-smsd[25355]: Disconnecting from PostgreSQL我用了两个不同的命令。他们两人都认为不同的过程应该受到谴责。首先,我试着吸食:
fuser -m -u /dev/ttyS0
/dev/ttyS0: 21624(guarddoggps)
cd /proc/21624
cat status
Name: dropbox
State: S (sleeping)
Tgid: 21624
Pid: 21624
PPid: 1
TracerPid: 0
Uid: 1001 1001 1001 1001
Gid: 1001 1001 1001 1001
FDSize: 64
Groups: 5 27 1001 5004
VmPeak: 873732 kB
VmSize: 806040 kB
VmLck: 0 kB
VmHWM: 207668 kB
VmRSS: 131864 kB
VmData: 547820 kB
VmStk: 160 kB
VmExe: 3524 kB
VmLib: 29660 kB
VmPTE: 1244 kB
Threads: 21
SigQ: 0/16382
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000001001000
SigCgt: 00000001800004c8
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
Cpus_allowed: ff
Cpus_allowed_list: 0-7
Mems_allowed: 00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 202
nonvoluntary_ctxt_switches: 1所以fuser说dropbox正在使用它。
然后我用lsof:
sudo lsof | grep ttyS0
screen 23520 root 6u CHR 4,64 0t0 1421 /dev/ttyS0lsof说屏幕(而不是dropbox)正在使用它。
那么,这些程序中的哪个(dropbox或屏幕)确实导致gammu因为资源“繁忙”而拒绝启动?
发布于 2013-10-09 20:56:24
简单的回答是:screen。
稍长一点的答案是,-m标记fuser告诉它使用挂载点列出所有内容。根据您的设置,这可能意味着所有的/dev,但也可能是/。显然不是你想要的。如果您执行fuser -vm /dev/ttyS0,您将得到一个非常长的列表,在我的系统中超过60行。
去掉-m,它可能会给出与lsof相同的答案。
https://unix.stackexchange.com/questions/94316
复制相似问题