Linux 系统的运行级别及设置
Linux 系统默认有多种运行级别,如 Ubuntu 系统有 7 种运行级别,通过设置不同的运行级别,可以对计算机进行访问控制(如单用户模式,多用户模式等)、关机、重启、关闭图形界面、打开图形界面等。下面分别对这些运行级别进行介绍,并给出如何使用,如关闭图形界面,节省计算资源。
runlevel查看当前计算机的运行级别
123$ runlevelN 3# 运行级别是 3,说明是多用户控制台模式
通过命令可以查看各个运行级别信息
123456789101112131415$ man runlevelTable 1. Mapping between runlevels and systemd targets ┌─────────┬───────────────────┐ │Runlevel │ Target │ ├─────────┼───────────────────┤ │0 │ poweroff.target │ ├─────────┼───────────────────┤ ...
使用 Java 命令运行 jar 包
Java 使用 Maven 等 打包好程序为 Jar 后,如何运行,这里根据 Jar 包中是否有主类 (main class)入口,来分两种方法运行。
Maven 打包 Java 代码这种方法打包的 JAR 包默认不包含主类入口
1234# 在工程代码主目录下mvn clean package# clean 是清除之前打包的残留# package 是打包
利用 Artifacts 打包带有主类入口的 Jar 包File—》Project Structure—》Artifacts—》+—》JAR—>from module with dependencies—>Main Class—>copy to the output directory and link via manifest—>Directory for META-INF/MANIFEST.MF 选择 resources文件夹—》ok—>ok—>Build—>Build Artifacts—>Build
当不选主类或者 Directory for META-INF ...
在 Windows10 上配置 Java JDK 14 开发环境
Java 是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级 Web 应用开发和移动应用开发。任职于 Sun 微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为 Oak,目标设置在家用电器等小型系统的编程语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。随着1990年代互联网的发展,Sun 公司看见 Oak 在互联网上应用的前景,于是改造了 Oak,于1995年5月以 Java 的名称正式发布。后来 Sun 公司被甲骨文公司并购,Java 也随之成为甲骨文公司的产品。Java 伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Java 编程语言的风格十分接近 C++ 语言。继承了 C++ 语言面向对象技术的核心,舍弃了容易引起错误的指针,以引用取代;移除了 C++ 中的运算符重载和多重继承特性,用接口取代;增加垃圾回收器功能。Java 不同于一般的编译语言或解释型语言。它首先将源代码编译成字节码,再依赖各种不同平台上的虚拟机来解释执行字节码,从而具有“一次编写,到处运行”的跨平台特性。现时,移动操作系 ...
因 sudoers 出错无法使用 sudo 的解决方法
Linux 上修改 /etc/sudoers 导致文件出错,此时只要能够修改该文件的错误即可,但是普通用户 jinzhongxu 无法使用 sudo 命令,且无法使用 root 用户登陆。因此,需要能够进行 /etc/sudoers 修改,并更正错误即可。以下给出一种解决方法。
解决方案
使用 ssh 连接普通用户 jinzhongxu,并打开两个终端 shell:t1, t2
在 t1 输入命令:
echo $$
并把返回的数字拷贝下来
在 t2 输入命令:
pkttyagent --process 拷贝的数字
再在 t1 中输入
pkexec visudo
此时 t1也会卡住
再切换到 t2,输入用户 jinzhongxu 的密码
再次切换到 t1,发现此时正在打开 /etc/sudoers 等到修改,修改 /etc/sudoers 中出错的内容并保存。
参考文献
Ubuntu改坏sudoers后无法使用sudo的解决办法
Linux 定时任务 crontab
在 Linux 上执行定时任务具有便利性,可以使用命令 crontab 来实现。如因为服务器资源紧张需要错峰使用,想要在晚上才进行具有较大运行压力的任务,或者对于执行任务有具体时间要求。本篇以 Ubuntu 20.04 为例进行介绍,同样适用于 Debian/MacOS/CentOS/Red Hat 等系统。
crontab可以使用如下命令查看 crontab
12345678910111213141516171819202122232425262728293031323334353637383940➜ ~ cat /etc/crontab# /etc/crontab: system-wide crontab# Unlike any other crontab you don't have to run the `crontab'# command to install the new version when you edit this file# and files in /etc/cron.d. These files a ...
Linux 文件和目录的默认权限和特殊权限
对于 Linux 用户而言,当创建文件或目录时都会自动为该文件或目录分配权限,该权限就是默认权限。对于 Linux 文件和目录,除了具有默认权限外,还有特殊权限。默认权限和特殊权限在使用 Linux 系统时非常重要,特别是和团队开发时尤为重要。本篇就介绍一下如何查看和设置默认权限和特殊权限。以 Ubuntu 20.04 为例进行介绍。
文件默认权限:umask查看用户的默认权限
1234➜ ~ umask002➜ ~ umask -Su=rwx,g=rwx,o=rx
以 umask 显示的是数字,加上参数 -S (Symbolic) 显示的是字符。含义解释:文件权限有 r, w, x 三个,分别对应数字 4, 2, 1,002 表示创建文件、目录时剔除 w 写权限。如 umask -S 显示的是创建目录时的默认权限,从上面命令可以看到其他用户 o 缺少 w 写权限。值得注意的是,文件默认是没有可执行权限 x 的。即文件的默认最高权限是 -rw-rw-rw-,目录的默认最高权限是 drwxrwxrwx,因此,剔除 w 写权限时,用户新创建的文件的默认权限是 -rw-rw-r–, ...
利用 jupyterhub 搭建多用户 jupyterlab 开发环境
使用 jupyterlab 开发 python 程序非常方便,但是只能单用户访问。想要多用户共用服务器使用 jupyterlab 可以采用 jupyterhub 实现。下面演示在 CentOS 上搭建 jupyterhub 实现多用户访问 jupyterlab。本篇所有命令均使用 root 用户运行,jupyterhub 版本小于 2.0.0,对于 jupyterhub 2.0.0 的部署方法请参看这篇。
安装 Miniconda1234567891011121314151617181920212223yum install wget -ywget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.shchmod +x Miniconda*.sh# 安装在 /usr/local/miniconda 目录下./Miniconda*.shrm -rf Miniconda*.sh# 将 miniconda 命令目标添加到系统环境变量中,使得所有用户均可访问echo 'export PATH=/u ...
Linux 批处理:修改文件名和文件内容
在 Linux 系统上,包含有大量相同字段的文件名,想要把这些字段(中文字段)改成其他字段(数字或其他英文字段),因为某些程序的需要,不支持中文文件名,此时可以使用命令 rename 批量修改文件名。当文件内容中包含有大量相同字段,手动修改又比较浪费时间。此时,可以使用命令 sed 完成。
rename在 Linux 系统中重命名文件,经常用到 mv 命令,批量重命名文件 rename 是最好的选择。
Linux 的 rename 命令有两个版本,一个是 c 语言版本的,一个是 perl 语言版本的,判断方法:输入 man rename
C 语言版本1rename 原字符串 新字符串 文件名
示例:
123rename 第三阶段 3 *# * 代表所有字符# ?代表单个字符
Perl 语言版本1rename 's/原字符串/新字符串/' 文件名
示例:
1234rename 's/第三阶段/3/' *# 把所有的文件名都以 txt 结尾rename "s/$/.txt/" *
sedLinux 下批量替换文件内 ...
CentOS 编译安装 gcc
gcc 是 Linux 系统的核心模块,同时,它可以编译使用 C,C++ 等语言编写的源代码。但是,在某些系统上自带的 gcc 版本过低或过高,导致一些软件无法正常安装和运行。本篇介绍在 CentOS 上如何编译安装指定版本的 gcc,默认在 root 用户下运行命令。
下载特定版本的 gcc 源码下载 gcc 可以在下面的 官方网址 下载,里面有各版本的 gcc 源码。或者使用 Git 克隆最新版:
1git clone https://gcc.gnu.org/git/gcc.git
如果官网下载慢,可以采用如下的镜像网址:
中国科技大学镜像网址
华中科技大学镜像网址
南京大学镜像网址
清华大学镜像网址
我这里下载的测试版本是 gcc-10.1.0,
1234wget -c http://ftp.gnu.org/gnu/gcc/gcc-10.1.0/gcc-10.1.0.tar.gz# 或者下载到指定目录wget -c http://ftp.gnu.org/gnu/gcc/gcc-10.1.0/gcc-10.1.0.tar.gz -p /root/.tar -xzvf gcc ...
cmake make gcc 的关系
在运行 C 程序时,我们都知道需要通过 gcc(GNU Compiler Collection,可以编译C、C++、Objective-C、Fortran、Java等编写的源代码) 将源代码编译为二进制文件,才能够执行。
gcc简单代码使用 gcc 可直接编译。具体过程如下:
12## 创建源文件vim hello.c
编写源代码:
1234567// 写入如下C代码#include<stdio.h>int main() { printf("hello 20210203 \n"); return 0;}
编译源代码为机器码:
12345678# 使用gcc编译gcc hello.c -o hello# 也可以将-o和hello写在一起gcc hello.c -ohello# 如果有多个源文件,可以这样编译gcc hello1.c hello2.c -o hello# 运行的结果./hello
这是一个小程序,可以使用该方法编译。但是,当在大型程序开发时,这种方法就显得笨拙。这时常使用 make 和 cmake 来 ...
解决SSH连接CentOS速度慢的问题
使用 SSH 登录 CentOS 时,总是比登录 Ubuntu 等系统慢。解决方法就是如下设置。本文以 CentOS 7 为例。
修改 SSH 配置
登录系统
打开 SSH 配置文件:
1vi /etc/ssh/sshd_config
修改 UseDNS 为如下
1UseDNS no
修改 GSSAPIAuthentication 为如下
1GSSAPIAuthentication no
重启 SSHD 服务
123service sshd restart# 或者systemctl restart sshd
参考链接
centos ssh连接登录慢解决
centos7解决ssh登录速度慢的问题