前言
这里记录的都是之前有使用过的散装知识点, 复习方便而已
执行文件:
- 首先是确定文件是否具有可执行权限
-x
- 在文件目录下使用
./filename
即可运行文件
crontab定时执行任务:
参考资料:
https://blog.csdn.net/katyusha1/article/details/78619549
启动crontab日志生成:
-
修改rsyslog:
这里使用vim编辑器
sudo vim /etc/rsyslog.d/50-default.conf
找到此条:
cron.* /var/log/cron.log #将cron前面的注释符去掉
-
重启rsyslog & cron
sudo service rsyslog restart sudo service cron restart
-
进入日志目录查看日志:
cd /var/log
此时目录中以存在cron.log:
No MTA installed, discarding output:
查看日志发现一个问题:
日志中并没有指令输出, 而是
No MTA installed, discarding output
参考资料:
https://shipengliang.com/software-exp/no-mta-installed-discarding-output%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95.html
这里是由于crontab执行脚本时会以邮件的形式发送至指定邮箱, 而并没有直接输出至日志中
如果没有安装邮箱服务器, 则就会显示这条提示
解决的方法是在每条指令的末尾添加输出重定向并加个2>&1
, 如:
原指令 > /var/log/cron_output.log 2>&1
这样就能在另外的文件中获取到指令输出
开机自动执行脚本:
参考资料:
https://www.jb51.net/article/175654.htm
基本步骤:
-
创建一个
.sh
脚本 -
赋予可执行权限, 一般是755
-
写入脚本代码
-
copy到**/etc/init.d/**目录下
-
设置开机自启:
sudo update-rc.d test.sh defaults
之后可以重启ubuntu测试脚本是否运行
自动安装驱动:
这个在安装显卡驱动的时候尝试了一次
-
查看当前驱动状态:
ubuntu-drivers devices
卸载显卡驱动:
To remove CUDA Toolkit:
$ sudo apt-get --purge remove "*cublas*" "cuda*"
To remove NVIDIA Drivers:
$ sudo apt-get --purge remove "nvidia*" # 这个指令可能导致有些东西卸不掉
$ sudo apt-get --purge remove "*nvidia*"
删除剩余的所有关联:
sudo apt-get autoremove
注意, 这个指令慎用
由于本地环境是刚安装的新ubunt, 所以爷毫无畏惧
但是由于这个命令可能会移除一些不想移除的东西, 找回来有非常麻烦
参考资料:
https://zhuanlan.zhihu.com/p/160926980
查看系统PCI设备:
lspci
lspci [-vvn]
-v:观察更多的PCI设备信息;
-vv:比-v还要详细的信息;
-n:直接观察PCI的ID而不是厂商名称
禁用nouvea显卡驱动:
nouvea是ubuntu默认为显卡安装的一个开源驱动
首先查看nouvea是否在运行:
lsmod | grep nouveau
如果没有任何输出, 则证明nouveau没运行
否则需要禁用nouveau显卡驱动;
-
在/etc/modprobe.d/文件夹下创建blacklist-nouveau.conf文件
-
在文件中添加内容为
blacklist nouveau options nouveau modeset=0
-
再更新一下内核
sudo update-initramfs -u
-
输入reboot命令重启系统,强力保证blacklist生效。
-
输入lsmod | grep nouveau查看是否vouveau真的被干掉了。
如果,没有任何内容出现,那么恭喜你,成功除掉了nouveau驱动。
关闭 & 打开图形界面:
关闭图形界面:
sudo systemctl set-default multi-user.target
sudo reboot
打开图形界面
sudo systemctl set-default graphical.target
sudo reboot
添加与删除PPA源:
参考资料:
https://blog.csdn.net/lu_embedded/article/details/55803500
PPA,英文全称为 Personal Package Archives,即个人软件包档案。是 Ubuntu Launchpad 网站提供的一项源服务,允许个人用户上传软件源代码,通过 Launchpad 进行编译并发布为二进制软件包,作为 apt / 新立得(Synaptic)源供其他用户下载和更新。
PPA 的一般形式是: ppa:user/ppa-name
-
添加 PPA 源
#添加 PPA 源的命令为: sudo add-apt-repository ppa:user/ppa-name #添加好记得要更新一下: sudo apt-get update
-
删除 PPA 源
#删除 PPA 源的命令格式则为: sudo add-apt-repository -r ppa:user/ppa-name #然后进入 /etc/apt/sources.list.d 目录,将相应 ppa 源的保存文件删除。 #最后同样更新一下: sudo apt-get update
移除已经安装的GCC 或 G++:
一个系统下可能有多个版本的gcc 或 g++, 需要移除干净的话:
sudo apt-get remove g++
sudo apt-get remove gcc
sudo apt-get remove gcc-*
sudo apt-get remove g++-*
即可全部移除
监控网络流量:
这里好用的命令行工具为ifstat
sudo apt-get install ifstat
ifstat
之后就能监控网络流量了, 每秒刷新一次
安装指定版本的GCC:
参考资料:
https://blog.csdn.net/linuxarm123/article/details/99292991
按照这篇博客的做基本没啥问题
这里以gcc-8.2.0为例
-
安装默认版本的gcc
-
安装默认版本的g++
这俩必装, 后头的编译make等要用到, 等make install完成后会被自动替换
-
查看默认gcc & g++的版本:
gcc -v g++ -v
如果不合适的, 则需要手动安装指定的版本
-
下载指定版本的gcc:
这里直接去清华镜像源里挑
https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/
找到想要的gcc, copy完整的url地址, 到ubuntu中:
wget url
直接网络下载
也可以在其他电脑上下载, 然后
scp
到ubuntu上 -
切换为root:
su root
-
进入到
/root/
中并将之前的tar.gz包cp到这里
-
在此目录中解压
会出来一个相应的文件夹:
-
进入到
gcc-8.2.0
中, 下载编译需要的依赖:cd /root/gcc-8.2.0 ./contrib/download_prerequisites # 直接运行内置的下载脚本
由于这里是从gcc官网下载, 所以会很慢, 没有梯子的情况下网速只有几十KB
但好在文件不多, 总共就4个(可能更多), 耐心等待即可
-
建立编译过程文件的临时目录:
这里直接建立和版本名对应的文件夹
mkdir /root/gbuild-8.2.0 cd /root/gbuild-8.2.0 /root/gcc-8.2.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
-
编译并安装:
make -j 想使用的CPU核数 # 由于源码庞大, 编译时间将会很久, 这里建议使用多线程编译 # 注意预留一部分的CPU核心用于监控进度, 并确保有足够的内存, 不然容易死机 # 我在编译的时候开了40个核心结果直接内存塞满死机了 make install
-
测试结果:
gcc -v
可以看到, gcc 的版本已经从原先的7.4变成了8.2.0, 表明安装成功
重启网卡:
service network restart
2021-3-30 11:42:39:
之后有一次没连上ipv4, 想重启网卡, 结果此命令遇到了问题:
可以尝试一下命令:
service network-manager restart
之后重启成功:
任务后台执行:
有些命令不会很快的返回, 占用控制台响应时间, 可以放到后台执行
在命令最后添加一个&
即可
2>&1:
含义:将标准错误输出重定向到标准输出
这样, 命令的stderr也会输出到stdout中, 可用于log输出或屏幕显示
在Linux系统中0 1 2是一个文件描述符
名称 | 代码 | 操作符 | Java中表示 | Linux 下文件描述符(Debian 为例) |
---|---|---|---|---|
标准输入(stdin) | 0 | < 或 << | System.in | /dev/stdin -> /proc/self/fd/0 -> /dev/pts/0 |
标准输出(stdout) | 1 | >, >>, 1> 或 1>> | System.out | /dev/stdout -> /proc/self/fd/1 -> /dev/pts/0 |
标准错误输出(stderr) | 2 | 2> 或 2>> | System.err | /dev/stderr -> /proc/self/fd/2 -> /dev/pts/0 |
符号>&是一个整体,不可分开,分开后就不是上述含义了。
写成2&>1也是不可以的
查看与切换shell:
-
查看可用的shell:
cat /etc/shells
-
查看当前使用的shell:
echo $SHELL
-
切换shell
直接用shell路径即可