Hide

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again.

Delete that bloated snippets file you've been using and share your personal repository with the world. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.


Get involved!

You can sign-in using OpenID credentials, or register a traditional username and password.

First-time OpenID users will be automatically assigned a username which can be changed after signing in.

Universal configuration monitoring and system of record for IT.
Hide

Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for:

Hide

News

May 19, 2015 - A Look At The New Commandlinefu
I've put together a short writeup on what kind of newness you can expect from the next iteration of clfu. Check it out here.
March 2, 2015 - New Management
I'm Jon, I'll be maintaining and improving clfu. Thanks to David for building such a great resource!
Hide

Top Tags

Hide

Functions

Psst. Open beta.

Wow, didn't really expect you to read this far down. The latest iteration of the site is in open beta. It's a gentle open beta-- not in prime-time just yet. It's being hosted over at UpGuard (link) and you are more than welcome to give it a shot. Couple things:

  • » The open beta is running a copy of the database that will not carry over to the final version. Don't post anything you don't mind losing.
  • » If you wish to use your user account, you will probably need to reset your password.
Your feedback is appreciated via the form on the beta page. Thanks! -Jon & CLFU Team

Duplicating service runlevel configurations from one server to another.

Terminal - Duplicating service runlevel configurations from one server to another.
chkconfig --list | fgrep :on | sed -e 's/\(^.*\)*0:off/\1:/g' -e 's/\(.\):on/\1/g' -e 's/.:off//g' | tr -d [:blank:] | awk -F: '{print$2,$1}' | ssh host 'cat > foo'
2009-05-13 21:17:39
User: catawampus
3
Duplicating service runlevel configurations from one server to another.

And then to complete the task:

Go to target host;

ssh host

Turn everything off:

for i in `chkconfig --list | fgrep :on | awk '{print $1}'` ; do chkconfig --level 12345 $i off; done

Create duplicate config:

while read line; do chkconfig --level $line on; done < foo

Alternatives

There is 1 alternative - vote for the best!

Terminal - Alternatives

Know a better way?

If you can do better, submit your command here.

What others think

I tried to include the one line version of this in the initial post but it kept being removed, so here it is:

chkconfig --list | fgrep :on | sed -e 's/\(^.*\)*0:off/\1:/g' -e 's/\(.\):on/\1/g' -e 's/.:off//g' | tr -d [:blank:] | awk -F: '{print$2,$1}' | ssh host 'cat > foo; for i in `chkconfig --list | fgrep :on | cut -f1` ; do chkconfig --level 12345 $i off; done; while read line; do chkconfig --level $line on; done < foo'
Comment by catawampus 395 weeks and 2 days ago

Argh! OK, so it's clever, but *WAY* too complicated.

Runlevels are controlled by symbolic links in the /etc/rc[0-6].d directories.

To copy the configuration to another machine you just have to reproduce these links.

The smartest way to do this, is to use rsync:

rsync -av --delete /etc/rc* remote_host:etc/

-a = archive

-v = verbose

--delete = remove unwanted files at the destination

Comment by flatcap 395 weeks and 2 days ago

Sorry, slight typo (missing a leading /)

rsync -av --delete /etc/rc* remote_host:/etc/
Comment by flatcap 395 weeks and 2 days ago

I like the rsync but would be concerned about deleting the original initscripts in /etc/rc.d/init.d/ that remain in place when the service is disabled with chkconfig.

Comment by catawampus 395 weeks and 2 days ago

So something like the following would do what I want (thank you!):

rsync -av --delete /etc/rc.d/rc[0-6].d host:/etc/
Comment by catawampus 395 weeks and 2 days ago

I do believe there is a potential problem with using rsync. It assumes you know the root password and in many environments you may not. My initial suggestion is easily handled using sudo but you may also be able to use sudo with rsync. It depends on the server configurations and whether it uses sudo timeout's across successive ssh logins. Then the following might work for you:

"Prime" sudo without echoing your password to the screen:

stty -echo; ssh host 'sudo -v'; stty echo

Run the rsync using sudo without the need for psuedo terminal:

sudo rsync -av --delete --rsync-path='sudo rsync' -e ssh /etc/rc.d/rc[0-6].d [email protected]:/etc/
Comment by catawampus 395 weeks and 2 days ago

Doh! I stole that stty -echo line from some site while researching issues with rsync, sudo and psuedo terminals but should have replaced it with:

ssh -t 'sudo -v'
Comment by catawampus 395 weeks and 2 days ago

Your point of view

You must be signed in to comment.