Linux文件删除,但是磁盘空间没有释放

Linux 磁盘空间总是报警,查到到大文件,删除之后,df看到磁盘空间并没有释放。

查找了下发现系统对rm进行了alias ,因为Linux对删除操作没有回收站机制,对rm操作进行了自定义,对删除文件进行移动到/tmp 目录里面。

又对/temp删除 但是还是没有发现磁盘冲击释放

执行

1
lsof | grep deleted

发现有大量刚刚删除文件的进程存在,通过kill -9 关闭进程(或者重启进程) OK
参考 https://www.cnblogs.com/xd502djj/p/6668632.html

Nginx中include其他配置文件

/usr/local/nginx/conf/nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#user  nobody;
worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

log_format mylog_format '$remote_addr|$remote_user|$time_local'
'$request|$status|$bytes_sent'
'$http_referer|$http_user_agent|$gzip_ratio'
'#$bytes_sent|$connection|$connection_requests|$msec|$pipe|$request_length|$request_time|$status|$time_iso8601|$time_local';

access_log logs/access.log mylog_format;

server {
listen 80;
location / {
proxy_pass http://127.0.0.1:8181;
}
}

server {
listen 443;
client_max_body_size 5M;
server_name api.dict123.cn;
ssl on;
ssl_certificate cert/1638702783821.pem;
ssl_certificate_key cert/1638702783821.key;
ssl_session_timeout 5m;
ssl_ciphers EBDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:DIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://132.232.74.114:80;
}
}

include /usr/local/nginx/conf/test1.conf;

}

如果test1.conf文件中不指定server_name,在使用nginx -s reload命令的时候,提示

1
nginx: [warn] conflicting server name "" on 0.0.0.0:80, ignored

这个时候需要在test1.conf的配置文件中加上server_name的配置,配置如下:

/usr/local/nginx/conf/test1.conf

1
2
3
4
5
6
7
8
9
10
11
server {
listen 80;
server_name hohode.com;
location /test1 {
alias /data/pserver/;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
charset utf-8,gbk;
}
}

CDH5 Hive on Spark搭建

Hive On Spark的搭建,参考此文 https://www.jianshu.com/p/f4f058d0b0a4

先使用 hadoop classpath 查询HADOOP_CLASSPATH的路径

在当前用户的.bashrc文件中添加:
export SPARK_DIST_CLASSPATH=$(hadoop classpath)

先将chrome浏览器的语言设置为英语
然后按照下边链接方式更改cdh的配置
https://stackoverflow.com/questions/29800239/how-to-set-up-dynamic-allocation-on-cloudera-5-in-yarn

http://xn--jlq582ax31c.xn--fiqs8s/post/242
按照上边的方式对链接中的参数进行修改

进入hive命令行
然后执行类似sql语句: select count(1) from eqxdb.mall_tag;
如果出现Query Hive on Spark job信息,并且计算结果正确的话,说明配置成功了
或者
hive –hiveconf hive.root.logger=DEBUG,console -e “select count(1) from eqxdb.mall_tag;”

为什么每次进入命令都要重新Source /Etc/profile 才能生效?

1
2
3
4
5
6
#编辑JDK8
export JAVA_HOME="/usr/java/java8"
#编辑maven
export M2_HOME="/opt/idea-IU-162.1121.32/plugins/maven/lib/maven3"
#编辑PATH
export PATH="$JAVA_HOME/bin:$M2_HOME/bin:$PATH"

这是我的/etc/profile末尾的配置,JDK是没有问题的,不用source,echo $JAVA_HOME能出来,问题是如果要用mvn,每次就要source一遍才行,maven我用的是IDEA自带的。

回答 1、也可以放在~/.bashrc里面。或者在~/.bashrc里面加一句

1
source /etc/profile

(采用此方法,已成功生效)
回答 2、你可以把这几条命令写在 /etc/bash里面 就会自动执行了

from https://blog.csdn.net/lwplvx/article/details/79192182

VSCode使用Remote VSCode编辑远程服务器文件

本地的配置

1 在VSCode的扩展插件中找到Remote VSCode插件并进行安装;

2 配置ssh config文件,终端中输入:

1
vim ~/.ssh/config

粘帖一下内容(记得干掉注释内容)

1
2
3
4
5
6
Host dl_aws   # dl_aws 是一个名称,就类似于人类的名字一样
HostName 18.212.101.21 # remote的地址
User ubuntu # remote的名称,这个需要登陆到远端亲自确认
ForwardAgent yes # 默认yes就行
RemoteForward 52698 127.0.0.1:52698 # 前一个52698表示远端的端口,后一个是local的接收地址和端口,这个端口设置为和2步骤中的port一样,这样就可以在VSCode中进行上传和下载了
IdentityFile /Users/xxx/.ssh/id_rsa.pub # 这个表示是密匙文件,类比于平时接触的git下ssh的公匙

Read More

Hive使用动态分区插入数据

往hive分区表中插入数据时,如果需要创建的分区很多,比如以表中某个字段进行分区存储,则需要复制粘贴修改很多sql去执行,效率低。因为hive是批处理系统,所以hive提供了一个动态分区功能,其可以基于查询参数的位置去推断分区的名称,从而建立分区。

1.创建一个单一字段分区表

1
2
3
hive>
create table dpartition(id int ,name string )
partitioned by(ct string );

Read More

Create Separate Columns From Array Column in Spark Dataframe in Scala

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
scala> import org.apache.spark.sql.Column
scala> val df = Seq((Array(3,5,25), 3),(Array(2,7,15),4),(Array(1,10,12),2)).toDF("column1", "column2")
df: org.apache.spark.sql.DataFrame = [column1: array<int>, column2: int]

scala> def getColAtIndex(id:Int): Column = col(s"column1")(id).as(s"column1_${id+1}")
getColAtIndex: (id: Int)org.apache.spark.sql.Column

scala> val columns: IndexedSeq[Column] = (0 to 2).map(getColAtIndex) :+ col("column2") //Here, instead of 2, you can give the value of n
columns: IndexedSeq[org.apache.spark.sql.Column] = Vector(column1[0] AS `column1_1`, column1[1] AS `column1_2`, column1[2] AS `column1_3`, column2)

scala> df.select(columns: _*).show
+---------+---------+---------+-------+
|column1_1|column1_2|column1_3|column2|
+---------+---------+---------+-------+
| 3| 5| 25| 3|
| 2| 7| 15| 4|
| 1| 10| 12| 2|
+---------+---------+---------+-------+

from https://stackoverflow.com/questions/52276284/create-separate-columns-from-array-column-in-spark-dataframe-in-scala-when-array/52277257#52277257

HTML5 利用 History API 无刷新更改地址栏

HTML5 新增的历史记录 API 可以实现无刷新更改地址栏链接,配合 AJAX 可以做到无刷新跳转。

简单来说:假设当前页面为renfei.org/,那么执行下面的 JavaScript 语句:

1
window.history.pushState(null, null, "/profile/");

之后,地址栏的地址就会变成renfei.org/profile/,但同时浏览器不会刷新页面,甚至不会检测目标页面是否存在。

Read More