我的机器上运行着一个冗长的 python 脚本:
[root@server1]# ps aux | grep python
root 30640 15.6 0.6 296416 102444 pts/4 S+ 11:29 2:38 python my_script.py
Run Code Online (Sandbox Code Playgroud)
但我现在正在笔记本电脑上远程工作,并希望查看该脚本的输出。我通常只是命令tail的输出文件tee,但这不起作用。
所以我下载了这个名为ttylog(http://search.cpan.org/~bbb/ttylog-0.83/ttylog)的程序来查看该过程的输出。这看起来相当简单,所以我已经 ssh 进入server1并运行:
[root@server1 ttylog-0.83]# ./ttylog pts/4
DEBUG: Scanning for psuedo terminal pts/4
DEBUG: Psuedo terminal [pts/4] found.
DEBUG: Found parent sshd pid [28198] for user [root]
Process 28198 attached - interrupt to quit
Run Code Online (Sandbox Code Playgroud)
但这是错误的过程 - 所以我没有得到任何输出。
我需要它附加到进程 30640,即 python 进程。有谁知道如何做到这一点?
我们有一个基于 Debian 的嵌入式设备。它运行一个通过串行(RS-232、/dev/ttyS*)与其他嵌入式设备通信的应用程序。通常,这效果很好。但当然,有时会出现问题,虽然我们的应用程序仍然可以毫无错误地发送字节,但另一端没有任何返回。
现在我希望能够区分
[A] 串行连接处于活动/启动/建立状态(我知道我可能使用了不恰当的术语),因为其他设备正在接收我们的数据。但无论出于何种原因,其他设备上的应用程序都不会与我们对话(例如,因为它崩溃了)。
[B] 串行连接未激活/启动/建立,例如因为电缆被拔出或其他设备断电。
有没有办法做到这一点?(就像以太网连接一样,很容易判断它是否有链接)
一些细节:
我有一台机器,只允许某些用户通过 ssh 登录和执行命令,其余所有用户都可以 ssh 和运行命令,但不应登录,即其他用户不能登录。
有人可以帮我弄这个吗。
我正在尝试将此 bash 脚本作为 cron 作业运行,但我收到一个错误,内容为
sudo: sorry, you must have a tty to run sudo. 我在亚马逊 EC2 linux 实例中运行这个 bash 脚本。
#!/bin/bash -
#get instance id - used for putting metric
INSTANCE_ID=`GET http://169.254.169.254/latest/meta-data/instance-id`
#could be done using "free" or "vmstat" - use of less and grep is believed to provide widest compatibility - CJ 2011-11-24
memfree=`less /proc/meminfo | grep -i MemFree | grep -o [0-9]*`
swaptotal=`less /proc/meminfo | grep -i SwapTotal | grep -o [0-9]*`
swapfree=`less /proc/meminfo | grep …Run Code Online (Sandbox Code Playgroud)