三、用户管理

用户和用户组操作命令

ld

Finger

Pwck

检查/etc/passwd配置文件内的信息与实际主文件夹是否存在,还可比较/etc/passwd和/etc/shadow的信息是否一致,另外如果/etc/passwd中的数据字段错误也会提示。

Grpck

和pwck功能相近,这个是检查用户组的。

Groups

newgrp

useradd

usermod

usermod

用于修改用户的基本信息

补充说明

usermod命令 用于修改用户的基本信息。usermod 命令不允许你改变正在线上的使用者帐号名称。当 usermod 命令用来改变user id,必须确认这名user没在电脑上执行任何程序。你需手动更改使用者的 crontab 档。也需手动更改使用者的 at 工作档。采用 NIS server 须在server上更动相关的NIS设定。

语法

usermod(选项)(参数)

选项

-c<备注>:修改用户帐号的备注文字;

-d<登入目录>:修改用户登入时的目录,只是修改/etc/passwd中用户的家目录配置信息,不会自动创建新的家目录,通常和-m一起使用;

-m<移动用户家目录>:移动用户家目录到新的位置,不能单独使用,一般与-d一起使用。

-e<有效期限>:修改帐号的有效期限;

-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;

-g<群组>:修改用户所属的群组;

-G<群组>;修改用户所属的附加群组;

-l<帐号名称>:修改用户帐号名称;

-L:锁定用户密码,使密码无效;

-s:修改用户登入后所使用的shell;

-u:修改用户ID;

-U:解除密码锁定。

参数

登录名:指定要修改信息的用户登录名。

实例

将 newuser2 添加到组 staff 中:

usermod -G staff newuser2

修改newuser的用户名为newuser1:

usermod -l newuser1 newuser

锁定账号newuser1:

usermod -L newuser1

解除对newuser1的锁定:

usermod -U newuser1

增加用户到用户组中:

apk add shadow # 安装 shadow 包, usermod 命令包含在 usermod 中

usermod -aG group user # 添加用户到用户组中

-a 参数表示附加,只和 -G 参数一同使用,表示将用户增加到组中。

修改用户家目录:

[root@node-1 ~]# useradd lutixiaya

[root@node-1 ~]# ls /home

lutixiaya

[root@node-1 ~]# usermod -md /data/new_home lutixiaya

[root@node-1 ~]# ls /home/

[root@node-1 ~]# ls /data/

new_home

userdel

用于删除给定的用户以及与用户相关的文件

补充说明

userdel命令 用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。

语法

userdel(选项)(参数)

选项

-f:强制删除用户,即使用户当前已登录;

-r:删除用户的同时,删除与用户相关的所有文件。

参数

用户名:要删除的用户名。

实例

userdel命令很简单,比如我们现在有个用户linuxde,其家目录位于/var目录中,现在我们来删除这个用户:

userdel linuxde # 删除用户linuxde,但不删除其家目录及文件;

userdel -r linuxde # 删除用户linuxde,其家目录及文件一并删除;

请不要轻易用-r选项;他会删除用户的同时删除用户所有的文件和目录,切记如果用户目录下有重要的文件,在删除前请备份。

其实也有最简单的办法,但这种办法有点不安全,也就是直接在/etc/passwd中删除您想要删除用户的记录;但最好不要这样做,/etc/passwd是极为重要的文件,可能您一不小心会操作失误。

groupadd

groupmod

groupdel 都是用来删除用户组的

groupmod

更改群组识别码或名称

补充说明

groupmod命令 更改群组识别码或名称。需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。

语法

groupmod(选项)(参数)

选项

-g<群组识别码>:设置欲使用的群组识别码;

-o:重复使用群组识别码;

-n<新群组名称>:设置欲使用的群组名称。

参数

组名:指定要修改的工作的组名

groupadd

用于创建一个新的工作组

补充说明

groupadd命令 用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。

语法

groupadd(选项)(参数)

选项

-g:指定新建工作组的id;

-r:创建系统工作组,系统工作组的组ID小于500;

-K:覆盖配置文件“/ect/login.defs”;

-o:允许添加组ID号不唯一的工作组。

参数

组名:指定新建工作组的组名。

实例

建立一个新组,并设置组ID加入系统:

groupadd -g 344 jsdigname

