每一条基本命令执行后都有一个返回码,该返回码是用?表示,如果想取出返回码则用$?得到返回码内容,执行成功的返回码是0,非0则是执行不成功,例如: if [ $? -ne 0 ];then
上一命令执行失败时的操作 else
上一命令执行成功时的操作
fi 例如linux中启动JBoss判断是否启动成功 service IMX_JBossAS start
if [$? -ne 0 ];then
echo "失败"
else
echo "成功"
fi
相关文章
- Redis --- redis事务和分布式事务锁-事务过程中失败有两种可能: Redis 命令只会因为错误的语法而失败(并且这些问题不能在入队时发现),或是命令中用在了错误类型的键上面,所以如果在生产环境中你使用的正常命令,那么在 Redis 事务中,是不会出现错误而导致回滚的。 来自文档:Redis commands can fail only if called with a wrong syntax... 事务执行一半,Redis宕机。如果 Redis 服务器因为某些原因被管理员杀死,或者遇上某种硬件故障,那么可能只有部分事务命令会被成功写入到磁盘中。如果 Redis 在重新启动时发现 AOF 文件出了这样的问题,那么它会退出,并汇报一个错误。使用redis-check-aof程序可以修复这一问题:它会移除 AOF 文件中不完整事务的信息,确保服务器可以顺利启动 注意: 若在事务队列中存在命令性错误(类似于java编译性错误),则执行EXEC命令时,所有命令都不会执行 若在事务队列中存在语法性错误(类似于java的1/0的运行时异常),则执行EXEC命令时,其他正确命令会被执行,错误命令抛出异常。 Redis 官网也解释了自己为啥不支持回滚。简单来说就是 Redis 开发者们觉得没必要支持回滚,这样更简单便捷并且性能更好(回滚还需要解决回滚事务覆盖的问题)。Redis 开发者觉得即使命令执行错误也应该在开发过程中就被发现而不是生产过程中。
- which 命令在Linux中是一个快速查找可执行文件位置的工具-概念
- CVE-2024-3094:Linux生态供应链攻击-CVE-2024-3094:供应链攻击? 一个潜伏3年只为通杀的漏洞,今天更新了一个CVE漏洞,XZ-utils5.6.0/5.6.1版本后门风险(CVE-2024-3094)这个后门并非作者无意加入的,也不是引入存在后门的库文件导致的问题,而是有人经过三年的潜伏,积极参与该项目的维护,在获得了直接commit代码的权限以后将后门代码注入其中。 这个代码一共存活了不到2个月的时间,发现者是PostgreSQL 开发人员兼软件工程师 Andres Freund 意外发现的,在观察到 liblzma(xz 包的一部分)Debian sid(使用 ssh 登录占用了大量 CPU,valgrind 错误,然后找见了上游 xz 存储库和 xz tarball 已被后门。 幸运的是,xz 5.6.0 和 5.6.1 尚未被 Linux 发行版广泛集成,而且大部分是在预发行版本中。 但是kali linux如果每周更新或者最近3月26到29号之间更新了,不好意思。 根据kali官方说法希望更新, 首先我们apt-cache policy liblzma5 更新命令 sudo apt update && sudo apt install -y --only-upgrade liblzma5 更新 难的追一回滚动更新就这样玩吗?看来以后也不要追最新的。 当然我们还可以cat /var/log/apt/history.log 查看更新时间和都更新了哪些内容! 附: 各大linux系统可以查看自己对应的系统,查看官网说明 比如我的kali可以直接在https://www.kali.org/blog/about-the-xz-backdoor/看到 当然了这个供应链后门只能说差一点就完美成功,因为他写的有bug在sshd运行的时候直接cpu飙升,引起了研究员的注意,否则如果在发行版中大规模集成,估计可以造成linux的一个通杀,现在只是在预发行版中,但是更新快的比如kali linux中如果滚动更新那么就会被影响到。 参考链接:
- 嵌入式学习37-TCP并发模型-有限 2.IO模型: 1.阻塞IO: 没有数据到来时,可以让任务挂起 节省CPU资源开销,提高系统效率 2.非阻塞IO: 程序未接收到数据时一直执行 效率很低 3.异步IO 只能绑定一个文件描述符用来 读取数据 4.多路复用IO select 1.select监听的集合中的文件描述符有 上限限制 2.select有 内核层 向 用户层数据空间 拷贝 的过程,占用系统资源开销 3.select必须 轮询检测 产生 事件 的文件描述符 4.select 只能工作 在 水平触发 模式(低速模式) 无法工作 在 边沿触发 模式(高速模式) poll (监听的集合中的文件描述符有 没有上限限制) 1.poll有 内核层 向 用户层 数据空间 拷贝 的过程,占用系统资源开销 2.poll必须 轮询检测 产生 事件 的文件描述符 3.poll 只能工作在水平触发模式(低速模式) 与select相同 无法工作在边沿触发(高速模式) 3.函数接口: 1.select int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 功能: select 监听 文件描述符集合 中 是否 有文件描述编程 ready状态 select 监听 文件描述符集合 中 ,若有状态 , 将没有ready状态的T除 若无状态,将阻塞继续等待 参数: nfds: 最大文件描述符的值 +1 readfds: 读 文件描述符集合 writefds: 写 文件描述符集合 exceptfds: 其余 文件描述符集合 timeout: 等待的时长 NULL 一直等待(超时处理) 返回值: 成功 返回 文件描述符集合中 的 文件描述符个数 失败 返回 -1 void FD_CLR (int fd, fd_set *set); 功能: 将文件描述符 fd 从集合中清除
- Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件
- js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式
- js进阶 12-8 如何知道上一个函数的返回值是什么(如何判断上一个函数是否执行成功)
- shell脚本中判断上一个命令是否执行成功
- [shell]上一个命令执行完成,才执行下一个操作 | shell脚本中判断上一个命令是否执行成功
- Bash Linux -测试mysql命令是否成功执行