首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我有一个调用bash脚本的crontab条目。为什么$USER返回空白?

在Linux系统中,crontab是一个用于定时执行任务的工具。当我们在crontab中调用bash脚本时,有时会遇到$USER返回空白的情况。

$USER是一个环境变量,用于表示当前登录用户的用户名。在正常情况下,$USER应该返回当前登录用户的用户名。然而,当在crontab中调用bash脚本时,由于环境变量的限制,$USER可能会返回空白。

这是因为crontab在执行任务时,并不会加载完整的用户环境变量。相反,它只会加载一部分基本的环境变量。因此,一些与用户相关的环境变量,如$USER,可能无法正确地获取到值。

为了解决这个问题,我们可以在bash脚本中手动指定$USER的值。可以使用以下命令来获取当前登录用户的用户名:

代码语言:txt
复制
current_user=$(whoami)

然后,在脚本中使用$current_user来代替$USER。

另外,如果你需要在crontab中使用其他环境变量,也可以通过在脚本中手动设置这些变量的值来解决。例如,如果需要使用$HOME变量,可以在脚本中添加以下命令:

代码语言:txt
复制
export HOME=/home/your_username

这样就可以确保在crontab中调用bash脚本时,$HOME变量能够正确地获取到值。

总结起来,当在crontab中调用bash脚本时,$USER返回空白的原因是因为crontab只加载了部分基本的环境变量。为了解决这个问题,我们可以在脚本中手动指定$USER的值,或者手动设置其他需要使用的环境变量的值。

相关搜索:为什么我有一个空白的pdf?为什么我的按钮和它的边框之间有一个空白?为什么我的简单JS脚本返回一个bug?当我调用我的函数时,为什么我有一个无效的钩子调用?我的第一个bash脚本中的错误处理有问题为什么从C#调用时,我编译的AutoIt脚本无法返回?为什么我的guize6get()调用返回一个空流?为什么我对WinGetTitle的调用返回一个空字符串?为什么我在调用Django的create_user助手函数时会得到一个IntegrityError?为什么我的pipilne脚本中curl命令的结果返回一个缺失值为什么我在此CSV导出的顶部有一个空白行,以及如何删除它?为什么我得到一个错误,因为没有一个返回语句,即使我有一个在我的for循环?为什么从promise.all内部调用时,我的apolloFetch调用返回一个空查询?为什么即使我有一个预定义的答案,它仍然返回“对不起”为什么我对getInputStream()的调用返回一个空的html字符串?我有一个包含名字的txt文件,我想提取名字和姓氏。我已经创建了bash脚本,但它给了我一个错误为什么我的auth令牌没有出现在auth user对象中,即使它返回一个auth令牌?为什么我的脚本使我的“破折号”有一个看似随机的持续时间,我如何解决它?为什么我的ASP.net Core2.2中的SOAP调用返回一个空结果?我有一个函数的问题,它没有返回任何东西,当我调用它时,当我试图调用它时,它会告诉我没有定义变量
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何编写bash脚本以便在进程死机时重新启动进程

问: 一个python脚本,它将检查队列并对每个元素执行操作: # checkqueue.py while True: check_queue() do_something() 如何编写一个...bash脚本来检查它是否正在运行,如果没有,则启动它。...crontab调用它: # crontab */5 * * * * /path/to/keepalivescript.sh 答: 避免使用 PID 文件、cron 或其他任何试图评估不属于其子进程进程...如果退出状态不是0,until将运行循环体,该循环体在STDERR上发出错误消息,并在 1 秒后重新启动循环(返回第 1 行)。 我们为什么要等一会儿?...使用crontab -e命令打开你cron规则,然后添加一个规则来启动你监控脚本: @reboot /usr/local/bin/procAmonitor 至于不使用PID文件理由: 1.

