pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:1306
发帖:99 篇
来自:保密
注册:2022-08-28 23:20:57
造访:2025-06-09 17:10:39
发帖:99 篇
来自:保密
注册:2022-08-28 23:20:57
造访:2025-06-09 17:10:39
[ 第 25 楼 ]
回复

④、数据类型转化
1、字符串转化为数字
案例1: 将日期中以0开头的数字字符串转换为数字
比如今日为2022-03-25, 如果想获取月份, 可以使用 echo $(date +%m) 或 echo `date +%m`, 将获取到字符串"03", 但我们想要去掉开头0的3, 翻遍date的api都没有找到.
这时候可以考虑使用数学运算将原字符串 与 一个数字0相加, 变相通过数学计算获取到整形的计算结果.
[hdfs@hadoop test]$ echo $(expr $(date +%m) + 0)
3
[hdfs@hadoop test]$ echo `expr $(date +%m) + 0`
3
[hdfs@hadoop test]$ hive --hivevar year=$(date +%Y) --hivevar month=`expr $(date +%m) + 0` -f /data/program/test_hive.hql
test_hive.hql中则可以使用上述动态传参的值:
ALTER TABLE ads.my_partition_table_test DROP IF EXISTS PARTITION(year=${hivevar:year}, month=${hivevar:month});
⑤、登录shell 与 非登录shell区别
登录shell:使用linux账户登录后执行的shell
非登录shell:不经登录,直接使用shell,如ssh 远程连接到主机后执行的shell
注意:
如果将环境变量配置信息,配置在/etc/profile中,对于非登录shell,则获取不到。
而对于/etc/profile.d/*.sh,则对于2种shell,都可以访问到。
二十五、程序开机自启动服务配置
Centos系统服务器脚本目录位置:/usr/lib/systemd/
其内部有系统(system)和用户(user)2个文件夹,如需要开机不登录即要求能执行的程序,在系统服务(system)里,即/usr/lib/systemd/system;
而如果需要用户登录之后才可以运行的程序,在用户服务(user)里,即/usr/lib/systemd/user。
这里以nginx服务开启自启为例:
[Unit]
Description=Nginx restart on Reboot
After=network.target
[Service]
Type=forking
User=nginx
Group=nginx
ExecStart=/etc/init.d/nginx start
ExecReload=/etc/init.d/nginx restart
ExecStop=/etc/init.d/nginx stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
参数说明:
Description:描述服务
After:描述本服务的上游依赖关系,即上游启动完毕后,才可以启动本服务
[Service]服务运行参数的设置
Type=forking是后台运行的形式
User服务启动用户
Group服务启动用户组
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:
[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]服务安装的相关设置,可设置为多用户
一般文件以644权限进行保存,如下:
[root@nn2 system]# ll frp.service
-rw-r--r-- 1 root root 266 Oct 29 11:50 frp.service
设置开机自启动命令:systemctl enable nginx.service
>> 如果查看systemctl启动服务的log信息?
Service启动之后, 如果想查询其详细日志信息, 可以使用类似tail的命令, 使用journalctl -f 可以来实时追踪日志.
使用journalctl可以查看使用systemctl启动的service,常用参数有两种, 如下:
①. 显示多个混合在一起的systemctl 服务日志, 一般刚启动完一个service时查看比较方便
journalctl -f
②. 只查看某一个具体的service服务的日志
journalctl -u 服务名
如:
2021-11-10 10:06:37 nn1 systemd: Started Bigdata KafkaManager.
2021-11-10 10:06:37 nn1 kafka-manager: This application is already running (Or delete /opt/software/kafka-manager-1.3.3.23/RUNNING_PID file).
2021-11-10 10:06:37 nn1 systemd: bigdata_kafkaManager.service: main process exited, code=exited, status=255/n/a
2021-11-10 10:06:37 nn1 systemd: Unit bigdata_kafkaManager.service entered failed state.
2021-11-10 10:06:37 nn1 systemd: bigdata_kafkaManager.service failed.
2021-11-10 10:06:46 nn1 bigdata_admin: root [/etc/systemd/system]2021-11-10 10:06:46 systemctl is-enabled bigdata_kafkaManager.service
2021-11-10 10:06:52 nn1 systemd: Reloading.
2021-11-10 10:06:53 nn1 systemd: [/run/systemd/generator.late/cloudera-scm-server.service:13] Failed to add dependency on +cloudera-scm-server-db.service, ignoring: Invalid argument
2021-11-10 10:06:53 nn1 systemd: [/etc/systemd/system/bigdata_kafkaManager.service:15] Unknown lvalue 'StartLimitIntervalSec' in section 'Service'
2021-11-10 10:06:53 nn1 bigdata_admin: root [/etc/systemd/system]2021-11-10 10:06:52 systemctl disable bigdata_kafkaManager.service
1、字符串转化为数字
案例1: 将日期中以0开头的数字字符串转换为数字
比如今日为2022-03-25, 如果想获取月份, 可以使用 echo $(date +%m) 或 echo `date +%m`, 将获取到字符串"03", 但我们想要去掉开头0的3, 翻遍date的api都没有找到.
这时候可以考虑使用数学运算将原字符串 与 一个数字0相加, 变相通过数学计算获取到整形的计算结果.
[hdfs@hadoop test]$ echo $(expr $(date +%m) + 0)
3
[hdfs@hadoop test]$ echo `expr $(date +%m) + 0`
3
[hdfs@hadoop test]$ hive --hivevar year=$(date +%Y) --hivevar month=`expr $(date +%m) + 0` -f /data/program/test_hive.hql
test_hive.hql中则可以使用上述动态传参的值:
ALTER TABLE ads.my_partition_table_test DROP IF EXISTS PARTITION(year=${hivevar:year}, month=${hivevar:month});
⑤、登录shell 与 非登录shell区别
登录shell:使用linux账户登录后执行的shell
非登录shell:不经登录,直接使用shell,如ssh 远程连接到主机后执行的shell
注意:
如果将环境变量配置信息,配置在/etc/profile中,对于非登录shell,则获取不到。
而对于/etc/profile.d/*.sh,则对于2种shell,都可以访问到。
二十五、程序开机自启动服务配置
Centos系统服务器脚本目录位置:/usr/lib/systemd/
其内部有系统(system)和用户(user)2个文件夹,如需要开机不登录即要求能执行的程序,在系统服务(system)里,即/usr/lib/systemd/system;
而如果需要用户登录之后才可以运行的程序,在用户服务(user)里,即/usr/lib/systemd/user。
这里以nginx服务开启自启为例:
[Unit]
Description=Nginx restart on Reboot
After=network.target
[Service]
Type=forking
User=nginx
Group=nginx
ExecStart=/etc/init.d/nginx start
ExecReload=/etc/init.d/nginx restart
ExecStop=/etc/init.d/nginx stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
参数说明:
Description:描述服务
After:描述本服务的上游依赖关系,即上游启动完毕后,才可以启动本服务
[Service]服务运行参数的设置
Type=forking是后台运行的形式
User服务启动用户
Group服务启动用户组
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:
[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]服务安装的相关设置,可设置为多用户
一般文件以644权限进行保存,如下:
[root@nn2 system]# ll frp.service
-rw-r--r-- 1 root root 266 Oct 29 11:50 frp.service
设置开机自启动命令:systemctl enable nginx.service
>> 如果查看systemctl启动服务的log信息?
Service启动之后, 如果想查询其详细日志信息, 可以使用类似tail的命令, 使用journalctl -f 可以来实时追踪日志.
使用journalctl可以查看使用systemctl启动的service,常用参数有两种, 如下:
①. 显示多个混合在一起的systemctl 服务日志, 一般刚启动完一个service时查看比较方便
journalctl -f
②. 只查看某一个具体的service服务的日志
journalctl -u 服务名
如:
2021-11-10 10:06:37 nn1 systemd: Started Bigdata KafkaManager.
2021-11-10 10:06:37 nn1 kafka-manager: This application is already running (Or delete /opt/software/kafka-manager-1.3.3.23/RUNNING_PID file).
2021-11-10 10:06:37 nn1 systemd: bigdata_kafkaManager.service: main process exited, code=exited, status=255/n/a
2021-11-10 10:06:37 nn1 systemd: Unit bigdata_kafkaManager.service entered failed state.
2021-11-10 10:06:37 nn1 systemd: bigdata_kafkaManager.service failed.
2021-11-10 10:06:46 nn1 bigdata_admin: root [/etc/systemd/system]2021-11-10 10:06:46 systemctl is-enabled bigdata_kafkaManager.service
2021-11-10 10:06:52 nn1 systemd: Reloading.
2021-11-10 10:06:53 nn1 systemd: [/run/systemd/generator.late/cloudera-scm-server.service:13] Failed to add dependency on +cloudera-scm-server-db.service, ignoring: Invalid argument
2021-11-10 10:06:53 nn1 systemd: [/etc/systemd/system/bigdata_kafkaManager.service:15] Unknown lvalue 'StartLimitIntervalSec' in section 'Service'
2021-11-10 10:06:53 nn1 bigdata_admin: root [/etc/systemd/system]2021-11-10 10:06:52 systemctl disable bigdata_kafkaManager.service

