linux 趟坑之路
Posted 河南骏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 趟坑之路相关的知识,希望对你有一定的参考价值。
1.linux合并多个csv文件到一个文件
cat a.csv <(tail +2 b.csv) > c.csv
上面这条命令就是将a.csv和b.csv合并到一个c.csv文件,其中a.csv是全部数据,b.csv是从第2行到最后的数据( 命令为 <(tail +2 x.csv) ),即去掉表头的数据。
>是覆盖写,>>是追加写
2.Linux shell scripts报错
另外shell脚本报错,Syntax error: "(" unexpected ,是因为.sh 文件中执行错误
解决办法:
发现 ubuntu 模式使用的是 dash 模式,如果不想报错使用 bash 模式
可使用命令 bash xxx.sh 或者 将脚本第一行改为 #!/bin/bash,执行./example.sh也可以
3.crontab没有执行成功,手动执行是OK
手动执行OK,说明shell脚本是没问题,crontab 有问题。
经排查发现原因1是环境变量问题,
解决方法是:
在开头部分添加:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH
注意,没有$,这里shell中默认把变量值当作字符串。
shell变量是一种很“弱”的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义。所以若要进行数学运算,必须使用一些命令例如let、declare、expr、双括号等。shell变量可分为两类:局部变量和环境变量。局部变量只在创建它们的shell中可用。而环境变量则可以在创建它们的shell及其派生出来的任意子进程中使用。有些变量是用户创建的,其他的则是专用shell变量。变量名必须以字母或下划线字符开头。其余的字符可以是字母、数字(0~9)或下划线字符。任何其他的字符都标志着变量名的终止。名字是大小写敏感的。给变量赋值时,等号周围不能有任何空白符。为了给变量赋空值,可以在等号后跟一个换行符。用set命令可以查看所有的变量,unset var命令可以清除变量var,var相当于没有定义过。readonly var可以把var变为只读变量,定义之后不能对var进行任何更改。对shell变量的引用方式很多,用这些方式可以方便的获取shell变量的值,变量值的长度,变量的一个字串,变量被部分替换后的值等等。
排查cron运行日志发现原因2是(/var/log/syslog)发现是:No MTA installed, discarding output
原因是cron把屏幕输出都发送到email了,而当前环境并未安装email server,于是系统报错,解决方面就是不要直接向屏幕输出内容,而是重定向到一个文件。
具体就是在crontab -e中在定时任务的shell脚本后面重定向一个文件,比如 添加“ >> /tmp/cron_log.txt”
最近还是发现定时任务有部分不成功,网上查到的方法,测试中。。。
linux系统用户下的crontab任务不执行问题处理_Running-小猛的博客-CSDN博客_linuxcrontab不执行 解决sh定时脚本不执行的问题
https://jingyan.baidu.com/article/bea41d432d4967f4c51be68a.html 修改 /etc/pam.d/crond 解决权限问题
4、linux查看使用内存最多的进程
ps -aux|head -1;ps -aux|sort -k4nr|head -10
5、linux查找当前开始n天之前的文件并删除
find target_directory -type f -name "*.csv" -mtime +n -exec rm \\;
6、linux查找size 0 文件,并删除
1: 查看
find . -name "*" -type f -size 0c
2:删除
find . -name "*" -type f -size 0c | xargs -n 1 rm -f
用这个还可以删除指定大小的文件,只要修改对应的 -size 参数就行
7、查看linux进程的占用资源情况
1.CPU占用最多的前10个进程:
ps auxw|head -1;ps auxw|sort -rn -k3|head -10
2.内存消耗最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k4|head -10
3.虚拟内存使用最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k5|head -10
8、删除目标文件夹指定后缀的文件
1.首先,进入需要删除文件的目标文件夹
2.比如要删除当前文件夹下所有的.png文件,运行以下命令:
find . -name "*.png" | xargs rm -rf
以上是关于linux 趟坑之路的主要内容,如果未能解决你的问题,请参考以下文章