我运行了命令:
nohup sh -c "echo $SU_PASSWORD | /afs/cs/software/bin/reauth; python -u ~/diversity-for-predictive-success-of-meta-learning/div_src/diversity_src/experiment_mains/main_diversity_with_task2vec.py --manual_loads_name diversity_ala_task2vec_hdb1_mio > $OUT_FILE 2> $ERR_FILE" > $PWD/main.sh.nohup.out$SLURM_JOBID &
大约 3 小时后,它在文件中输出以下错误main.sh.nohup.out$SLURM_JOBID
:
Password for brando9: stty: 'standard input': Inappropriate ioctl for device
stty: 'standard input': Inappropriate ioctl for device
Can't obtain kerberos tickets
我想知道这个错误意味着什么。
(解决它也很好,但这就是这个问题的主题如何发送新命令运行到已经运行的 nohup 进程或在 nohup 中一起/同时运行两个命令?并认为首先进行分治并询问错误的含义会很有用)
相关问题:
答案1
ioctl
是通过打开的文件描述符与内核对话的一种包罗万象的方式。调用本身采用可变参数。由内核中的设备驱动程序来验证参数是否正确。前 2 个参数是文件描述符和命令号。
最初的用途是设置串行线的速度、设置中断字符、打开或关闭本地回显。其中每一个都会获得不同的命令号。
人们添加了诸如弹出 CD 之类的命令。
创建了通用错误代码,并添加了库例程以将其转换为您看到的“不适合设备的 ioctl”消息。如果您尝试告诉串行线弹出其 CD 或要求 CD 阅读器打开本地回显,则内核驱动程序将使用此功能。
因此,回答“我想知道错误意味着什么” - 这意味着某些软件要求内核执行某些操作,而内核说“这对于这种硬件设备没有意义”并且软件报告了这一点。该nohup
命令通常会断开 stdin 文件描述符与它所连接的任何内容的连接,并将其重新附加到 /dev/null。因此,这可能很简单,就像软件假设 stdin 连接到终端并询问终端大小和 /dev/null 的设备驱动程序说“我不是终端,所以我无法告诉你是我的尺寸”