此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。

groupdel

用于删除指定的工作组

补充说明

groupdel命令 用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

语法

groupdel(参数)

参数

组:要删除的工作组名。

实例

groupadd damon //创建damon工作组

groupdel damon //删除这个工作组

passwd

用于让用户可以更改自己的密码

补充说明

passwd命令 用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

语法

passwd(选项)(参数)

选项

-d:删除密码,仅有系统管理者才能使用;

-f:强制执行;

-k:设置只有在密码过期失效后,方能更新;

-l:锁住密码;

-s:列出密码的相关信息,仅有系统管理者才能使用;

-u:解开已上锁的帐号。

参数

用户名:需要设置密码的用户名。

知识扩展

与用户、组账户信息相关的文件

存放用户信息:

/etc/passwd

/etc/shadow

存放组信息:

/etc/group

/etc/gshadow

用户信息文件分析(每项用:隔开)

例如:jack:X:503:504:::/home/jack/:/bin/bash

jack  # 用户名

X  # 口令、密码

503  # 用户id(0代表root、普通新建用户从500开始)

504  # 所在组

:  # 描述

/home/jack/  # 用户主目录

/bin/bash  # 用户缺省Shell

组信息文件分析

例如:jack:$!$:???:13801:0:99999:7:::

jack  # 组名

$!$  # 被加密的口令

13801  # 创建日期与今天相隔的天数

0  # 口令最短位数

99999  # 用户口令

7  # 到7天时提醒

*  # 禁用天数

*  # 过期天数

实例

如果是普通用户执行passwd只能修改自己的密码。如果新建用户后,要为新用户创建密码,则用passwd用户名,注意要以root用户的权限来创建。

[root@localhost ~]# passwd linuxde # 更改或创建linuxde用户的密码;

Changing password for user linuxde.

New UNIX password: # 请输入新密码;

Retype new UNIX password: # 再输入一次;

passwd: all authentication tokens updated successfully. # 成功;

普通用户如果想更改自己的密码,直接运行passwd即可,比如当前操作的用户是linuxde。

[linuxde@localhost ~]$ passwd

Changing password for user linuxde. # 更改linuxde用户的密码;

(current) UNIX password: # 请输入当前密码;

New UNIX password: # 请输入新密码;

Retype new UNIX password: # 确认新密码;

passwd: all authentication tokens updated successfully. # 更改成功;

比如我们让某个用户不能修改密码,可以用-l选项来锁定:

[root@localhost ~]# passwd -l linuxde # 锁定用户linuxde不能更改密码;

Locking password for user linuxde.

passwd: Success # 锁定成功;

[linuxde@localhost ~]# su linuxde # 通过su切换到linuxde用户;

[linuxde@localhost ~]$ passwd # linuxde来更改密码;

Changing password for user linuxde.

Changing password for linuxde

(current) UNIX password: # 输入linuxde的当前密码;

passwd: Authentication token manipulation error # 失败,不能更改密码;

再来一例:

[root@localhost ~]# passwd -d linuxde # 清除linuxde用户密码;

Removing password for user linuxde.

passwd: Success # 清除成功;

[root@localhost ~]# passwd -S linuxde # 查询linuxde用户密码状态;

Empty password. # 空密码,也就是没有密码;

注意:当我们清除一个用户的密码时,登录时就无需密码,这一点要加以注意。

Chage 修改用户密码有效期限的命令

修改帐号和密码的有效期限

补充说明

chage命令 是用来修改帐号和密码的有效期限。

语法

chage [选项] 用户名

选项

-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。

-M:密码保持有效的最大天数。

-w:用户密码到期前,提前收到警告信息的天数。

-E:帐号到期的日期。过了这天,此帐号将不可用。

-d:上一次更改的日期。

-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。

-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

实例

可以编辑/etc/login.defs来设定几个参数,以后设置口令默认就按照参数设定为准:

PASS_MAX_DAYS 99999

PASS_MIN_DAYS 0

PASS_MIN_LEN 5

PASS_WARN_AGE 7

当然在/etc/default/useradd可以找到如下2个参数进行设置:

useradd defaults file

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

通过修改配置文件,能对之后新建用户起作用,而目前系统已经存在的用户,则直接用chage来配置。

