linux

ubuntu apt-get update 失败(源于 https://developer.download.nvidia.com/)

1.报错现象
2.报错分析

 E: The repository 'https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64  Release' does not have a Release file.
E: The repository 'https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64  Release' does not have a Release file.

NVIDIA网站解析失败
3.解决方法

 echo "deb http://developer.download.nvidia.cn/compute/cuda/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/cuda.list \
 echo "deb http://developer.download.nvidia.cn/compute/machine-learning/repos/ubuntu1804/x86_64 /" > /etc/apt/sources.list.d/nvidia-ml.list

修改 /etc/apt/sources.list.d 里源文件
重新执行 apt-get update 成功!!!

Could not load dynamic library ‘libcublas.so.10’; dlerror: libcublas.so.10: cannot open shared object file: No such file or directory;

On Ubuntu 20.04, you can simply install NVIDIAs cuda toolkit cuda:

sudo apt-get update
sudo apt install nvidia-cuda-toolkit

There are also install advices for Windows.

The packge is around 1GB and it took a while to install… Some minutes later you need to export PATH variables so that it can be found:

  1. Find Shared Object
sudo find / -name 'libcudart.so*'

/usr/lib/x86_64-linux-gnu/libcudart.so.10.1
/usr/lib/x86_64-linux-gnu/libcudart.so
  1. Add the folder to path, so that python finds it
export PATH=/usr/lib/x86_64-linux-gnu${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  1. Permissions
sudo chmod a+r /usr/lib/x86_64-linux-gnu/libcuda*

MongoDB Too many open files

MongoDB Too many open files, NETWORK  [listener] Error accepting new connection on 0.0.0.0:27017: Too many open files

If you are getting above error on Ubuntu 18.04/16.04 LTS or any other cloud platform like Amazon EC2, Azure VM, Google Cloud Compute, etc. with preinstalled Ubuntu.

Follow below steps to fix.

Linux systems limit the number of file descriptors for one process may open to 1024 per process.

Switch to root user

# sudo su

To Change temporarily or per session enter below command

# ulimit -n 102400

To change Permanently. To Change system limits, modify/etc/security/limits.conf,

# nano /etc/security/limits.conf

Add the below lines in it

* soft nofile 102400

* hard nofile 102400

Output:

# - chroot - change root to directory (Debian-specific)
#
#<domain> <type> <item> <value>
#

#* soft core 0
#root hard core 100000
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#ftp - chroot /ftp
#@student - maxlogins 4


* soft nofile 102400
* hard nofile 102400

# End of file

Ubuntu 16.04/18.04 uses systemd, You have to Change the ulimit settings in MongoDB service file

Navigate to /etc/systemd/system/ and open mongodb.service file

# cd /etc/systemd/system/
# nano mongodb.service

Add below lines as shown below.

[Unit]

Description=High-performance, schema-free document-oriented database

After=network.target

[Service]

User=mongodb

Group=mongodb

ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

LimitNOFILE=infinity

LimitNPROC=infinity

[Install]

WantedBy=multi-user.target

Reload to daemon to apply settings

# systemctl daemon-reload

Start the MongoDB Service

# systemctl start mongodb

Check the MongoDB Service

# systemctl status mongodb

Output:

  mongodb.service - High-performance, schema-free document-oriented database

   Loaded: loaded (/etc/systemd/system/mongodb.service; disabled; vendor preset: enabled)

   Active: active (running)

 Main PID: 84070 (mongod)

    Tasks: 82

   Memory: 276.5M

      CPU: 53.064s

   CGroup: /system.slice/mongodb.service

           └─84070 /usr/bin/mongod --quiet --config /etc/mongod.conf

Related Articles:

How to Install MongoDB on Ubuntu 18.04/16.04 LTS

Reference:

https://docs.mongodb.com/manual/reference/ulimit/

Tags

Linux下开机自动启动FRP

Linux下开机自动启动FRP

前提已经安装frp,配置好了frps.ini(服务端)或者frpc.ini(客户端)

以下教程为frpc(客户端),frps只需要将frpc改为frps即可。

配置frpc.ini

参考frp配置说明

#打开frpc配置文件 
vim /usr/frp/frpc.ini

参考说明,进行配置

#frps服务端地址
server_addr = xxx.xxx.xxx.xxx
#frps服务端通讯端口,客户端连接到服务端内网穿透传输数据的端口
server_port = 7000
#特权模式密钥,客户端连接到FRPS服务端的验证密钥
privilege_token = JKSDF@341OKQ
#日志存放路径
log_file = frpc.log
#日志记录类别,可选:trace, debug, info, warn, error
log_level = info
#日志保存天数
log_max_days = 7
#设置为false,frpc连接frps失败后重连,默认为true不重连
login_fail_exit = false
#如连接报错,则去掉
#KCP协议在弱网环境下传输效率提升明显,但是对frps会有一些额外的流量消耗。服务端须先设置kcp_bind_port = 7000,freenat.bid服务端已设置支持
#protocol = kcp

[http_dsm]
#穿透服务名称,不能和其他已建立的相同,使用公共服务器的建议修改成复杂一点的名称,避免与其他人冲突,很多路由器内置frpc的默认服务名
称为[web],很容易很其他人冲突
#穿透协议类型,可选:tcp,udp,http,https,stcp,xtcp,这个设置之前必须自行搞清楚应该是什么
type = http
#本地监听IP,可以是本机IP,也可以是本地的局域网内某IP,例如你的局域网是互通的,你可以在路由器上安装frpc,然后local_ip填的群晖的ip,这样也可以把群晖穿透出去
local_ip = 192.168.1.2
#本地监听端口,通常有ssh端口22,远程桌面3389等等
local_port = 5000
#对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 cpu 资源
use_compression = true
#将 frpc 与 frps 之间的通信内容加密传输
use_encryption = true
#自定义域名访问穿透服务,一般域名设置了二级域名泛解析以后,这里填*.freenat.bid即可,*自定义,如果不想用域名或者自行搭建frps没有域名,则穿透协议类型选择tcp,见以下tcp部分详解
custom_domains = dsm.freenat.bid

配置systemctl进行开机启动

创建frpc.service服务

vim /lib/systemd/system/frpc.service
[Unit]
#服务描述
Description=frpc service 
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#执行命令 
ExecStart=/usr/local/frpc/frpc -c /usr/local/frpc/frpc.ini

[Install]
WantedBy=multi-user.target

!!!此处直接运行systemctl命令会提示需要重载!!!

于是终端里输入

systemctl daemon-reload  

使用systemctl命令来控制frpc

#启动
sudo systemctl start frpc 
#关闭
sudo systemctl stop frpc
#重启
sudo systemctl restart frpc
#查看状态
sudo systemctl status frpc

设置开机自动启动

sudo systemctl enable frpc

linux下FRP常用命令

后台运行frp

#定位至frp文件所在位置
服务端: nohup ./frps -c frps.ini >/dev/null 2>&1 &
客户端: nohup ./frpc -c frpc.ini >/dev/null 2>&1 &

查看frp进程

ps -aux|grep frp| grep -v grep

结束frp进程

kill -9 12345(找到的进程号)

ubuntu无法开机:timed out waiting for device dev-vdb1.device_Linux文件系统检查的依赖关系失败

今天给服务器安装了一个插件,然后重启服务器,结果提示timed out waiting for device dev-vdb1.device,发现是Linux文件系统检查的依赖关系失败了,想起来前几天把挂载的数据盘去掉了,开机自动挂载还在,接下来吾爱编程就为大家介绍一下Linux文件系统检查的依赖关系失败,有需要的小伙伴可以参考一下:

1、错误提示内容:

[ TIME ] Timed out waiting for device dev-vdb1.device.
[DEPEND] Dependecncy failed for /data.
[DEPEND] Dependecncy failed for Local File Systems.
......

 

2、解决办法:

(1)、根据提示进入系统:

Give root password for maintenace
(or press Control-D to continue):

输入自己的root密码进入系统

(2)、编辑开机自动挂载文件/etc/fstab,注释掉含有uuid的行:


保存文件,reboot重启服务器即可。

以上就是吾爱编程为大家介绍的Linux开机提示:timed out waiting for device dev-vdb1.device的解决方法。

Linux使用总结之 : SWAP扩容

背景: 近期某应用出现内存使用过度情况,业务又是正常,暂时不能重启应用释放内存,因此通过扩容swap来缓解问题,主要是消告警。

#SWAP扩容 主要2种方法,一种是扩容现有swap的盘空间,这个需要停掉当前swap ,SO 不符合我这个的要求,只能用第二种,DD一个文件方法,具体操作如下,我下边的操作使用dd生成了1个10G的文件/opt/swap_tmp.swap 用来扩容swap ,命令如下,5步完成,root用户下,经过几十台机器操作没有问题。

#扩容swap
#SWAP不够的情况临时扩容
#1、建立一个新的swap文件。
dd if=/dev/zero of=/opt/swap_tmp.swap bs=1M count=10240
#2、格式化为swap文件
mkswap /opt/swap_tmp.swap
#3、修改权限
chmod 0600 /opt/swap_tmp.swap
#4、挂载扩容
swapon /opt/swap_tmp.swap
#5、查看是否扩容成功
free -m

 

vnstat教程:linux下很方便查看服务器带宽流量统计的命令

因为很多 vps 或者服务器都是限流量的,但是又很多服务商并没有提供详细的流量表,比如每天的流量表,所以肯定有人很想知道自己服务器到底跑了多少流量。

 

是不是很直观呢。下面我们就来看看这个命令怎么用。 estimated 是预估使用量的意思。最后一列 avg. rate 是平均使用带宽。 rx 是接收流量( inbound ), tx 是发送流量( outbound )

第一步:安装

centos 需要先安装 epel 源后才能使用 yum 来安装

yum install epel-release -y && yum install -y vnstat

 

第二步:创建监控数据库

vnstat -u -i eth0
这里的 eth0 可以改成你需要的网卡

出现如下报错:权限的问题导致

Error: Unable to read database “/var/lib/vnstat/eth0”.
Info: -> A new database has been created.

解决办法:

chmod -R 777 /var/lib/vnstat/

第三步:启动服务并设置开机启动

service vnstat start
chkconfig vnstat on

第四步:流量查看命令

完成以上所有操作后,过个 10 分钟左右 (真心别急。。) 就可以用命令看到数据拉。。。

看每天的流量统计命令:

vnstat -d

 

 

看每月的流量统计命令:

vnstat -m