Linux随记(八)

news2025/3/1 11:02:37

一、crontab运行shell脚本,py脚本 (注意事项)

情景描述:
目前有个sh脚本他最初大致内容是。
cat t11.sh

#!/bin/bash
source /etc/profile 

/bin/python3  /tmp/1.py
sh             /tmp/1.sh
echo -e "$(date +%F)" >> /tmp/t11.log

############问题是
crontab调用他, 为啥py脚本没执行?     手动 sh t11.sh是正常执行的。
crontab | grep t11 是能看到每次的执行记录的

#排查思路:
1、都使用绝对路径  (指令写绝对路径) (shell/py 代码内容,涉及文件的操作)  他默认的pwd是在执行用户的家目录
2、都给x可执行权限
3、开头 source /etc/profile
4、crontab 写查看调试日志,比如   * * * * * sh /tmp/11.sh > /tmp/11.log 2>&1   (最初没考虑到py脚本内容的绝路路径。注意Py脚本里面try catch的书写)

5、使用set -xecho $? , sh -x  xxx.sh排查



5、创建一个简单的py程序,将hello world 输出到个record.txt

二、bclinux欧拉21.10编译安装nginx1.24.0

yum -y install gcc gcc-c++  pcre pcre-devel  openssl openssl-devel  zlib zlib-devel
yum install gd-devel -y

cd /DATA/apps
mkdir -p tools-nginx-1.24

rz -bey    #上传nginx-1.24.0.tar.gz       (wget https://nginx.org/download/nginx-1.24.0.tar.gz)

tar -xf nginx-1.24.0.tar.gz
cd nginx-1.24.0


./configure  --prefix=/DATA/apps/tools-nginx-1.24 --with-pcre --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_image_filter_module --with-mail --with-threads --with-mail_ssl_module --with-stream_ssl_module


make -j 4 && make install 

#
cd /DATA/apps/tools-nginx-1.24/conf
mkdir -p vhost

