301
5
submitted 3 years ago* (last edited 3 years ago) by PlutoParty@programming.dev to c/linux4noobs@programming.dev

What is tmux?

tmux, short for terminal multiplexer, is a command-line tool that allows you to split your terminal into multiple panes, create and manage multiple terminal sessions, and attach and detach to them. It allows you to create multiple terminals in one window.

What's the point?

The feature I appreciate most is the attach and detach functionality. I manage a multitude of servers running an array of services and tasks. There are instances where my internet connection acts up while I'm working remotely and I get disconnected. Losing my shell environment and any ongoing processes due to a hiccup in my internet is frustrating and can be time consuming.

Working within a tmux session allows me to reconnect, attach to my session, and seamlessly pick up right where I left off without sacrificing any progress. Another nice thing is that I can effortlessly move to another workstation and resume my session on a remote machine there. I find it particularly useful to detach and send certain processes to the background. While testing and developing, I often choose this approach in lieu of setting up a systemd service. What many people will do is create a script that launches a service in a tmux session, which allows for attaching to it at some point later to either interact or view any output from what is running easily.

If it is hard to conceptualize the value of this, you can think of it as having many terminal windows open that you can minimize and come back to later.


Using tmux

There are a lot of tmux features and shortcut keys, but I'm going to cover the ones I regularly use that fit my needs. As with most things in Linux, there are several ways to accomplish the same task. Here is a handy cheatsheet of tmux commands. Try not to be overwhelmed with the amount of shortcuts. I certainly don't have them all memorized. If you're like me, you'll have just a few you regularly use and it'll become muscle memory after a short time.

Installing

Not all systems will have tmux installed by default, but it is very likely in the package manager as tmux. sudo dnf install tmux, sudo apt install tmux, or sudo pacman -S tmux will likely get the majority of people there, depending on which system and package manage is in use.


New Session

The most simple way to start a tmux session is to simply run tmux. This will create the virtual session with a generic name. I prefer to name my sessions so I can easily identify them if I get several sessions going. This makes it easy to identify what is what. I start my sessions with tmux new-session -s sessionname


Detach Session

To detach from this session, you press Ctrl+b then d . That session is now running in the background and whatever process you were running, if any, are still running. You'd be free to end the ssh connection if that is how you are connected and that session will still remain alive.


Listing, Attaching and Switching Sessions

To list your running sessions while not in a tmux session, you can run tmux ls. To attach to one of these sessions by name, you can run tmux a -t sessionname. What I often do out of laziness after connecting to a machine is simply run tmux a. This will join the last session you were attached to or sometimes it feels like it just selects a random one. From there, pressing Ctrl+b, s will open a list of all the running sessions you can easily select and jump to with the arrow keys and pressing enter. This is my normal workflow, but again, there are several ways to accomplish the same thing and even several variants of the commands, as can be seen on the cheatsheet link above.


Killing a Session

The usual way that I kill a session is to just run exit while inside of the one I wish to end. As noted on the cheatsheet, there are other ways to kill it without actually entering it.


Scrolling

