0

I ran the command:

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 &

after about 3 hours it outputs the following error in the main.sh.nohup.out$SLURM_JOBID file:

Password for brando9: stty: 'standard input': Inappropriate ioctl for device
stty: 'standard input': Inappropriate ioctl for device

Can't obtain kerberos tickets

I want to know what the error means.

(solving it is fine too but that is the topic of this question How does one send new commands to run to an already running nohup process or run two commands together/concurrently in nohup? and thought that dividing and conquering and asking about the meaning of the error would be useful first)


related questions:

1 Answers1

1

ioctl is a catch-all way of talking to the kernel via an opened file descriptor. The call itself takes variable arguments. It is up to the device drivers in the kernel to validate that the arguments are correct. The first 2 arguments are the file descriptor and the command number.

The original use was to do things like setting the speed of a serial line, setting the interrupt character, switching local echoing on or off. Each of these would get a different command number.

People added commands like eject a CD.

A generic error code was created, and library routines where added to convert this to the "Inappropriate ioctl for device" message you are seeing. The kernel drivers use this if you try and tell a serial line to eject its CD or you ask a cd reader to switch on local echoing.

So to answer "I want to know what the error means" - it means that some software asked the kernel to do something and the kernel said "this doesn't make sense for this kind of hardware device" and the software reported it. The nohup command will typically disconnect the stdin file descriptor from whatever it was connected to and reattach it to /dev/null. So it could be something as simple as the software is assuming that stdin is connected to a terminal and is asking or the terminal size and the device driver for /dev/null is saying "I am not a terminal, so I can't tell you my size"

icarus
  • 17,920