linux系统及shell常用命令

本文列举了一系列用于Linux系统管理的命令,包括查看系统信息、硬件时间、CPU核数、磁盘IO、网络状态、SSH登录日志、文件编码转换以及进程管理。此外,还介绍了如何使用shell脚本进行自动化任务,如检查参数、循环执行等,并涉及到了FTP和SFTP的文件传输操作。
摘要由CSDN通过智能技术生成

主机系统:

linux 乱码后解码:
echo -e '\xf'
查看占用端口:
netstat -anp |grep 9200
查看主机硬件时间:
hwclock -r
查看cpu核数:
nproc    (或 cat /proc/cpuinfo|grep processor|wc -l)
查看系统:
cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
查看linux操作系统:
uname -a
查看内核版本:
cat /proc/version

unix时间戳转换为普通时间:
date -d @1438617600 "+%Y-%m-%d %H:%M:%m"

获取当前时间戳
10位:date +%s
13位(到毫秒):date +%s%3N

查看主机硬件时间:
hwclock -r


--->>>ssh登录日志:
/var/log/secure
查看ssh失败登录记录:
lastb|more
--->>>磁盘IO
查看磁盘:
iostat -x 1 2
 iotop
--进程号,磁盘读取量,磁盘写入量,IO百分比,涉及到的命令
命令实时监测网络的状态:
dstat -n

创建软连接(/data/aaa是实际目录,/root/aaa软连接目录):
ln -s  /data/aaa  /root/aaa

#####-->>设置并查看linux主机账号及密码有效期
--注:cdp/user1为linux主机账号,操作需要root或sudo

--设置账号过期时间: 
usermod -e 2023-05-21 cdp
或:chage -E "2023-05-21" cdp
--设置账号不过期:
chage  -E -1 user1
--设置账号密码有效期: 
chage -M 90 cdp
--设置用户账号和密码永不过期:
chage -m 0 -M 99999 -E -1 user1
--查看账号及密码有效期:
chage -l cdp 

--锁定账号:
usermod -L cdp
--解锁账号:
usermod -U cdp
--查看是否被锁定:
passwd --status cdp

--修改密码
passwd user1
或:
sudo sh -c 'echo "user1@2023" | passwd --stdin user1'
暴力修改密码
sudo sh -c 'echo "user1:user1@2023" |chpasswd'

shell中常用命令

按大小排序,列出当前目录下的文件(包含隐藏文件):
 ls -lart |awk '{print $5,"--文件大小:",$5/1024/1024/1024,"G", "--生成时间:",$6,$7,$8,"--文件名:" $9}'|sort -nr|less
 
 du -b *|awk '{print $1,"--文件大小:",$1/1024/1024/1024,"G", "--文件名:" $2}'|sort -nr|more
文件转码:
iconv -f GBK -t UTF-8 1.csv -o z_1.csv
获取dasda的MD5值:
echo -n dasda | md5sum
8f4031bfc7640c5f267b11b6fe0c2507  -
sftp指定端口连接:
sftp -oPort=10022 HA@10.1.2.3:/HA
ftp方式连接:
ftp   10.1.2.3  21

ftp -i -n 10.217.8.72
user ftpuser59 xq4wis1mxeRZ

zip带密码解压缩到指定目录:
unzip -P passwd123 -o aaa.zip -d /data/

##############awk
查询文件的前30列:
 cat a.txt|awk -v FS=\| -v OFS=\| '{NF=30}1'|more
 按大小排序,列出当前目录下的文件(包含隐藏文件):
ls -lart  |awk '{print $5,"--文件大小:",$5/1024/1024/1024,"G", "--生成时间:",$6,$7,$8,"--文件名:" $9}'|sort -nr|less
#awk列出文件对第一列求和
awk '{sum+=$1} END {print "Sum = ", sum/1024/1024/1024,"G"}' 
#awk查询第二列内容如果是abc,输出第四列内容
cat /data/a.txt|awk -F "|" '{if ($2=="'abc'") print $4}'
cat /data/a.txt|awk -F "|" '{if ($11=="''") print $11"空"}'|wc -l  --(统计文件第11列为空的条数)
##筛选某列等于固定值时,输出所有列
cat a.csv|awk -F "\`" '{if ($1=="aa" && $2=="bb" && ($3=="bb" || $3=="dd")) { print }}'|less
截取,等于
|awk -v FS="Ж" -v OFS="Ж" '{if (substr($18,1,13)=="2023-02-09 10") $18=$18;else $18="nodata"}1'
指定文件分隔符查询和指定分隔符输出
awk -v FS="," -v OFS="@@" '{print $1,$3}' test.txt
统计文件以“|”分割有多少列:
cat a.csv | awk -v FS="|" '{print NF}'
awk根据前四列,统计文本重复行数:
 cat a.csv| awk -F "|" '{a[$1,$2,$3,$4]++}END{for(i in a){print i,a[i] | "sort -k 1"}}'