我的服务器root帐户密码策略信息如下:

[root@linuxde ~]# chage -l root

最近一次密码修改时间 : 3月 12, 2013

密码过期时间 :从不

密码失效时间 :从不

帐户过期时间 :从不

两次改变密码之间相距的最小天数 :0

两次改变密码之间相距的最大天数 :99999

在密码过期之前警告的天数 :7

我可以通过如下命令修改我的密码过期时间:

[root@linuxde ~]# chage -M 60 root

[root@linuxde ~]# chage -l root

最近一次密码修改时间 : 3月 12, 2013

密码过期时间 : 5月 11, 2013

密码失效时间 :从不

帐户过期时间 :从不

两次改变密码之间相距的最小天数 :0

两次改变密码之间相距的最大天数 :60

在密码过期之前警告的天数 :9

然后通过如下命令设置密码失效时间:

[root@linuxde ~]# chage -I 5 root

[root@linuxde ~]# chage -l root

最近一次密码修改时间 : 3月 12, 2013

密码过期时间 : 5月 11, 2013

密码失效时间 : 5月 16, 2013

帐户过期时间 :从不

两次改变密码之间相距的最小天数 :0

两次改变密码之间相距的最大天数 :60

在密码过期之前警告的天数 :9

从上述命令可以看到,在密码过期后5天,密码自动失效,这个用户将无法登陆系统了。

id

打印真实以及有效的用户和所在组的信息

概要

id [OPTION]... [USER]...

主要用途

没有选项时,打印指定用户ID信息。

选项

-a 兼容性选项,没有实际作用。

-Z, --context 只打印进程的安全上下文。

-g, --group 只打印有效的组ID。

-G, --groups 打印全部组ID。

-u, --user 只打印有效的用户ID。

-z, --zero 使用空字符代替默认的空格来分隔条目。

--help 显示帮助信息并退出。

--version 显示版本信息并退出。

只有在使用 -u -g -G 选项中一到多个时,以下选项可以使用:

-n, --name 打印名称而不是数字。

-r, --real 打印真实ID而不是有效ID。

参数

user(可选):可以为一到多个,默认为当前用户。

返回值

返回0表示成功,返回非0值表示失败。

例子

[root@localhost ~]# id

uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

解释:用户root的UID号码 = 0,GID号码 = 0。用户root是下面组的成员:

root组GID号是:0

bin组GID号是:1

daemon组GID号是:2

sys组GID号是:3

adm组GID号是:4

disk组GID号是:6

wheel组GID号是:10

打印用户名、UID 和该用户所属的所有组,要这么做,我们可以使用 -a 选项:

[root@localhost ~]# id -a

uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

输出所有不同的组ID ,有效的,真实的和补充的,我们可以使用 -G 选项来实现:

[root@localhost ~]# id -G

0 1 2 3 4 6 10

结果只会显示GID号。你可以和/etc/group文件比较。下面是/etc/group文件的示例内容:

只输出有效的组ID,通过使用 -g 选项来只输出有效组ID:

[root@localhost ~]# id -g

0

输出特定用户信息,我们可以输出特定的用户信息相关的UID和GID。只需要在id命令后跟上用户名:

[root@localhost ~]# id www

uid=500(www) gid=500(www) groups=500(www)

注意

该命令可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID;一些程序可能需要UID/GID来运行。id 使我们更加容易地找出用户的UID以及GID,而不必在 /etc/group 文件中搜寻。

该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 id,info coreutils 'id invocation'。

finger

用于查找并显示用户信息

补充说明

finger命令 用于查找并显示用户信息。包括本地与远端主机的用户皆可,帐号名称没有大小写的差别。单独执行finger指令,它会显示本地主机现在所有的用户的登陆信息,包括帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话。

语法

finger(选项)(参数)

选项

-l:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,还有计划文件和方案文件内容;

-m:排除查找用户的真实姓名;

-s:列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话;

-p:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容。

不指定finger的选项如果提供操作者的话,缺省设为-l输出风格,否则为-s风格,注意在两种格式中,如果信息不足,都有一些域可能丢失,如果没有指定参数finger会为当前登录的每个用户打印一个条目。

参数

用户名:指定要查询信息的用户。

实例

在计算机上使用finger:

[root@localhost root]# finger

login Name Tty Idle Login time Office Office Phone

root root tty1 2 Dec 18 13

root root pts/0 1 Dec 18 13

root root *pts/1 Dec 18 13

注意:如果没有安装,可以使用 sudo yum install finger -y 针对于老版本

如果要查询远程机上的用户信息,需要在用户名后面接@主机名,采用用户名@主机名的格式,不过要查询的网络主机需要运行finger守护进程的支持。

查询登录主机的用户工具:w 、who、users

Groups 用户所归属的用户组查询

groups

打印指定用户所在组的名称。

概要

groups [OPTION]... [username]...

主要用途

打印指定用户所在组的名称。

选项

--help 显示帮助信息并退出。

--version 显示版本信息并退出。

参数

username(可选):可以是一到多个,不提供时默认为当前用户。

返回值

返回0表示成功,返回非0值表示失败。

例子

显示linux用户所属的组

[root@localhost ~]# groups linux

linux : linux adm dialout cdrom plugdev lpadmin admin sambashare

注意

该命令等价于 id -Gn。

每个用户属于/etc/passwd中指定的一个组和在/etc/group中指定的其他组。

该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 groups,info coreutils 'groups invocation'。

相关配置文件

/etc/passwd

/etc/shadow

/etc/gshadow

/etc/group

Linux 用户密码策略

在Linux系统中,用户密码策略主要涉及以下几个方面:

  1. 密码复杂度要求:

    • 最小长度:通过修改/etc/login.defs文件中的PASS_MIN_LEN参数设定密码的最小长度。
    • 复杂性规则:可以使用PAM模块(如pam_cracklib)来强制执行密码复杂度策略,比如必须包含大写字母、小写字母、数字和特殊字符等。
  2. 密码过期策略:

    • 密码有效期:通过编辑 /etc/login.defs 中的 PASS_MAX_DAYSPASS_MIN_DAYS 参数设置密码的有效期范围,以及 PASS_WARN_AGE 设置提前多少天提醒用户更改密码。
    • 密码历史:使用PAM模块如 pam_unix.so 的 remember=N 选项限制用户不能重复使用最近N次的密码。
  3. 错误尝试锁定:

    • 登录失败次数:通过配置/etc/pam.d/system-auth或其他与认证相关的PAM配置文件,启用pam_tally2pam_faillock模块限制连续错误登录尝试次数,并在达到阈值后锁定账号一段时间。
  4. 自动解锁时间:

    • 锁定账户后,可以通过配置相应的PAM模块设置自动解锁时间。
  5. 密码到期前警告:

    • 系统可以根据需要在用户登录时显示密码即将过期的提示信息。

例如,在Red Hat Enterprise Linux (RHEL)系列系统中,可以在/etc/security/pwquality.conf配置文件中调整密码质量控制,而在Ubuntu系统中,则通常在/etc/pam.d/common-password等PAM配置文件中添加或修改行以启用密码策略模块。

具体配置命令示例可能包括:

# 在/etc/login.defs设置密码最小长度
echo "PASS_MIN_LEN 8" >> /etc/login.defs # 使用pam_cracklib加强密码复杂度
sed -i '/password.*required/s/$/ pam_cracklib.so minlen=8 difok=3 retry=3/' /etc/pam.d/system-auth # 设置密码有效期
echo "PASS_MAX_DAYS 90" >> /etc/login.defs
echo "PASS_MIN_DAYS 7" >> /etc/login.defs
echo "PASS_WARN_AGE 7" >> /etc/login.defs # 使用pam_tally2限制登录尝试次数
auth required pam_tally2.so deny=5 onerr=fail unlock_time=604800 # 对于RHEL/CentOS 7及更高版本,使用pam_faillock模块进行账户锁定
auth [default=die] pam_faillock.so authfail deny=5 unlock_time=604800 even_deny_root root_unlock_time=300
account required pam_faillock.so # 配置密码到期警告
chage -m 7 -W 7 username # 为指定用户设置最小和最大密码更改期限以及警告期

ACL权限设置

ACL是access control list 的缩写,主要用于在提供传统的owner、group 、others的read、write、execute权限之外进行细部权限设置。

启动ACL

让/目录支持ACL:

mount -o remount,acl /