18720
  • CentOS下Nginx配置Web访问日志并结合Shell脚本定时切割

    一个成熟WEB系统里,没有日志管理是不可以了日志,可以帮助你得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;通过错误日志,你可以得到系统某个服务或server性能瓶颈等。...$remote_addr:远程客户端IP地址。 -:空白,用一个“-”占位符替代,历史原因导致还存在。...$remote_user:远程客户端用户名称,用于记录浏览者进行身份验证时提供名字,如登录百度用户名scq2099yt,如果没有登录就是空白。...$request:请求URI和HTTP协议,这是整个PV日志记录中最有用信息,记录服务器收到一个什么样请求 $status:记录请求返回http状态码,比如成功是200。...已经支持) 根据上面的配置,确定了日志路径之后,在/data/crontab目录下创建了一个脚本 #!

    56920

    使用shell脚本定时采集日志数据到hdfs分布式文件系统

    crontab [-u user] [ -e | -l | -r ]   b、命令功能:     通过crontab 命令,我们可以在固定间隔时间执行指定系统指令或 shell script脚本。...c、命令参数:     -u user:用来设定某个用户crontab服务,例如,“-u ixdba”表示设定ixdba用户crontab服务,此参数一般root用户来运行。     ...最好在crontab文件一个条目之上加入一条注释,这样就可以知道它功能、运行时间,更为重要是,知道这是哪位用户作业。     ...建议你在自己$ home目录中保存一个该文件副本。就有过类似的经历,有数次误删了crontab文件(因为r键紧挨在e键右边)。...这就是为什么有些系统文档建议不要直接编辑crontab文件,而是编辑该文件一个副本,然后重新提交新文件。     有些crontab变体有些怪异,所以在使用crontab命令时要格外小心。

    2.1K70

    Linux定时任务Crontab命令详解

    ] file crontab [-u user] [ -e | -l | -r ] 2.命令功能: 通过crontab 命令,我们可以在固定间隔时间执行指定系统指令或 shell script脚本。...3.命令参数: -u user:用来设定某个用户crontab服务,例如,“-u ixdba”表示设定ixdba用户crontab服务,此参数一般root用户来运行。...最好在crontab文件一个条目之上加入一条注释,这样就可以知道它功能、运行时间,更为重要是,知道这是哪位用户作业。...如果由于权限问题无法完成拷贝,可以用: $ crontab 其中,是你在$ H O M E目录中副本文件名。 建议你在自己$ H O M E目录中保存一个该文件副本。...就有过类似的经历,有数次误删了crontab文件(因为r键紧挨在e键右边)。这就是为什么有些系统文档建议不要直接编辑crontab文件,而是编辑该文件一个副本,然后重新提交新文件。

    86110

    【腾讯云1001种玩法】关于Web服务器Nginx反向代理GitHub Page一点思考(bash脚本

    2 主要步骤 在服务器某个安稳地方写一个脚本。例如新建/etc/myshell文件夹,在其下撰写一个myshell_1.shShell脚本。...命令格式 crontab [-u user] file crontab [-u user] [ -e | -l | -r ] 3.2....如果修改了某些条目或添加了新条目,那么在保存该文件时, cron会对其进行必要完整性检查。如果其中某个域出现了超出允许范围值,它会提示你。 我们在编辑crontab文件时,没准会加入新条目。...最好在crontab文件一个条目之上加入一条注释,这样就可以知道它功能、运行时间,更为重要是,知道这是哪位用户定时作业。 删除crontab文件 $crontab -r 3.5....在crontab中%是特殊含义,表示换行意思。如果要用的话必须进行转义%,如经常用date ‘+%Y%m%d’在crontab里是不会执行,应该换成date ‘+%Y%m%d’。

    2.4K10

    【linux命令讲解大全】198.Shell命令解析:export和exportfs用途和参数解释

    A:它们会成为环境变量,可以在脚本中访问它们,尤其是脚本调用子进程需要时。 Q:如果编写脚本修改了已有的环境变量值,那么执行它会在当前终端生效吗?会影响之前以及之后打开终端吗?...之前不会影响,之后除非是修改了 ~/.bashrc 这种启动终端时加载脚本。 Q:脚本文件中调用 ~/.bashrc 中定义函数和变量。...为什么在新打开终端中通过 sh 方式调用脚本或直接运行这个当前用户执行权限脚本却不能使用这些函数和变量? A:请在 ~/.bashrc 文件中增加 export 它们语句。...A:是可以(如果你bash支持它们),不过有些问题。 Q:为什么在查看变量或函数导出属性时候显示开头是 declare?...它将 /etc/exports 中已删除条目从 /var/lib/nfs/xtab 中删除,将内核共享表中任何不再有效条目移除。 -u 取消一个或多个目录共享。

    41310

    「薅」52图初探Linux通用知识

    跑几个问题,桌面上图标是什么,为啥子敲一下键盘就出来了画面 电脑咋个知道我们鼠标点击那个位置 为什么一回车,这些字符就飞出去了 这几个任何一个操作,基本上都覆盖了操作系统所有功能,那我来认识熟悉而默认操作系统.../bin/bash # author:xiaolan Fun1(){ echo "这是一个 shell 函数!"...crondtab来设置 那么crontab到底怎么用么 首先看看crontab使用格式: crontab -u user file 常见选项 -u user:很明显是需要表明是那个用户crontab...* * 1-5 /root/bin/backup.sh 每五分钟运行一个命令 */5 * * * * /root/bin/check-status.sh crontab哪些选项 crontab -...退出状态:该命令返回下列出口值:  126 可以查找但不能调用 Command 参数指定命令。  127 nohup 命令发生错误或不能查找由 Command 参数指定命令。

    1.6K30

    megeedu Linux+Python

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中以至少一个空白字符开头行首加#; [root@localhost ~]# cp /etc...2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中行首空白字符; [root@localhost ~]# cp /boot/grub/grub.conf...3、删除/tmp/rc.sysinit文件中以#开头,且后面跟了至少一个空白字符行行#和空白字符 [root@localhost ~]# vim /tmp/rc.sysinit                         .../messages文件至/backup/messages_logs/目录中,保存文件名形如messages-20160830 [root@localhost ~]# crontab -e 0 0 * ...~]# crontab -e 0 8-17/2 * * 1,2,3,4,5  /bin/echo "howdy"        #1-5为工作日,8-17为工作时间 脚本编程练习 10、创建目录/tmp

    34300

    从挖矿木马看后渗透维权

    阶段2 ps获取运行进程,grep屏蔽掉自己,然后grep其它挖矿程序,awk获取进程编号,kill -9 强制杀掉。 ? 阶段3 定义一个函数,调用curl,wget远程下载挖矿脚本。 ?...从这个阶段开始分析服务器中存在另外一个挖矿脚本,可以看出本人通过crontab -r 后任然无法删除定时任务,这里可能有两种原因: 1.其他定时任务还在不断写入下载挖矿脚本命令。.../etc/bashrc:为每一个运行bash shell用户执行此文件,当bash shell被打开时,该文件被读取。所以重启后,挖矿脚本会继续下载。...Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bashshell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX...此外,除了通过crontab -e直接写入bash之外,我们还可以通过创建定时文件/etc/crontabshell,然后通过crontab -e调用该shell脚本: * * * * * /etc/crontabshell

    2.4K30

    10.23 linux任务计划cron

    -l //指定用户 任务计划 crontab -e //编辑 在linux系统中,系统计划是必不可少,比如备份数据,重启服务等 操作过程,可能是一个脚本可能是一个单独命令,在特定时间去执行它...SHELL=/bin/bash PATH环境变量,它命令路径 MAILTO发邮件给谁 [root@hanfeng ~]# cat /etc/crontab SHELL=/bin/bash PATH...只要周2和周5执行该文件 0 3 1-10 */2 2,5 /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log 为什么没有年份...在写了一个计划,放入到配置文件中,但就是不执行 不执行原因很有可能是你写脚本里面,没有使用 绝对路径 原因导致不执行 因为很有可能,你在使用命令不在PATH里面,所以要么将命令写一个绝对路径...,要么将命令路径加入到PATH变量里面去 建议:在写一个脚本时候,都要写追加一个日志,这样可以保证这个任务有据可查,再不执行时候,查看错误日志即可 任务计划备份 crontab -l

    2K90

    Linux 下如何实现 MySQL 数据库定时自动备份?

    而对于一些网站、系统来说,数据库就是一切,所以做好数据库备份是至关重要! 备份是什么? 为什么要备份?...1、查看磁盘空间情况: 既然是定时备份,就要选择一个空间充足磁盘空间,避免出现因空间不足导致备份失败,数据丢失恶果!...存储到当前磁盘这是最简单,却是最不推荐;服务器多块硬盘,最好是把备份存放到另一块硬盘上;有条件就选择更好更安全存储介质; 2、创建备份目录: 上面我们使用命令看出 / home 下空间比较充足,所以可以考虑在...# crontab -bash: crontab: command not found 如时没有安装 crontab,需要先安装它,具体步骤请参考: CentOS 下使用 yum 命令安装计划任务程序...第 5 列星期 0~6(0 表示星期天) 第 6 列要运行命令 下面是 crontab 格式: 分 时 日 月 星期 要运行命令 这里 crontab 文件条目的一些例子: 30 21 * *

    3K90

    初学乍练redis:两行shell脚本实现slowlog持久化转储(去重保留历史条目、时间戳格式化)

    追加slowlog条目并格式化输出文件 2. 去除重复条目并生成结果文件 3. 最终脚本文件 4....redis slowlog被设计成内存中一个先进先出队列结构,一旦容量被填满,新条目就会挤出旧条目。...本文介绍使用shell脚本将slowlog转储到普通文本文件设计实现。这个方案特点是简单直接,无需其它语言或环境支持,只要在Linux上编写几行简单shell脚本即可。...将命令部分每个分隔符(空白符)前加一个换行符,实现列转行,输出如下所示:  1) (integer) 89209 2) (integer) 2018-11-02 10:03:33 3) (integer...用“^  ”去掉原来以“1) (integer)”开头单行,输出其它行。 将最终结果存入结果文件。 3. 最终脚本文件         将处理步骤封装成shell函数,便于多实例调用

    1.1K20

    分享一次Linux任务计划crontab不执行问题排查过程

    朋友弄了一个小项目,要帮忙做下 Linux 系统运维,上线一段时间后,发现项目偶尔会挂掉导致服务不可用。...开发朋友一时之间也没空去研究项目奔溃根因,只好由我这个运维先写一个项目进程自拉起脚本,通过 Linux 任务计划每分钟检查一下进程是否存在来避免项目挂了没人管情况。 ?...直接执行成功,而放到 crontab 就失败,经验告诉肯定脚本环境变量问题了! ②、环境变量 于是在脚本里面载入环境变量: #!...③、系统邮件 经验告诉crontab 执行失败,如果没有屏蔽错误的话,会产生一个系统邮件, 位置在 /var/spool/mail/root 所以,crontab 里面的 2>&1 这个屏蔽错误先取消掉...一般来说,在 crontab 中建议使用 sh 或 bash 来执行 shell 脚本,避免因脚本文件执行权限丢失导致任务失败。

    2.6K30

    轻松使用crontab调度作业

    allow/deny文件由每行一个用户名构成。 2. crontab命令 通过crontab 命令,我们可以在固定间隔时间点执行指定系统指令或 shell脚本。...crontab 命令格式如下: crontab [-u user] file crontab [-u user] [ -e | -l | -r ] 参数说明: -u user:用来设定某个用户crontab...注意,如果不经意地输入了不带任何参数crontab命令,不要使用Control-d退出,因为这会删除用户所对应crontab文件中所有条目。代替方法是用Control-c退出。...cron从用户所在主目录,使用shell调用需要执行命令。...cron为每个shell提供了一个缺省环境,Linux下定义如下: SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=用户名 HOME

    72630

    shell编程菜鸟教程_java并发编程实战 pdf

    /bin/bash //执行代码 echo Hello World 赋予权限并执行: //赋予可执行权限 chmod +x a.sh //执行(调用/bin/bash执行a.sh脚本) ....:接收上一条命令返回状态码 返回状态码在0-255之间 $#:参数个数 *:或者@:所有的参数 $$:获取当前shell进程号(PID)(可以实现脚本自杀)(或者使用exit命令直接退出也可以使用...函数传递参数(可以使用类似于Java中args,args[1]代表Shell中$1) 函数返回值,只能是数字 函数调用: read read命令接收标准输入(键盘)输入,或者其他文件描述符输入...还以Bash为例,当以非login方式启动时,它会调用~/.bashrc,随后~/.bashrc中调用/etc/bashrc,最后/etc/bashrc调用所有/etc/profile.d目录下脚本。...当bash以login shell启动时,它会执行/etc/profile中命令,然后/etc/profile调用/etc/profile.d目录下所有脚本;然后执行~/.bash_profile,

    4.6K20

    计划任务后门 | Linux 后门系列

    crontab -u user 设定某个user计划任务(或许可以用高权限设置低权限用户计划任务以躲避检查) crontab -l 列出用户cron服务详细内容 ?...这个文件看着眼熟呀,跟 crontab -e 很像呀,仔细看,其实还是很多差异,比如语法上就有不同,这个文件比 crontab -e 多了一个user字段,所以可以确定 crontab -e 修改不是...可以看到,其中可执行文件其实就是一些shell脚本,说到这估计你在心里肯定是了一些想法,不着急哦,先揣着。 /etc/cron.d/ ? 我们看一看这两个文件是什么 ?...劫持系统默认计划任务调用可执行脚本 以 /etc/cron.daily/ 下文件为例 ? 找一个代码数最多进行篡改 ?...(因为命名问题,遇到过不执行情况) 脚本开头必须加上“#!/bin/bash”,否则run-parts调用不成功。

    6.8K50

    Linux下间隔多少秒 (即以秒为单位) 去执行某条命令或某个shell脚本操作方法

    说到定时任务就要用到crontab,通常来说,crontab最小单位是分钟级别,要想实现秒级别的定时任务,就要进行特殊设置了。..., 下面介绍三种方法来实现秒级别的定时任务执行: 第一种方法 写一个触发脚本,在触发脚本中使用死循环来解决此问题 [root@test ~]# cat kevin.sh #!...-e * * * * * /bin/bash -x /root/kevin.sh >/dev/null 2>&1 等待这个计划任务执行后,就将计划任务中条目删除或注释!...>> /root/test.log sleep 2 done 然后添加脚本执行权限, 写入crontab里每分钟执行一次 [root@test ~]# chmod 755 kevin.sh [root.../bin/bash echo "beijing is so good!" >> /root/test.log 添加脚本执行权限,并配置到crontab计划任务里(使用&& 或者 ;都是一样效果)。

    2.5K50

    linux下命令自动补全总结

    很多命令都会提供一个bash-complete脚本,在执行该命令时,敲tab可以自动补全参数,会极大提高生产效率。...docker命令自动补全 yum install docker后,会有一个文件: /usr/share/bash-completion/completions/docker ; 显然,该脚本是用于bash...,使得使用“Tab”键可以自动补全自定义shell函数,相关命令三个,compgen、complete和compopt。...COMP_TYPE:一个整数值,与触发调用补全函数时试图进行补全类型相对应,正常补全为“TAB”,连续输入制表符后补全列表为“?”,列出其它部分补全条目为“!”...COMPREPLY:一个数组变量,bash从这个变量中读取可编程补全所调用shell函数生成补全条目

    6.6K50

    初学乍练redis:两行shell脚本实现slowlog持久化转储

    追加slowlog条目并格式化输出文件 2. 去除重复条目并生成结果文件 3. 最终脚本文件 4....redis slowlog被设计成内存中一个先进先出队列结构,一旦容量被填满,新条目就会挤出旧条目。...本文介绍使用shell脚本将slowlog转储到普通文本文件设计实现。这个方案特点是简单直接,无需其它语言或环境支持,只要在Linux上编写几行简单shell脚本即可。...将命令部分每个分隔符(空白符)前加一个换行符,实现列转行,输出如下所示: 1) (integer) 89209 2) (integer) 2018-11-02 10:03:33 3) (integer...用“^ ”去掉原来以“1) (integer)”开头单行,输出其它行。 将最终结果存入结果文件。 3. 最终脚本文件 将处理步骤封装成shell函数,便于多实例调用

    1.3K40
    领券