##########find
查询log目录下60分钟前生成的文件(60分钟内的用-60)
find /data/log -type f -mmin +60
(查询1天前并删除:
find /data/log  -type f -mtime +0|xargs /bin/rm  
或:find /data/log  -type f -mtime +0 -exec rm -rf {} \; &
或:find /data/log  -type f -mtime +0 -delete
查询/data目录下权限为640的文件,修改为644
find /data/ -perm 640 | xargs -i chmod 644 {}

##############sed
对文件的添加表头:
sed -i "1i\表头内容" /data/a.txt
回车换/n :
sed -i ":a;N;s/\n/\\\n/g;ta"  a.txt
##sudo echo 执行示例:
sudo sh -c 'echo "*        soft    nofile           524288" >>/etc/security/limits.conf'
##sed在第10行插入一行内容
sed -i '10a abcde' iptables


zip加密压缩
zip -rP Qwe#2024  data_2024022809.zip data

转换编码:
GBK转为UTF-8
   iconv -f GBK -t UTF-8 aaa.txt -o aaa_UTF.txt

判断文件是否存在即文件大小,是否为0
if [ ! -f "/data/file.csv" ] || [ ! -s "/data/file.csv" ];then
 echo "文件不存在或大小为0,不共享!"
else 
 echo "文件正常,开始共享"
fi

shell脚本常用代码片

######检查shell是否带入一个参数(简单的00~23点的循环):
#!/bin/bash
if [ -z $1 ];then
		echo "请输入日期参数! eg:20230101"
		exit 1
else
  data_day=$1
fi
data_day=$1
	for hour in $(seq -w 00 23)
	do
	data_time=${data_day}${hour}
echo "sh  /data/script/test.bash ${data_time}"
	done
##执行测试如下:
[root@bigdata01 script]# sh a.sh 
请输入日期参数! eg:20230101
root@bigdata01 script]# sh a.sh 20230101
sh  /data/script/test.bash 2023010100
sh  /data/script/test.bash 2023010101
sh  /data/script/test.bash 2023010102
sh  /data/script/test.bash 2023010103
sh  /data/script/test.bash 2023010104
sh  /data/script/test.bash 2023010105
sh  /data/script/test.bash 2023010106
sh  /data/script/test.bash 2023010107
sh  /data/script/test.bash 2023010108
sh  /data/script/test.bash 2023010109
sh  /data/script/test.bash 2023010110
sh  /data/script/test.bash 2023010111
sh  /data/script/test.bash 2023010112
sh  /data/script/test.bash 2023010113
sh  /data/script/test.bash 2023010114
sh  /data/script/test.bash 2023010115
sh  /data/script/test.bash 2023010116
sh  /data/script/test.bash 2023010117
sh  /data/script/test.bash 2023010118
sh  /data/script/test.bash 2023010119
sh  /data/script/test.bash 2023010120
sh  /data/script/test.bash 2023010121
sh  /data/script/test.bash 2023010122
sh  /data/script/test.bash 2023010123

#############while判断文件等待
while true
do
hdfs_file_sum=`hadoop fs -ls -d ${source_data_dir}|wc -l`
# echo $hdfs_file_sum
if [ $hdfs_file_sum -eq 1 ]
then
 echo "${sftp_data}数据源已经生成,开始get文件"
 ##cmd
 #退出循环
  break
 else 
  echo "[`date "+%Y-%m-%d %H:%M"`]数据源:${source_data_dir} 未生成,等待10分钟..."
  sleep 600
fi
done

############定义一个sftp上传函数--(使用expect方法)
sftp_cmd_put()
{
        local log_file=${main_dir}/log/${sftp_data}.log
    /usr/bin/expect <<EOF >>${log_file}
    set timeout -1
    spawn sftp ${sftp_user}@${sftp_ip}:${sftp_dir}
    expect {
        "(yes/no)?"
        {
            send "yes\n"
            expect "*password:" { send "${sftp_passwd}\n"}
        }
        "*assword:"
        {
            send "${sftp_passwd}\n"
        }
    }
    expect "sftp>"
    send "lcd ${local_data_dir}\n"
    expect "sftp>"
    send "$*\n"
    expect "sftp>"
    send "exit\n"
    expect eof
EOF
}
#调用函数
sftp_cmd_put mput ${sftp_data}_${data_time}.csv

########定义一个ftp上传函数
ftp_put_cmd(){
ftp -v -n 10.217.8.72 <<EOF
quote USER user23
quote PASS passwd123
binary
prompt
passive off
cd /data/
lcd ${data_dir}/
$*
quit
EOF
}

ftp_put_cmd_ddd(){
lftp -u "user123","pass123" sftp://10.11.22.33<<EOF
cd /data1/data_dir/
$*
bye
EOF
}
##调用函数
ftp_put_cmd mput abc_${dir_time}*
ftp_put_cmd_ddd put /data/abc_${dir_time}*


hdfs
刷新分区:
msck repair table table_name;

yarn
查看某个作业的详细日志
yarn logs -applicationId application_12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值