The only other common feature I use is scrolling. While inside a session, you lose the ability to easily scroll back as you normally would in a terminal emulator such as terminator or konsole. To scroll back up you use Ctrl+b [. You can then use the arrow keys to scroll above what is presently on the screen. Ctrl+c gets you out of scrolling mode. Be careful to only Ctrl+c once, as you might unintentionally kill a running process if there is one going.


Conclusion

This is how I usually use tmux. It'll be useful to look at the cheatsheet and play around with some of the other features you might find handy, such as creating panes and windows.

Another popular multiplexer that accomplishes a lot of these same tasks is screen. screen is older but many still find it just as useful.


I'm curious how other people utilize tmux. Are there any lesser known tips or tricks that I didn't cover or may not know about? Better methods that'd make my workflow as described above easier? Does anyone have a strong opinion on using screen instead of tmux? Any considerations or dangers that people should be aware of when using a multiplexer? If so, let us know!

302
5
submitted 3 years ago* (last edited 3 years ago) by PlutoParty@programming.dev to c/linux4noobs@programming.dev

I thought it might be nice to start a daily tips & tricks post to stimulate some conversation while offering up fundamental knowledge to those who might appreciate it. And it gives me something to get my brain going with my morning coffee. I intend for them to be very brief (this turned out to be a lie) and serve as a starting point for anyone who may wish to dig deeper through their own research or discussion.

Feel free to add any additional thoughts or questions in the comments. Certainly please correct me if I make any mistakes. If there are any topic requests for future tips & tricks, throw them out there or if you have one of your own you'd like to share, please post it. I'll try to post and/or feature one daily. If I don't have time to write my own and no one else has offered anything up, I'll find something interesting elsewhere to feature.


File Permissions and Ownership

Understanding permissions and ownership for files and directories gives you granular control over who can access and modify your files. Understanding this is especially essential for security and privacy. I'll be working in the terminal to explain:

View Permissions

To view permissions, run ls -l. This outputs a long listing of the files in your current directory. The information in the far left column are the permissions. It should be noted that everything in Linux is treated as a file, including directories. This isn't technically true, but you can think of it this way for our purposes here.

drwxr-xr-x is an example of permissions for one of my directories I'll refer to as funny_memes.

Permission Symbols
  • d = directory
  • r = read
  • w = write
  • x = execute
  • - = not set (or regular file)

For our purposes, you can ignore the first character. Most commonly you'll see 'd' or '-' to denote it being a directory or a regular file. There are also others you may wish to explore (symlinks, sockets, etc).

The 3 groups we are interested in each contain 3 characters. That is, 3 groups of 3. (I know this is confusing, but "group" is one of the groups of 3.) The order of these groups are 'user', 'group', and 'others'. That order is specific and important to remember. To use my funny_memes example, my current permissions are set as follows:

~$ ls -l

drwxr-xr-x. 1 PlutoParty PlutoParty 0 Aug 9 04:08 funny_memes

Type User Group Others
d rwx r-x r-x

This means the user who owns this directory can read, write, and execute. The group assigned to this directory can only read and execute. And all others can also only read and execute.

Ownership

In the ls -l output, the user and group assigned to the directory (or file) is displayed just after the permissions, in that order. In my example, PlutoParty is my user and PlutoParty is the group of the funny_memes directory.

Changing permissions

Octal Notation

Permissions can be changed with chmod using octal or symbolic notation. Understand the 3 bit octal notation is a little tricky to understand at first. In short, for each group (user, group, and others) the sum of the bits set determines the file permission. Individual permission bits are as follows:

  • 'r' (Read): 4
  • 'w' (Write): 2
  • 'x' (Execute): 1

If I wanted to give execute and read permission only to a user, group, or to others, for example, that permission value would be 5. (1 + 4). Full permissions would be 7. Read and write only would be 6. This works because every combination is a unique sum.

Here is a cheat sheet of all the combinations for reference:

Octal Value Permissions
0 No permissions
1 Execute only
2 Write only
3 Write and execute
4 Read only
5 Read and execute
6 Read and write
7 All permissions

The user, group, and others each get a value set. To change my funny_memes directory to full permissions for user, group, and others, I'd set that with chmod 777 funny_memes. Again, each number represents the sum of the permission bits you want assigned for user, group, and others, individually and in that order. 777 gives full permission to each of them because 4 (read) + 2 (write) + 1 (execute) = 7.

If I want to only allow the user full permissions (myself, in this case) and deny group and others anything, I'd run chmod 700 funny_memes. One more example is if I wanted to allow the user to read and write while only allowing the group and others to read, I'd use chmod 644 funny_memes

For many people, this is tricky to remember and understand at first. So, don't get frustrated. Write the individual permission bits down (read, write, and execute - not the full cheat sheet) from above and use it. You'll quickly have it memorized. It's really only 3 numbers to memorize. If you memorize those and remember that the order is user, group, others, you'll be a master at setting permissions with octal notation by the end of the day. In my opinion, it is actually easier than setting with symbolic notation, which we'll get familiar with now.

Symbolic Notation

  • u : owner of the file.
  • g : group associated with the file.
  • o : users who are not the owner or part of the group (others).
  • a : all users (or you can also use ugo combined).

Permissions:

  • r (read)
  • w (write)
  • x (execute)

Operators:

  • + : Adds a permission.
  • - : Removes a permission.
  • = : Sets the specified permissions and removes any others.

If we had a script called do_backup.sh and we want to set the permissions for the owner to execute, the group to read, and deny others from any permissions, we'd run chmod u+x,g+r,o- do_backup.sh. You can add or remove permissions individually in this manner. You can also combine u, g, or o as needed if they will have identical permissions. I think this is handy for 'fine tuning' any permissions, but it is a bit (hehe) of a pain to type it all out in comparison to 3 numbers that can quickly be added up in your head.

Changing Ownership and Conclusion

In order to change the owner and group of a file (which you may need elevated permissions to do depending on existing permissions), I'll leave you to explore the chown and chgrp commands. They are pretty straightforward, but do offer more advanced options you can read about in the man pages.

And that's really the basics of assigning permissions. To explore more, I'd suggest reading the man pages on the following commands:

  • man chmod
  • man chown
  • man chgrp

Those really interested may want to go on to read about creating and managing groups.

303
4

You can backup your config files before editing them, like this:

cp configbeingedited.conf configbeingedited.conf__orig_datestring

This way, when things break or don't function how you like, you can easily copy the original config file back into position, restoring the original functionality.

304
3
submitted 3 years ago* (last edited 3 years ago) by poplargrove@reddthat.com to c/linux4noobs@programming.dev

Hello, I'm trying to install ubuntu alongside windows 10 which I need for school.

I've tried two methods to get windows to use AHCI: 1) switch to safe mode, choose AHCI in the BIOS, log on to windows then turn safe mode off. 2) use the registry editor to get the AHCI drivers on, then choose AHCI in the BIOS.

In both cases windows fails to startup and thinks the hard disk is messed up. Are there any alternative methods? Anything I couldve gotten wrong? Unable to find leads so far.

I will next be trying to update some drivers, maybe that will work, but would love some guidance until I get back to trying.

EDIT: I wasn't able to figure out how to get my existing windows installation to work with AHCI. I also wasnt able to use a windows live usb to fix my isntallation. I had two partitions and ended up installing windows on the partition I had freed up for ubuntu, moving my files to it, then installing ubuntu on the partition windows initially was on.

I have no idea whats wrong with my computer because that wasnt all the trouble I faced lol, but now am happy I have ubuntu working.

305
3

I'm not a beginner anymore, but I'm much less interested in technical tinkering for its own sake than I used to be. These days I just want my computer to work properly without too much intervention from me.

I've been using Kubuntu for a number of years, but I'm also hearing increasing complaints about how Canonical is running things. I don't think I'm ready to switch to a new distro yet, but it wouldn't hurt to know what's out there.

Is Kubuntu still a good choice for an "it just works" KDE-based distro, or has it been surpassed?

306
4
Welcome to linux4noobs! (programming.dev)

Post your questions relating to the installation, configuration, & usage of Linux without fear of sounding dumb.

The only dumb question is the one you don't ask!

linux4noobs

4410 readers
1 users here now

linux4noobs


Noob Friendly, Expert Enabling

Whether you're a seasoned pro or the noobiest of noobs, you've found the right place for Linux support and information. With a dedication to supporting free and open source software, this community aims to ensure Linux fits your needs and works for you. From troubleshooting to tutorials, practical tips, news and more, all aspects of Linux are warmly welcomed. Join a community of like-minded enthusiasts and professionals driving Linux's ongoing evolution.


Seeking Support?

Community Rules

founded 3 years ago
MODERATORS