Linux随记(八)

一、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 -ycd /DATA/apps
mkdir -p tools-nginx-1.24rz -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_modulemake -j 4 && make install #
cd /DATA/apps/tools-nginx-1.24/conf
mkdir -p vhostvi 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.hqwc.cn/news/525717.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode148题:排序链表(python3)

在数组排序中&#xff0c;常见的排序算法有&#xff1a;冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序等。 而对于链表排序而言&#xff0c;因为链表不支持随机访问&#xff0c;访问链表后面的节点只能依靠 next 指针从头…

2024-03-05 linux 分区老显示满,Use 100%,原因是SquashFS 是一种只读文件系统,它在创建时就已经被填满,所有空间都被使用。

一、这两天一直纠结一个问题&#xff0c;无论怎么修改&#xff0c;linux 分区老显示满&#xff0c;Use 100%&#xff0c;全部沾满。如下图的oem分区。 二、导致出现上面的原因是&#xff1a;SquashFS文件系统里的空间利用率总是显示为100%。 三、SDK里面也说明SquashFS文件系统…

昏暗场景增强-低照度增强-弱光增强(附代码)

引言 随着现代科技的发展&#xff0c;图像采集设备已经渗透到生活的方方面面&#xff0c;然而在昏暗场景、低照度或弱光条件下&#xff0c;图像的质量往往受到严重影响&#xff0c;表现为亮度不足、对比度低下、色彩失真以及细节丢失等问题。这类图像对于人眼识别和计算机视觉…

基于机器学习的网络入侵检测与特征选择及随机森林分类器性能评估(NSL-KDD数据集)

简介 本文将详细介绍如何利用Python和相关机器学习库对NSL-KDD数据集进行预处理&#xff0c;特征选择&#xff0c;并通过随机森林算法构建网络入侵检测模型。同时&#xff0c;还将展示如何计算并可视化模型的ROC曲线以评估其性能。 首先&#xff0c;我们导入了必要的库&#…

Java服务器-Disruptor使用注意

最近看了一下部署后台的服务器状况&#xff0c;发现我的一个Java程序其占用的CPU时长超过100%&#xff0c;排查后发现竟是Disruptor引起的&#xff0c;让我们来看看究竟为什么Disruptor会有这样的表现。 发现占用CPU时间超过100%的进程 首先是在服务器上用top命令查看服务器状…

300分钟吃透分布式缓存-23讲:Redis是如何淘汰key的?

淘汰原理 首先我们来学习 Redis 的淘汰原理。 系统线上运行中&#xff0c;内存总是昂贵且有限的&#xff0c;在数据总量远大于 Redis 可用的内存总量时&#xff0c;为了最大限度的提升访问性能&#xff0c;Redis 中只能存放最新最热的有效数据。 当 key 过期后&#xff0c;或…

专题一 - 双指针 - leetcode 202. 快乐数 | 简单难度

leetcode 202. 快乐数 leetcode 202. 快乐数 | 简单难度1. 题目详情1. 原题链接2. 基础框架 2. 解题思路1. 题目分析2. 算法原理3. 时间复杂度 3. 代码实现4. 知识与收获 leetcode 202. 快乐数 | 简单难度 1. 题目详情 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」…

geoserver+mapbox-gl 离线部署矢量切片地图服务学习笔记

geoserver安装 geoserver的安装包可以在官网下载Download - GeoServer&#xff0c;想要选择版本点击Archived找到指定版本进行下载http://geoserver.org/download/ &#xff08;如果网络不稳定&#xff0c;也可以直接使用下面的下载地址&#xff09; geoserver-2.15.0.rar资…

多线程-线程池原子性并发工具类

1.线程池 1.线程状态 虚拟机中线程的六种状态 新建状态&#xff08;NEW&#xff09; --创建线程 就绪状态&#xff08;RUNNABLE&#xff09; --start方法 阻塞状态&#xff08;BLOCKED&#xff09; --无法获得锁对象 等待状态&#xff08;WAITING&#xff09; …

观其大略之HybridCLR学习笔记

问题背景 1 现有热更方案的开发效率、性能没有到达极限&#xff0c;还有提升的空间 2 ios多平台政策导致热更新受限问题&#xff0c;ios禁止jit。根据我查找的资料&#xff0c;ios的代码段启动的时候就确定了&#xff0c;不能增加新的代码段。IOS封了内存&#xff08;或者堆&…

2024软件测试工具测评,总有一款适合你!

在软件开发周期中&#xff0c;测试是确保产品质量的关键环节。随着企业对于软件质量的要求日益提升&#xff0c;测试人员面临着前所未有的挑战&#xff0c;“工欲善其事必先利其器”&#xff0c;选择一款高效、实用的软件测试工具&#xff0c;不仅能够提升测试效率&#xff0c;…

【比较mybatis、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp操作数据】操作批量新增、分页查询(四)

orm框架使用性能比较 比较mybatis、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp操作数据 环境&#xff1a; idea jdk17 spring boot 3.0.7 mysql 8.0测试条件常规对象 orm 框架是否支持xml是否支持 Lambda对比版本编码方式mybatis☑️☑️3.5.4lambda xml 优化sq…