Linux配置java的环境变量
1、找到jdk安装包的位置
2、打开profile文件# vim /etc/profile
3、添加如下的内容
1 | export JAVA_HOME=/usr/java/jdk1.8.0_212-amd64 |
4、更新配置source /etc/profile
5、使用如下命令查看是否配置成功java -version
echo $JAVA_HOME
6.注意分隔符在Linux中使用:(冒号),在Windows中使用;(分号)
常用命令
一、文件夹命令
- 创建同级目录
mkdir -p {a,b,c,d}
- 创建嵌套
mkdir -p a/b/c
- 删除同级目录
rm -rf {a,b,c}
- 强制删除嵌套目录
rm -rf dictionary
- 设置目录权限
(1) 切换目录的权限chmod 775 abc
(2)将abc的权限赋给root(组):root(用户)sudo chown root:root abc
二、用户命令
- 创建用户命令
useradd -m test
- 切换用户
su test
shell脚本
一、后台运行jar包&是后台运行的意思,但是关闭终端会退出1
nohup java -jar xxx.jar > log.txt &
nohup 关闭终端不会退出
> log.txt 是将日志消息打印到log.txt中
ubuntu安装ssh
使用命令sudo apt-get install openssh-server
进行安装。
ubuntu右键终端快捷方式
使用命令sudo apt-get install nautilus-open-terminal
进行安装。
注销登录或者重新加载文件管理器,使用命令nautilus -q
重新加载文件管理器。
kali ssh配置
kali安装之后,22端口是默认关闭的,需要自己设置开启,
使用命令sudo ufw status
查看当前系统防火墙开启情况,没有开启,使用sudo ufw enable
开启防火墙。使用命令sudo ufw allow 22
开启22端口。
一、更改配置文件
允许账号密码登录。
修改/etc/ssh/sshd_config
文件。
- 设置
PasswordAuthentication yes
,开启密码认证 - 设置
PermitRootLogin yes
,设置可以超管登录。二、启动ssh服务
使用ssh start
报错localhost unresolve错误。需要进入到/etc/init.d/
文件夹中,使用命令./ssh start
启动。三、设置开机自启动
使用命令update-rc.d ssh enable
四、重启系统便可以正常连接
将分卷磁盘挂载为文件夹
查询当前系统的分卷信息
sudo fdisk -l
临时挂载某个卷到文件夹中
mount [option..] DEVICE_NAME DIRECTORY
例子sudo mount /dev/sdb1 /mnt/media
查看磁盘ID
blkid
为查看磁盘命令blkid /dev/sdc
开机自动挂载
需要修改/etc/fstab
参数如下<file system>,<mount point>,<type>,<options>,<dump>,<pass>
<file system>
配置好磁盘UUID
mount point
挂载路径,这个路径必须事先存在type
硬盘的文件系统类型,ntfs、ext4、fat、vfatoption
配置磁盘选项
defaults
use default options: rw, suid, dev, exec, auto, nouser, and async
noauto
do not mount when “mount -a” is given (e.g., at boot time)
user
allow a user to mount
owner
allow device owner to mount
comment or x-
for use by fstab-maintaining programs
nofail
do not report errors for this device if it does not exist
dump
备份,默认值为0pass
1自动扫描,0不扫描
Ubuntu手动安装软件创建快捷方式
下载二进制Typora软件,想设置为markdown文件的默认打开器。
创建typora.desktop
文件放置在/usr/share/applications/
文件夹中。typora.desktop的文件内容如下。
1 | [Desktop Entry] |
创建成功之后可以在软件中心中查询到,也可以添加入收藏夹。
Ubuntu 安装证书
(1) 获得crt证书
(2) 将证书放入/usr/local/share/ca-certificates/
文件夹中
(3) 赋予证书644权限
(4) 更新证书sudo update-ca-certificates
修改dash为bash
(1) 查询当前使用壳是哪一个?ls -l /bin/sh
返回/bin/sh->dash
说明使用dash
(2) 修改为bash
,sudo dpkg-recofigure dash
在页面中选择否。
配置SSH
使用命令ssh-keygen -t rsa
生成公钥和私钥。位于~/.ssh
中。
- 使用ssh登录
ssh user@remote-host
- 使用私钥登录
ssh -i "xxxx.pem" user@remote-host
给文件夹配置软链接
ln -s /work /home/tom/desktop/work
在桌面创建一个快捷方式到根目录的work中。这样在桌面便可以快速访问work文件夹。如果桌面已经存在了一个work文件夹。则会在work文件夹内创建work文件夹快捷方式。
如果出现链接层数过多
,可能是使用相对路径,需要使用绝对路径就可以解决该问题。
shell脚本获得控制台输入
使用read name
例子:
1 | echo -n "Enter name:" |
例子2:
1 | read -p "Enter name,addr:" name addr |
Ubuntu更改默认文件夹为英文
方法一
(1)将语言调成英语,重启,提示文件夹变更。选择变更。
(2)然后再将语言调成中文,重启,提示变更,否。
方法二
(1)输入以下命令
1 | export LANG=en_US |
(2) 提示文件夹转换,确认转换。
(3) 输入命令export LANG=zh_CN
(4) 重启,提示变更文件夹,选择否。不再提示。
输入法无法切换
各项设置正确的情况下无法切换输入法,将键盘只设置为一个英文的键盘。这样才能从键盘切换到输入法,否则显示的结果就是在不同的键盘之间替换。
ubuntu时间显示到秒
开启秒显示
1 | $gsettings set org.gnome.desktop.interface clock-show-seconds true |
关闭秒显示
1 | $gsettings set org.gnome.desktop.interface clock-show-seconds false |
查看当前状态
1 | $gsettings get org.gnome.desktop.interface clock-show-seconds |
ubuntu 软件显示方块问题
ubunut的一些软件,如:资源监视器、计算器等软件出现文字都是方块的问题。
问题原因
系统使用了snap的版本的软件,需要更改为apt的版本
1 | # 系统资源管理器 |
profile、bashrc文件区别
profile
/etc/profile
系统级配置文件,对所有用户、所有终端shell都起作用。~/.profile
用户级别配置文件,对该用户的所有终端shell都起作用。
bashrc
/etc/bash.bashrc
系统级配置文件,对所有用户的bash终端起作用~/.bashrc
用户级别配置文件,对用户的bash终端起作用。
如果使用额外的终端,如zsh
终端,想要环境变量只对该zsh
起作用,需要将环境变量配置到~/.zshrc
dns
配置dns服务器路径/etc/resolve.conf
,修改里面的nameserver重启后会丢失。
ubuntu无法打开终端
Clion崩溃导致,LC_ALL=C设置入环境变量,导致locale环境全变成C了,导致终端无法打开。Clion崩溃导致,LC_ALL=C设置入环境变量,导致locale环境全变成C了,导致终端无法打开。需要将设置LC_ALL=C的地方去掉需要将设置LC_ALL=C的地方去掉,可能是在~/.profile
文件中
vim编辑修改二进制
打开二进制文件
vim -b filename
显示二进制文件内容
命令模式输入::%!xdd
,只修改左边数据有效
显示原始数据
命令模式输入::%!xdd -r
zsh和oh-my-zsh安装
使用sudo apt-get install zsh
命令安装zsh。然后上oh-my-zsh官网安装。
主题
常用主题ys
常用插件:
- z 跳转
- zsh-syntax-highlighting 用于查看命令是否正确
- zsh-autosuggestions 命令自动补全
1 | # 安装脚本 |
安装Android SDK
下载sdk之后,配置将tools文件夹和platform-tools文件设置进path环境变量。
Ubuntu安装Synergy
使用命令sudo apt-get install synergy
- 提示Failed to load module “canberra-gtk-module”。
解决方法:
1 | sudo apt-get install libcanberra-gtk-module |
- 出现system tray is unavailable, don’t close your window警示窗口。
解决方法:
1 | sudo apt-get install sni-qt |
- failed to connect secure socket
GUI界面关闭验证
1 | [General] |
joplin
https://github.com/laurent22/joplin 开源笔记,支持三端同步
joplin服务搭建
- docker 拉取镜像https://hub.docker.com/r/joplin/server
docker pull joplin/server:latest
- 配置docker的启动配置
.env
文件,最简单的配置1
2APP_PORT=22300
APP_BASE_URL=http://localhost - 启动服务
docker run --env-file ./.env -p 22300:22300 joplin/server:latest
nginx配置
可以使用最暴力的配置,所有的请求都转发到joplin服务。
1 | upstream joplin_server { |
经过上面的配置之后,访问http://localhost/joplin/api/ping
会被代理成http://localhost:22300/api/ping
linux安装postgrepsql
Centos7使用yum install postgresql-server
安装。
使用psql --version
查看版本。
安装完成之后会生成一个postgresql
的用户,但是这个时候是没办法使用的。需要完成如下步骤才能顺利的使用这个数据库。
1.使用postgresql-setup initdb
初始化
1 | $ postgresql-setup initdb |
初始化完成之后会在/var/lib/pgsql/data
生成数据库存储路径。
1 | # root @ VM_0_6_centos in /var/lib/pgsql [20:23:16] |
2.启动数据库
当前的数据库服务的状态
1 | $ service postgresql status |
启动数据库
1 | $ service postgresql start |
启动成功之后会监听5432端口
1 | $ netstat -ano | grep "5432" |
3.登录数据库
使用root登录的话会报如下错误
1 | $ psql postgres |
需要切换到postgres用户,然后直接登录。
1 | $ su - postgres |
查看数据库用户情况
1 | postgres=# \l |
4.处理root用户登录问题
修改pg_hba.conf
,将
1 |
|
修改为
1 |
|
然后就可以在root情况下登录了
1 |
|
如果需要外部ip地址访问,需要添加如下配置
1 | host all all 0.0.0.0/0 md5 |
修改postgresql.conf文件,将listent_address更改为“*”。重启服务便可以使用外部数据库管理器访问。但是需要设置用户密码。
设置数据库用户密码直接\password
的方式和通过alter user postgres with password 'postgres'
语句更改postgres用户密码。
设置之后可以使用第三方工具访问了
Postgresql Docker安装
拉取映像
sudo docker pull postgres
构建容器
sudo docker run -it --name postgres --restart always -e POSTGRES_PASSWORD='postgres.1234' -e ALLOW_IP_RANGE=0.0.0.0/0 -v /work/soft/postgres/data:/var/lib/postgresql -p 5432:5432 -d postgres
说明:-v
将本地路径和容器路径对应起来”/work/soft/postgres/data”为本地路径,后面的参数为容器路径
Nginx配置
Nginx简单的代理配置
使用Nginx做代理的时候,可以简单的直接把请求原封不动的转发给下一个服务或者内网服务。比如访问http://hello.com的时候,通过nginx负载,转发请求到http://hello2.com,http://hello3.com。负载的依据是根据weight进行判断。如果相同的权重就会有均摊请求。
简单配置如下:
1 | upstream hello_group { |
根据URL分配不同的服务
有时候需要根据不同不同url分配不同的服务,我想要访问http://localhost/joplin/login的时候,去访问joplin的服务。访问http://localhost/blog的时候,转发这个请求到blog服务。
但是joplin和blog服务是不需要前缀的,即:http://localhost/joplin/login 转发成http://localhost:22300/login。Nginx转发的时候,把这个前缀去掉就好了。
方案一 :proxy_pass后面加根路径/.
1 | upstream joplin_server { |
^~/joplin/表示匹配前缀是joplin的请求,proxy_pass的结尾有/, 则会把/joplin/*后面的路径直接拼接到后面,即移除joplin.
方案二:使用rewrite
1 | upstream joplin_server { |
注意 proxy_pass结尾没有/, rewrite重写了url。
关于rewrite定义
1 | syntax: rewrite regex replacement \[flag\] |
问题解决方案
出现301的错误,缓冲问题,客户端请求加参数,要么在后面添加斜杠。
Eclipse Mosquitto是一个开源消息代理,实现了MQTT协议版本3.1和3.1.1。Mosquitto轻量,适用于低功耗单板计算机到完整服务器的所有设备。Mosquitto项目还提供了用于实现MQTT客户端的C库以及非常受欢迎的mosquitto_pub和mosquitto_sub命令行MQTT客户端。
其他服务器代理实现:https://github.com/mqtt/mqtt.github.io/wiki/servers
各操作系统安装指引:https://mosquitto.org/download/
- 下载安装
以Ubuntu16为例
添加到存储库列表
sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
更新软件包
sudo apt-get update
安装
sudo apt-get install mosquitto
安装命令行客户端
sudo apt-get install mosquitto-clients
2. 配置
2.1 主配置文件mosquitto.conf
pid_file /var/run/mosquitto.pid
消息持久存储
persistence true
persistence_location /var/lib/mosquitto/
日志文件
log_dest file /var/log/mosquitto/mosquitto.log
其他配置
include_dir /etc/mosquitto/conf.d
禁止匿名访问
allow_anonymous false
认证配置
password_file /etc/mosquitto/pwfile
权限配置
acl_file /etc/mosquitto/aclfile
2.2 认证配置pwfile
没有则创建文件
touch /etc/mosquitto/pwfile
服务开启后,输入如下命令,根据提示输入两遍密码
mosquitto_passwd /etc/mosquitto/pwfile 用户名
2.3 权限配置aclfile
打开文件
vim /etc/mosquitto/aclfile
编辑内容
李雷只能发布以test为前缀的主题,订阅以$SYS开头的主题即系统主题
user lilei
topic write test/#
topic read $SYS/#
韩梅梅只能订阅以test为前缀的主题
user hanmeimei
topic read test/#
3. 启动
-c:指定特定配置文件启动
-d:后台运行
mosquitto -c /etc/mosquitto/mosquitto.conf -d
ufw的状态查看
sudo ufw status
ufw的启用和关闭
1.启用防火墙:sudo ufw enable
2.关闭防火墙:sudo ufw disable
ufw策略配置
sudo ufw allow | deny [service]
sudo ufw allow smtp
允许所有的外部IP访问本机的25/tcp (smtp)端口sudo ufw deny smtp
禁止外部访问smtp服务sudo ufw delete allow smtp
删除上面建立的smtp规则sudo ufw allow 8080
允许外部访问8080端口(tcp/udp)sudo ufw allow 22/tcp
允许所有的外部IP访问本机的22/tcp (ssh)端口sudo ufw allow from 192.168.1.2
允许此IP访问所有的本机端口sudo ufw allow proto udp from 192.168.0.1 port 53 to 192.168.0.2 port 53
允许192.168.0.1:53
的UDP访问192.168.0.2:53
Nginx简单的代理配置
使用Nginx做代理的时候,可以简单的直接把请求原封不动的转发给下一个服务或者内网服务。比如访问http://hello.com的时候,通过nginx负载,转发请求到http://hello2.com,http://hello3.com。负载的依据是根据weight进行判断。如果相同的权重就会有均摊请求。
简单配置如下:
1 | upstream hello_group { |
根据URL分配不同的服务
有时候需要根据不同不同url分配不同的服务,我想要访问http://localhost/joplin/login的时候,去访问joplin的服务。访问http://localhost/blog的时候,转发这个请求到blog服务。
但是joplin和blog服务是不需要前缀的,即:http://localhost/joplin/login 转发成http://localhost:22300/login。Nginx转发的时候,把这个前缀去掉就好了。
方案一 :proxy_pass后面加根路径/.
1 | upstream joplin_server { |
^~/joplin/表示匹配前缀是joplin的请求,proxy_pass的结尾有/, 则会把/joplin/*后面的路径直接拼接到后面,即移除joplin.
方案二:使用rewrite
1 | upstream joplin_server { |
注意 proxy_pass结尾没有/, rewrite重写了url。
关于rewrite定义
1 | syntax: rewrite regex replacement \[flag\] |
问题解决方案
出现301的错误,缓冲问题,客户端请求加参数,要么在后面添加斜杠。
Nignx配置AriaNG
需求:想要通过访问:http://localhost/AriaNg去访问,静态的ariaNg
根目录已经被占用了
1.下载ariaNg静态文件
github仓库 https://github.com/mayswind/AriaNg
下载地址https://github.com/mayswind/AriaNg-DailyBuild/archive/master.zip
2.解压到想要的文件夹。
3.配置nginx
配置项如下:
1 | location /AriaNg { |
这样,访问http://localhost/AriaNg就会自动去文件夹里面找index了。
frpc的例子
下载frp,软件包,包含服务端frps和frpc和两个简单的配置文件frps.ini和
frpc.ini
然后将frpc.service或frps.service放入/etc/systemd/system/
中
将可执行程序软连接到/usr/bin/frps
和/usr/bin/frpc
中.路径需要和service文件内标识的一致.sudo ln -s /work/soft/frp/frpc /usr/bin/frpc
sudo ln -s /work/soft/frp/frps /usr/bin/frps
赋予可执行权限,可以不需要:sudo chmod +x /usr/bin/frpc
sudo chmod +x /usr/bin/frps
将ini文件软连接到/etc/frp/
文件夹下对应的文件中.sudo ln -s /work/soft/frp/frpc.ini /etc/frp/frpc.ini
sudo ln -s /work/soft/frp/frps.ini /etc/frp/frps.ini
客户端和服务端有自己的对应的二进制和配置文件.
启动frpsudo systemctl start frpc
开机自启动sudo systemctl enable frpc
scp指定端口
使用-P来指定远端的端口
spc -P 8080 filename username@ip:/xxx/doc/
spc -P 8080 username@ip:/xxx/xxx/text.txt ./doc
ARM环境安装jupyter
https://collaborate.linaro.org/display/BDTS/Install+and+Running+Jupyter+notebook+on+ARM64
安装python3
sudo apt-get install libzmq3-dev python3-venv python3-dev python3-pip -y
创建jupyter环境目录
1 | mkdir ~/jupyter/ |
安装zeromq
wget https://github.com/zeromq/libzmq/releases/download/v4.2.2/zeromq-4.2.2.tar.gz
安装相关依赖
1 | sudo apt-get update && sudo apt-get install -y libtool pkg-config build-essential autoconf automake uuid-dev |
编译
1 | cd zeromq-4.2.2 |
查看编译结果:ldconfig -p | grep zmq
1 |
安装jupyter
pip install --upgrade --force-reinstall --no-cache-dir jupyter
或sudo pip3 install jupyter
运行jupyter notebook
生成配置文件:jupyter notebook --generate-config
output
1 | Writing default config to: /home/ubuntu/.jupyter/jupyter_notebook_config.py |
修改配置文件:
1 | c.NotebookApp.ip = '0.0.0.0' |
设置密码:jupyter notebook password
经过上述配置之后,可以通过局域网访问了。
配置自动启动
安装supervisorapt-get install supervisor
配置启动脚本:
1 | !/bin/bash |
配置supervisor的jupyter-notebook.conf
进入/etc/supervisor/conf.d
编写文件:jupyter-notebook.conf
1 | [program:jupyter-notebook] |
重启服务sudo systemctl restart supervisor.service
这时候jupyter-notebook会自动被拉起来了。
ubuntu设置时区
查看时区列表timedatectl list-timezones
设置对应的时区sudo timedatectl set-timezone Asia/Shanghai
ubuntu locale错误
1 | locale: Cannot set LC_CTYPE to default locale: No such file or directory |
查看系统字符:locale -a
重新生成:sudo locale-gen zh_CN.UTF-8
使用MobaXterm出现终端中文乱码
编辑session,将文字样式改成utf-8
Postgres数据库备份
- 以postgres身份登录
su - postgres
- 备份数据库
pg_dump dbname > dbname.bak
- 将备份好的数据传输到远程地址
scp -P 22 ./joplin.bak ubuntu@localhost:/work/
- 恢复数据库
删除原有的数据库并创建空的数据库dropdb dbname
,createdb dbname
使用备份的数据库恢复。psql dbname < dbname.bak
树莓派蓝牙模块
- 首先查看蓝牙服务是否开启
systemctl status bluetooth
- 开启
pulseaudio
关闭原来的pulseaudio -k
重启pulseaudio --start
- 进入bluetoothctl,连接蓝牙音箱
crontab设置定时任务
修改默认编译器select-editor
查看用户当前的定时计划crontab -l [user]
编辑用户目前的定时计划crontab -e
定时计划表示
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
例子
每天晚上22:30播放睡眠音乐
30 22 * * * /work/music/play_evening_music.sh
查看命令历史
ctrl + r
输入命令。
linux查看端口程序占用
lsof -i:8080
或netstat -tunlp | grep 8080
wine的串口
wine会映射串口
ll ~/.wine/dosdevices
其中/dev/ttyUSB0 --> com33
权限问题:sudo chmod 666 /dev/ttyUSB0