On Fri, Mar 17, 2023 at 08:04:24AM +0800, p...@ymail.ne.jp wrote: > Sometimes I was using the older ruby version (1.x), but sometimes I am using > the latest ruby (3.x). For example, different streaming libraries for ruby > require different versions. > > For instance, I developed a ruby client for Kafka streaming, and deployed it > in crontab, and this script must use ruby 3.x version. > > 0 * * * * ruby kafka-consumer.rb
How is cron going to know which ruby to use? Cron uses a very minimalist PATH. From crontab(5): Several environment variables are set up automatically by the cron(8) daemon. SHELL is set to /bin/sh, and LOGNAME and HOME are set from the /etc/passwd line of the crontab's owner. PATH is set to "/usr/bin:/bin". HOME, SHELL, and PATH may be overridden by settings in the crontab; LOGNAME is the user that the job is running from, and may not be changed. Cron is going to look for /usr/bin/ruby or /bin/ruby and that's it, unless there's more to this crontab that you haven't shown us. If you need your crontab to use a specific version of ruby, on a system with multiple versions installed, you need to use the full path to one of them, or set the PATH variable.