Mount |grep / // 查看是否有挂载

开机启动ACL:

将要启动ACL的分区写入/etc/fstab中:

vi /etc/fstab

/dev/sda5 / ext3 default,acl 1 2

ACL相关命令

ACL(Access Control List)是Linux系统中用于设置文件或目录权限的一种机制,可以实现对不同用户或用户组设置不同的访问权限。与传统的UGO(User、Group、Others)权限管理相比,ACL提供了更细粒度的权限控制。

与ACL相关的命令主要有两个:setfacl和getfacl。

setfacl命令:用于设置ACL权限。其基本语法如下:

bash复制代码

setfacl [选项] 文件名

其中,常用的选项包括:

复制代码

* -m:设置ACL权限。

* -x:删除指定的ACL权限。

* -b:删除所有的ACL权限。

* -d:设置默认ACL权限。

* -k:删除默认ACL权限。

* -R:递归设置ACL权限。例如,要给文件file的用户username设置读、写、执行权限,可以使用以下命令:

bash复制代码

setfacl -m u:username:rwx file

getfacl命令:用于查看ACL权限。其基本语法如下:

bash复制代码

getfacl 文件名

执行该命令后,将显示指定文件或目录的ACL权限信息。例如,要查看文件file的ACL权限,可以执行以下命令:

bash复制代码

getfacl file

此外,需要注意的是,ACL权限的设置和查看都需要在支持ACL的文件系统上进行。在大多数Linux发行版中,ext4文件系统默认支持ACL。在使用ACL时,还需要注意mask值的作用。mask值用于指定最大有效权限,它决定了用户或用户组实际获得的权限。当用户或用户组被赋予ACL权限时,其实际权限将是ACL权限与mask值进行“与”运算的结果。这有助于防止给用户或用户组赋予过高的权限,提供了权限的双重保证。

su

用于切换当前用户身份到其他用户身份

补充说明

su命令 用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。

语法

su(选项)(参数)

选项

-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;

-f或——fast:适用于csh与tsch,使shell不用去读取启动文件;

-l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;

-m,-p或--preserve-environment:变更身份时,不要变更环境变量;

-s或--shell=:指定要执行的shell;

--help:显示帮助;

--version;显示版本信息。

参数

用户:指定要切换身份的目标用户。

实例

变更帐号为root并在执行ls指令后退出变回原使用者:

su -c ls root

变更帐号为root并传入-f选项给新执行的shell:

su root -f

变更帐号为test并改变工作目录至test的家目录:

su -test

实例二:

由于Ubuntu只能以普通用户登录,登录进去才可以使用su 切换为root

查询用户命令

W

可显示开机多久,当前登录的所有用户,平均负载

Who

显示当前登录的所有用户

Last

显示每个用户最后的登录时间

Lastlog

显示每个用户最后的登录时间

大年学习linux(第三节---用户管理)的更多相关文章

  1. linux上的用户管理

    作为一个专业的服务器发行版,CentOS上存在着n多个用户,作为一个专业的运维工程师,linux的用户管理和用户组的管理是做为一个SA必不可少的工作. 下面我们就先来谈谈linux中的用户管理: us ...

  2. Linux常用命令--用户管理,文件权限,打包命令等

    幕布链接 Linux常用命令--用户管理,文件权限,打包命令等

  3. 安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)

    VM tools:方便我们虚拟机和宿主机之间复制数据或移动文件等 安装VMtools 1.菜单栏-虚拟机-安装VM tools 将其选中 2.进入系统,在桌面位置里面有VM tools的光盘,双击进入 ...

  4. Linux命令整理,用户管理,用户组管理,系统管理,目录管理常用命令

    知识点梳理 Linux课堂笔记 学习目标 能够知道什么是Linux系统以及它的应用场景 能够独立完成安装VMware虚拟机和网络配置 能够独立完成安装CentOS以及远程终端SecureCRT 能够熟 ...

  5. Linux 命令整理 —— 用户管理

    Linux用户管理以读.写.执行动作为权限,以用户组为单位,限制用户行为.对于文件的的操作,可以限制读.写.执行中的哪一种,也可以限制文件所有者.组用户.组外用户相应的权限. 所以,要建立用户,最好先 ...

  6. linux入门之用户管理

    用户管理 添加用户 以root用户执行 adduser  或 useradd [new_account] -u  UID   -d 指定家目录 -g GID 指定一个基本组ID   -G指定一个附加组 ...

  7. Linux系列教程(七)——Linux帮助和用户管理命令

    上篇博客我们介绍了Linux文件搜索命令,其中find是用的最多的也是功能最强大的文件或目录搜索命令,和另一个搜索命令locate的区别是,find命令是全盘搜索,刚创建的文件也能搜索的到,而loca ...

  8. linux下主机用户管理(完整详情)

    (一) 创建新用户 useradd命令(也可以使用adduser)用来创建新的用户帐号,其命令格式如下: 表4-19 useradd命令常用选项 常用现象意 义 -d设置新用户的登陆目录 -e设置新用 ...

  9. vue学习笔记—bootstrap+vue用户管理

    vue,读音view,简单易用的前端框架.特点如下: 1.一个mvvm的前端框架,内部做好了html中dom对象和后台用js语言定义的变量的双向绑定 2.中国人尤雨溪维护的个人项目,中文资料多,和go ...

  10. 学习Linux下的文件目录管理

                    文件目录管理 一.认识Linux文件系统的架构 在Linux中是没有盘符这个概念的,即Linux中没有C盘和D盘的分盘.那么我们直接通过对目录的操作实现对磁盘的读写,因 ...

