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 趟坑之路的主要内容,如果未能解决你的问题,请参考以下文章

linux 趟坑之路

在编程文档中,双冒号后跟等号 (::=) 是啥意思?

iOS后台下载趟坑

融云 RTC SDK 集成实现直播,趟坑之旅~~~

rocketmq搭建趟坑记

MAC M1 上python 环境搭建趟坑