vi nginx.conf
修改
user root;
worker_processes  8;
#在http{}块里加入
    include       vhost/*.conf; 
	
	
	
#启动ngx
cd /DATA/apps/tools-nginx-1.24/sbin  && ./nginx -t   && ./nginx

三、curl指令内容带变量的写法(注意单、双引号,转义符号)

问题描述:最初的curl写法,此时最后的–form 'conditions 里面的 $line是没有被转义的。就算被其旁边的双引号包裹。 发现结果值是空

$line="测试xxx";

url=$(curl -s --location --globoff 'http://[xx:1a04]:2040/test/findPage.ilf' \
--header 'Authorization: Bearer eyJxxxxx' \
--form 'tableparam="[{\"name\":\"sEcho\",\"value\":3},{\"name\":\"iColumns\",\"value\":13},{\"name\":\"sColumns\",\"value\":\"\"},{\"name\":\"iDisplayStart\",\"value\":0},{\"name\":\"iDisplayLength\",\"value\":50},{\"name\":\"mDataProp_0\",\"value\":\"taskId\"},{\"name\":\"mDataProp_1\",\"value\":\"taskId\"},{\"name\":\"mDataProp_2\",\"value\":\"taskId\"},{\"name\":\"mDataProp_3\",\"value\":\"taskName\"},{\"name\":\"mDataProp_4\",\"value\":\"taskType\"},{\"name\":\"mDataProp_5\",\"value\":\"cronTab\"},{\"name\":\"mDataProp_6\",\"value\":\"inUse\"},{\"name\":\"mDataProp_7\",\"value\":\"ifFailRestart\"},{\"name\":\"mDataProp_8\",\"value\":\"ifFailRestartDelay\"},{\"name\":\"mDataProp_9\",\"value\":\"isSendAlarm\"},{\"name\":\"mDataProp_10\",\"value\":\"systemInternalId\"},{\"name\":\"mDataProp_11\",\"value\":\"taskIdMeta\"},{\"name\":\"mDataProp_12\",\"value\":\"taskGroupName\"}]"' \
--form 'conditions="[{\"name\":\"taskName\",\"value\":\"$line\"}]"')

#最初的写法:
--form 'conditions="[{\"name\":\"taskName\",\"value\":\"$line\"}]"'

#错误的写法1 (会出现报错的写法)
--form \"conditions="[{\"name\":\"taskName\",\"value\":\"${line}}]\"\" 

#错误的写法2 (去掉转义符号。)
--form 'conditions="[{"name":"taskName","value":'"$line"'}]"'
#不能把它的转义号给去掉,否则报错:
+ ret='{"timestamp":"2024-03-08T03:40:49.502+0000","status":500,"error":"Internal Server Error","message":"Found starting '\''['\'' but missing '\'']'\'' at the end. at character 0 of null","path":"/xxx/findPage.ilf"}'
#正确的写法:
 --form 'conditions="[{\"name\":\"taskName\",\"value\":\"'"$line"'\"}]"' 
#参考 年薪28大佬     
你都用单引号了,为什么还要把双引号转义。 <font color=red> 外面单引号的话,内部变量就用单引号加双引号'aaa'"$arg"''  </font>
你上面那些没有必要的转义去掉,单引号里面不需要再转义了。
(但其实上面的话有对有错。  但是在这里使用 \x22     \x27没有效果的。还有有次调试过程出现两个 form conditions=

再再再谈单双引号:
在这里插入图片描述

#by malongshuai
bash的引号是从前向后逐一寻找配对,所以""$a""完全等价于哆勒a,他左边一对引号配对了,说明没有引号包围哆勒a 
只有一种情况是从左到右逐一配对的例外,遇到命令替换的时候
命令替换是独立的新bash进程,先于引号解析移除的阶段,所以命令替换里的命令先被解析执行,所以命令替换外的双引号不会和命令替换里的双引号配对,命令替换里的引号也不影响命令替换外的引号


#后知后觉的参考:
https://stackoverflow.com/questions/13341955/how-to-pass-a-variable-in-a-curl-command-in-shell-scripting
https://www.cnblogs.com/XY-Heruo/p/16310409.html
https://blog.csdn.net/weixin_42808782/article/details/125296518 《如何在 shell 脚本中的 curl 命令中传递变量》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1504276.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言指针、数组学习记录

指针 指针是什么 数据在内存中存放的方式 声明一个变量int i 3;&#xff0c;那么在内存中就会分配一个大小为4字节&#xff08;因为int类型占4字节&#xff09;的内存空间给变量i&#xff0c;这块内存空间存放的数据就是变量i的值。 换句话说就是&#xff0c;在内存中给变…

MySQL--优化(索引)

MySQL–优化&#xff08;索引篇&#xff09; 定位慢查询SQL执行计划索引 存储引擎索引底层数据结构聚簇和非聚簇索引索引创建原则索引失效场景 SQL优化经验 索引 索引&#xff08;index&#xff09;是帮助 MySQL 高效获取数据的数据结构&#xff08;有序&#xff09;。在数据…

【记录37】VueBaiduMap 踩坑一

截图 错误 Error in callback for watcher “position.lng”: “TypeError: Cannot read properties of undefined (reading ‘setPosition’)” 解释 回调观察程序“content”时出错&#xff1a;“TypeError:无法读取未定义的属性&#xff08;读取’setContent’&#xff09;”…

一文掌握:B端系统表单页的作用、组件、设计要点,另附大量案例

Hi&#xff0c;我是贝格前端工场&#xff0c;本篇分享表单页该如何设计&#xff0c;读罢此文让你对表单页有全方位的认识&#xff0c;欢迎点赞评论转发&#xff0c;有需求请私信我们。 一、表单页是什么 表单页是指在Web应用程序中用于收集和提交用户输入数据的页面。它通常由…

基于J2EE的在线考试系统设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 Java简介 3 1.2 JSP技术 3 1.3 MySQL数据库 4 1.4 B/S结构 4 1.5 本章小结 4 2 系统分析 5 2.1 需求分析 5 2.2 可行性分析 6 2.2.1 技术可行性 6 2.2.2 操作可行性 6 2.2.3 经济可行性 7 2.2.4 法律可行性 7 2.3 系统性能…

邓保康 App 技术支持

邓保康APP功能简介&#xff1a; 这是一款创新&#xff0c;稳定的商业购物型平台app&#xff0c;涵盖同城门店&#xff0c;便捷团购等业务需求。 如果使用过程中有任何疑问可以在帖子中提问&#xff0c;我们会第一时间进行答复和处理。 获得支持&#xff1a; 邮件&#xff1a…

kettle入门一 安装与基本使用

一、kettle概述 1、什么是kettle Kettle是一款开源的ETL工具&#xff0c;纯java编写&#xff0c;可以在Window、Linux、Unix上运行&#xff0c;绿色无需安装&#xff0c;数据抽取高效稳定。 2、Kettle工程存储方式 &#xff08;1&#xff09;以XML形式存储 &#xff08;2&…

Axure基础 各元件的作用及介绍

图像热区 增加按钮或者文本的点击区域&#xff0c;他是透明的&#xff0c;在预览时看不见。 动态面板 用来绘制一下带交互效果的元件&#xff0c;他是动态的&#xff0c;如轮播图&#xff0c;一个动态面板里可以有多个子面板&#xff0c;每一个子面板对应着不同的效果。 他…

像SpringBoot一样使用Flask - 4.拦截器

接上文《像SpringBoot一样使用Flask - 3.蓝图路由Blueprint》&#xff0c;我们已经整理了一个干净的"启动类"&#xff0c;现在要加入一些拦截器&#xff0c;为了方便统一管理。 一、常用的拦截器 # 拦截器 app.before_request def handle_before_request():"&qu…

文献阅读:DEA-Net:基于细节增强卷积和内容引导注意的单图像去雾

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;DEA-Net&#xff1a;基于细节增强卷积和内容引导注意的单图像去雾1、研究背景2、方法提出3、相关知识3.1、DEConv3.3、多重卷积的…

Consul(安装,服务注册与发现,服务配置与动态刷新,配置持久化)

1.下载安装Consul 下载地址:Install | Consul | HashiCorp Developer 解压后只有一个.exe文件&#xff0c;运行后在该文件路径下输入consul --version 启动consul开发模式:consul agent -dev 访问localhost:8500进去consul主页 2.服务注册与发现 官方配置手册:Quick Start :…

进程控制(二) 进程等待与进程替换

目录 一、进程等待 理解进程等待 演示进程等待 获取进程的status 进程等待接口讲解 wait用法​ waitpid用法 等待多进程 基于非阻塞调用的轮询式检测 二、进程程序替换 excel接口 程序替换演示 单进程程序替换 多进程程序替换 程序替换原理 单进程程序替换 多…

Web Worker:JavaScript的后台任务解决方案

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

阿里云服务器ECS u1实例2核4G5M带宽优惠价199元/年性能测评

阿里云服务器ECS u1实例&#xff0c;2核4G&#xff0c;5M固定带宽&#xff0c;80G ESSD Entry盘优惠价格199元一年&#xff0c;性能很不错&#xff0c;CPU采用Intel Xeon Platinum可扩展处理器&#xff0c;购买限制条件为企业客户专享&#xff0c;实名认证信息是企业用户即可&a…

每日OJ题_牛客HJ60 查找组成一个偶数最接近的两个素数

目录 牛客HJ60 查找组成一个偶数最接近的两个素数 解析代码 牛客HJ60 查找组成一个偶数最接近的两个素数 查找组成一个偶数最接近的两个素数_牛客题霸_牛客网 解析代码 #include <cmath> #include <iostream> using namespace std; bool isPrime(int n) {for (…

STM32H750片外QSPI启动配置简要

STM32H750片外QSPI启动配置简要 &#x1f4cd;参考信息源&#xff1a;《STM32H750片外Flash启动(W25Q64JVSIQ)》&#x1f516;本例程基于Keil MDk开发平台。&#x1f341;配置框架&#xff1a; ✨为什么使用要使用QSPI启动方式 不管对于STM32H7系列单片机&#xff0c;还是其他…

BC134 蛇形矩阵

一&#xff1a;题目 二&#xff1a;思路分析 2.1 蛇形矩阵含义 首先&#xff0c;这道题我们要根据这个示例&#xff0c;找到蛇形矩阵是怎么移动的 这是&#xff0c;我们可以标记一下每次移动到方向 我们根据上图可以看出&#xff0c;蛇形矩阵一共有两种方向&#xff0c;橙色…

解决ChatGPT发送消息没有反应

ChatGPT发消息没反应 今天照常使用ChatGPT来帮忙码代码&#xff0c;结果发现发出去的消息完全没有反应&#xff0c;即不给我处理&#xff0c;也没有抱任何的错误&#xff0c;按浏览器刷新&#xff0c;看起来很正常&#xff0c;可以查看历史对话&#xff0c;但是再次尝试还是一…

一分钟了解遥感中卫星、传感器、波段及数据之间的关系

感是利用卫星、飞机或其他载具上的传感器对地球表面进行观测和测量的科学技术。以下是一些常见的遥感相关术语&#xff1a; 卫星&#xff08;Satellite&#xff09;&#xff1a;在遥感中&#xff0c;卫星是指绕地球轨道运行的人造卫星&#xff0c;其主要任务是携带各种传感器从…

qt+opencv人脸人眼检测识别

项目运行涉及到opencv库&#xff0c;以及haarcascade_frontalface_default.xml和haarcascade_eye_tree_eyeglasses.xml。qt配置opencv可见先前文章&#xff0c;另外这两份OpenCV 中用于眼睛检测的级联分类器xml文件&#xff0c;是我在网上下载的。 把要使用到的文件都放到当前…