随机推荐

  1. ElasticSearch7.3学习(三十三)----kibana之Grok Dubugger

    在ElasticSearch7.3学习(三十二)----logstash三大插件(input.filter.output)及其综合示例中学到logstash使用filter插件进行数据清洗,grok是 ...

  2. 使用SecureCRT的按钮实现快速查询

    背景:有这么个日常运维场景,客户因管理需求,不允许在服务器上部署任何自动化的脚本,需要人工登录到机器上查询ASM磁盘组的使用率情况,有上百套环境. 使用的工具是SecureCRT,如何提升一些效率呢? ...

  3. 让python程序一直在window后台进程运行

    一.让python程序后台运行 1.创建一个app.py文件,如 while 1: print(123)2.创建一个set_py.bat文件,里面写 python app.py3.创建一个start_ ...

  4. [Java][并发编程]AQS以及其相关同步器的源码解析

    AQS以及其相关同步器的源码解析 概念 AQS(AbstractQueuedSynchronizer)抽象的队列同步器.是用来构建锁或者其他同步器组件的重量级基础框架以及整个JUC体系的基石.通过内置 ...

  5. 从零开始手写 redis(三)内存数据重启后如何不丢失?

    前言 我们在 从零手写 cache 框架(一)实现固定大小的缓存 中已经初步实现了我们的 cache. 我们在 从零手写 cache 框架(一)实现过期特性 中实现了 key 的过期特性. 本节,让我 ...

  6. Ubuntu20.04 PyCharm不能输入中文的解决办法

    在2020.3之后的PyCharm, 无法输入中文, 我使用的是ibus, 据网上搜索结果看, fctix也一样有问题. 在网上查到的, 修改环境变量的方式无效. 实际的原因在于JetBrain使用的 ...

  7. IPNS和DNSLink的使用说明

    IPNS和DNSLink的使用说明 IPNS说明 IPNS全称InterPlanetary Name System,就是IPFS下的一个名称解析系统,类似于互联网的DNS,但是与DNS不同的是,IPN ...

  8. java ArrayList排序不区分大小写

    最近在做代码勇士codewars的题目,顺便记录一下自己的解决方案. 1.排序类 1.1 不使用预定义比较器 package com.dylan.practice; import java.util. ...

  9. Oracle11gr2新增APPEND_VALUES提示

    在11.2中,Oracle新增了APPEND_VALUES提示,使得INSERT INTO VALUES语句也可以使用直接路径插入. 例子很简单: SQL> SELECT * FROM V$VE ...

  10. SpringBoot整合ip2region实现使用ip监控用户访问地域来源

    举个栗子 最*,多*台都上线了展示*期发帖所在地功能,比如抖音.微博.百度,像下面那样: 那么这个功能都是如何实现的呢? 一般有两个方法:GPS 定位的信息和用户 IP 地址. 由于每个手机都不一定会 ...